PICUS-B es una placa de desarrollo basada en el controlador PIC18F4550 que simplifica el proceso de desarrollo, ya que trabajando en conjunto a un bootloader permite cargar código sin necesidad de usar un grabador externo como pickit 2.
El bootloader usado por defecto que usamos es el HID BOOTLOADER, aunque la tarjeta también es compatible con otros bootloaders como MikroBootloader, o Picdem Fs bootloader, bootloader de pinguino.
por ahora nos enfocaremos en el HID BOOTLOADER. el mismo ocupa el inicio de la memoria rom hasta la pocision 0x1000
por lo cual en el programa se debe desplazar el uso de la memoria.
para ilustrar de mejor manera usaremos PIC C COMPLILER para un ejemplo
#include <18f4550.h> //Incluimos la libreria del Pic 18F4550 #DEVICE ADC=10 #fuses HSPLL,NOWDT,NOBROWNOUT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,MCLR,NOPBADEN,WRTB #use delay(clock=48000000) //Frecuencia de trabajo // pone el inicio en la posicion 1000 y el vector de imterrupcio en 1008 #build (reset=0x1000,interrupt=0x1008) #org 0, 0x0fff{} void main(){ //funcion principal don de usualmente se hace las configuraciones output_drive(Pin_d0); // configurama el pin RD0 como salida while(true){ // ciclo infinito output_high(pin_d0); // encendemos el led poniendo un 1 logico en RD0 delay_ms(1000); // esperamos un tiempo de 1000ms = 1 segundo output_low(pin_d0); // apagamos el led poniendo un 0 logico en RD1 delay_ms(1000); //esperamos un tiempo de 1000ms = 1 segundo } }
como se puede observar las líneas que se deben aumentar el el código son
#build (reset=0x1000,interrupt=0x1008) #org 0, 0x0fff{}
que lo que hace es trasladar nuestro código a la posición 0x1000 para evitar tocar el bootloader que se encuentra en esa parte de la memoria, para otros compiladores las instrucciones pueden variar pero la idea seria la misma.
una vez que generamos el archivo blink.hex
procedemos a cargarlo en nuestra tarjeta del siguiente modo.
primero procedemos a conectar nuestra tarjeta a la computadora
luego procedemos a descargar el programa HIDBootLoader_26b.exe y lo abrimos.
como se puede observar el programa tiene los botones deshabilitados, para poder hacer la grabación hay que poner la tarjeta en modo de grabación.
para entrar en el modo de grabación se debe mantener presionado el botón PROG mientras se presiona el botón de RESET
boton 1 PROG
boton 2 RESET
al entrar en modo grabación los dos leds de la placa comenzaran a parpadear y los botones en el programa se habilitaran
una vez que entre en modo grabación puede soltarse los botones.
el siguiente paso es pulsar el botón Open Hex File y luego buscamos la ubicación de nuestro archivo blink.hex y lo abrimos
luego oprimimos el botón Program/Verify y procederá a cargar el programa en la tarjeta,
por ultimo para poner en marcha el programa que cargamos basta con resetear la tarjeta ya sea desde el de la tarjeta o del programa.
todos los archivos necesarios los podrás encontrar en el siguiente enlace
#include "picus-b.c" void main(){ //funcion principal don de usualmente se hace las configuraciones output_drive(Pin_d0); // configurama el pin RD0 como salida while(true){ // ciclo infinito output_high(pin_d0); // encendemos el led poniendo un 1 logico en RD0 delay_ms(1000); // esperamos un tiempo de 1000ms = 1 segundo output_low(pin_d0); // apagamos el led poniendo un 0 logico en RD1 delay_ms(1000); //esperamos un tiempo de 1000ms = 1 segundo } }