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

Es este sencillo tutorial vamos a aprender a usar el compilador MikroC 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 MikroC en la tarjeta Pepper-8m usando el bootloader.

  • 1.- Procedemos a instalar el compilador MikroC de Mikroelektronika. Puedes descargar una versión demo desde el siguiente enlace: http://www.mikroe.com/mikroc/pic/.

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

images/Manual5/p05_01.png

  • 3.- En la ventana emergente que aparece, podrás configurar el proyecto paso a paso. La primera ventana solo es la bienvenida, así que da click en Next. En la siguiente ventana selecciona el microcontrolador PIC18F45J50, el nombre del proyecto y el directorio en el que se guardará. Te recomendamos crear un folder para cada proyecto. Da click en Next para continuar.

images/Manual5/p05_02.png

  • 4.- Por default la tarjeta Pepper-8m esta configurada para correr con un cristal externo, el cual posee un valor de 12MHz, asi que debes escribir 12.000000 en Device Clock. Las siguientes dos ventanas poseen opciones que por el alcance de esta práctica no son relevantes, así que deja las opciones como estan.

  • 5.- En la última ventana existe la opción de configurar los bits de configuración del microcontrolador. Estos bits nos permiten ser escritos por el bootloader (para evitar daños al bootloader). Asi que seleccionar la opcion sera irrelevante. Da click en Finish para terminar.

images/Manual5/p05_03.png

  • 6.- El ambiente de trabajo de MikroC deberá lucir como la siguiente imagen, con el archivo nombredelproyecto.c que contiene la función main abierto en el editor.

images/Manual5/p05_04.png

  • 7.- Para que el código que escribamos con el compilador MikroC 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.
void main(void);

void interrupt(void)
{
    /*escribe aqui tu codigo de interrupcion de alta prioridad*/
}

void interrupt_low(void)
{
    /*escribe aqui tu codigo de interrupcion de baja prioridad*/
}

/*Remapeo de vectores, necesario para usar con el Bootloader*/
void Vectors(void) org 0x1000
{
     asm{
         goto   _main                   //0x1000
         nop
         nop
         goto   _interrupt              //0x1008
         nop
         nop
         nop
         nop
         nop
         nop
         goto   _interrupt_low          //0x1018
     }
}

void main( void ) 
{
    /*asegurate que tu programa inicie en la direccion 0x1000 */
    OrgAll(0x1000);

    /*ASM para evitar optimizacion de vectores*/
    asm { goto SkipVectors }
    Vectors();
    asm { SkipVectors: }

    /*escribe aqui inicilizaciones de tu proyecto*/
       
    while (1)
    {
        /*escribe aqui tu programa*/
    }
}
  • 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 (solo se agregan las líneas de 42 a 48).
void main(void);

void interrupt(void)
{
    /*escribe aqui tu codigo de interrupcion de alta prioridad*/
}

void interrupt_low(void)
{
    /*escribe aqui tu codigo de interrupcion de baja prioridad*/
}

/*Remapeo de vectores, necesario para usar con el Bootloader*/
void Vectors(void) org 0x1000
{
     asm{
         goto   _main                   //0x1000
         nop
         nop
         goto   _interrupt              //0x1008
         nop
         nop
         nop
         nop
         nop
         nop
         goto   _interrupt_low          //0x1018
     }
}

void main( void ) 
{
    /*asegurate que tu programa inicie en la direccion 0x1000 */
    OrgAll(0x1000);

/*ASM para evitar optimizacion de vectores*/
    asm { goto SkipVectors }
    Vectors();
    asm { SkipVectors: }

    /*escribe aqui inicilizaciones de tu proyecto*/
    TRISA &= ~(1<<1);

    while (1)
    {
        /*escribe aqui tu programa*/
        LATA ^= (1<<1);
        Delay_ms(500);
    }
}
  • 9.- Compilaremos este código seleccionando el menú Build -> Build o podemos presionar Ctrl+F9.

images/Manual5/p05_05.png

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

images/Manual5/p05_06.png

  • 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 test.hex*. Este archivo es el que programaremos en la tarjeta

images/Manual5/p05_07.png

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.

images/Manual1/p01_09.png

  • 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)

images/Manual1/p01_10.png

  • 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.

images/Manual1/p01_11.png

  • 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.

images/Manual1/p01_12.png

  • 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.

images/Manual1/p01_13.png

  • 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.