Mi Primer Programa con Pepper y CCS - Hotboards/CodeBank8 GitHub Wiki

Es este sencillo tutorial vamos a aprender a usar el compilador CCS con la tarjeta Pepper-8m, los pasos son muy sencillo, El principal objetivo es generar el archivo .hex y una vez generado lo podamos grabar usando el bootloader, tal como lo hacemos cuando trabajamos con MPLABX y C18.

NOTA: El objetivo del tutorial solo es el de mostrarte como cargar un código compilado con CCS en la tarjeta Pepper-8m usando el bootloader.

  • 1.- Procedemos a instalar el compilador PCWHD de CCS. Puedes descargar una versión demo desde el siguiente enlace: https://www.ccsinfo.com/ccsfreedemo.php. Al momento de escribir esta guía la versión actual es la 5.1

  • 2.- Una vez instalado el compilador, crearemos nuestro primer proyecto. Para ello abrimos el compilador y damos clic en el menu File -> New -> Project Wizard.

  • 3.- En la ventana emergente que aparece, en filename, damos un nombre a nuestro proyecto si no nos gusta el que da por default (main). Debemos elegir el directorio donde guardar nuestro proyecto, se recomienda crear una nueva carpeta para almacenar los archivos del proyecto

  • 4.- Una vez que se tenga el directorio y nombre, damos clic en Save para guardar nuestro proyecto y nos abrirá la siguiente ventana donde seleccionaremos el dispositivo a usar. Dejamos las opciones tal como se ilustra.

  • 5.- Damos clic en Create Project y ya tendremos nuestro primer proyecto creado. Por default CSS nos creara tres archivos main.c, main.h y main.ccspjt. (en nuestro caso el proyecto se llama main, si cambiaste el nombre tendran el nombre que usaste).

  • 6.- Podemos prescindir del archivo main.h ya que por lo pronto no lo usaremos, puedes borrarlo o no, sera tu decision. En la ventana del editor de CCS se observará el archivo main.c abierto y con la función main ya escrita. esto nos indica que estamos listos para escribir nuestro primer programa.

  • 7.- Para que el código que escribamos con el compilador de CCS funcione en la tarjeta Pepper-8m, agregaremos el siguiente código que servirá para reservar espacio para el bootloader y para remapear los vectores de reset e interrupciones. Escribiremos el siguiente codigo el cual lo emplearemos a modo de template para futuros proyectos. No se te olvide borrar la línea #include main.h
#include <18F45J50.h>

/*remapemos direcciones de vectores y memoria de programa*/
#define LOADER_SIZE                          (0x0FFF)
#define LOADER_START                      (0)
#define LOADER_END                          (LOADER_SIZE)
#define APPLICATION_START              (LOADER_SIZE+1)
#define APPLICATION_END                  (getenv("PROGRAM_MEMORY")-1)
#define APPLICATION_ISR                    (APPLICATION_START+8)

/*definimos uso de bootloader y direccion de programa*/
#build(reset=APPLICATION_START, interrupt=APPLICATION_ISR)
#org 0,LOADER_END AUTO=0 void bootloader(void) {}

/*indicamos reloj del sistema para los delays*/ 
#use delay(clock=12Mhz)
 
void main()
{
     setup_adc_ports(NO_ANALOGS); /*deshabilitamos canales  analogicos*/
  
      /*Escribe aquí el codigo de tu aplicacion*/
}
  • 8.- Usando este mismo template agregaremos un sencillo código que parpadee el led de la tarjeta Pepper-8m cada 500 milisegundos con lo cual nuestro código quedará de la siguiente manera.
#include <18F45J50.h>

/*remapemos direcciones de vectores y memoria de programa*/
#define LOADER_SIZE             	           (0x0FFF)
#define LOADER_START                     (0)
#define LOADER_END              	           (LOADER_SIZE)
#define APPLICATION_START             (LOADER_SIZE+1)
#define APPLICATION_END                 (getenv("PROGRAM_MEMORY")-1)
#define APPLICATION_ISR                   (APPLICATION_START+8)

/*definimos uso de bootloader y direccion de programa*/
#build(reset=APPLICATION_START, interrupt=APPLICATION_ISR)
#org 0,LOADER_END AUTO=0 void bootloader(void) {}

/*indicamos reloj del sistema para los delays*/ 
#use delay(clock=12Mhz)

void main()
{
    setup_adc_ports(NO_ANALOGS);  /*deshabilitamos canales analogicos*/
  
    while(1)            	      /*ciclo infinito*/
    {
        output_toggle(PIN_A1);    /*invierte estado del led en pin A1*/  
        delay_ms(500);     	      /*espera 500 mili segundos*/
    }
}
  • 9.- Compilaremos este código seleccionando el menu Compile y dando clic en Build de la barra de herramientas.

  • 10.- Si no tuvimos ningún error al compilar el proyecto miraremos el siguiente mensaje (imagen siguiente). En caso de tenerlos debemos corregir los errores cometidos e intentar compilar de nuevo.

  • 11.- Al compilar sin ningún error se generará un archivo nombredelproyecto.hex en la ruta donde guardamos el proyecto, En este caso el archivo generado es main.hex.

Programando la Pepper-8m

Ya tenemos nuestro programa compilado y listo para ser ejecutado, solo falta cargarlo a la memoria flash del microcontrolador pic18f45j50. Para programar la memoria de un microcontrolador, típicamente se necesita de un programador externo conectado a la PC, pero gracias al diseño de la tarjeta Pepper-8m no necesitaremos de dicho programador. ¿Por qué razón?, pues muy sencillo el micro en la tarjeta ya viene preprogramado con un bootloader, el cual reprograma al micro, el único requisito es compilar el programa para que se ejecute a partir de la direccion 0x1000. (lo cual lo realiza sin problemas gracias a la inclusión de las lineas en el primer codigo).

  • 13 De la pagina de Hotboards descarga el archivo bootloader_app.zip http://hotboards.org/images/cpus/pepper8m/bootloader_app.zip

  • 14 Descomprima el archivo y guarde la carpeta en un lugar apropiado de su computadora. ejecute el programa HIDBootloader.exe que viene en la carpeta que descomprimida. Aparecerá la siguiente ventana.

  • 15 Conecta tu tarjeta a uno de Los puertos USB de la PC, Presiona la siguiente secuencia de botones en tu tarjeta. (el botón reset es el primero después del conector usb)

  • 16 Si es la primera vez que conectas la tarjeta a tu PC, espera a que se cargue el driver. El programa detectará tu tarjeta y podrás soltar el botón.

  • 17 Haz click en el icono de Import Firmware Image (el primero de izquierda a derecha). Te pedirá que busques tu programa ya compilado el cual es un archivo .hex. El archivo lo encuentras en el folder de tu proyecto. Ejemplo \proyecto\proyecto.hex. Dónde proyecto sería el nombre de tu proyecto.

  • 18.- Haz click en el icono de Erase/Program/Verify (segundo icono). La aplicación comenzará a grabar en la tarjeta el programa que elegiste. NOTA: Espera a que el programa termine de grabarse o podrías dañar el bootloader.

  • 19.- Por último has click en el icono de Reset Device (tercer icono) para que la tarjeta empiece a correr tu programa. La aplicación HIDBootloader.exe volverá a mostrarse como en la primera imagen. Revisa en tu tarjeta, podrás observar el led ambar parpadeando.
⚠️ **GitHub.com Fallback** ⚠️