Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo
Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."
BOOTLOADER
Ustedes se preguntaran ¿Qué es el bootloader?
Efectivamente es de mucha utilidad poder "Programar tu PIC si necesidad de un
Programador". Esto que digo es relativo, ya que al menos una vez debes programar como
siempre un código residente en memoria flash, que se encargara de tomar los datos y re-
programar su propia memoria Flash. Mejor dicho, hablemos que es un Bootloader.
El termino bootloader hace referencia a un pequeño programa que se realiza para
determinado microcontrolador, ya sea PIC, Freescale, Atmel, etc. Este código lo que hace
es tomar los datos que se le enviaran por puerto serial (UART), USB, Ethernet, el que sea
que pueda enviar una cadena de Bytes al microcontrolador. El microcontrolador va
tomando esos datos que le van llegando y los va "Programando" en su propia memoria
Flash. Qué obtenemos con eso, que puedes actualizar en cualquier momento el código del
PIC. Utilidades de esto, son grandes, puedes desarrollar un producto o un proyecto y el
usuario final no necesita un programador de PIC para poder actualizarlo. Un fiel y gran
ejemplo de esto es lo que implementan los programadores ("Quemadores") profesionales de
PICs. El programador te llega a casa totalmente funcional, pero en cualquier momento
aparece una nueva referencia de microcontrolador y si quieres actualizar el programador,
solo te bajas de internet la actualización, conectas el micro al USB y listo, le envías la
actualización al programador. Listo el se autoprogramó la FLASH y ya tiene la nueva
referencia del micro para trabajar con este.
Lo anterior permite sacar las siguientes conclusiones:
• Es necesario tener un programador para usarlo solo una vez y así grabarle el programa
residente en memoria FLASH. Ya después de esto se usa el Bootloader para grabar la flash
del micro.
• El programa residente ocupa memoria flash y por ende tienes un poco menos de
memoria para la aplicación real del micro. No es mucha la que quita, pero hay que tener eso
claro.
• Por ningún motivo se puede sobrescribir las posiciones de memoria FLASH en la que
se encentra el programa residente Bootloader. Si se borra por algún error, pierdes el
bootloader y toca nuevamente programarlo con un grabador externo.
Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo
Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."
• No todos los micros pueden soportar Bootloder, esto se limita a aquellos que tienen la
capacidad de autograbar su memoria FlLASH. Por ejemplo el 16F84 no lo permite, por eso
sacaron la versión PIC16F628A que si lo deja y además tiene mejores prestaciones.
Ya con lo anterior en teoría, PODEMOS GRABAR EL PIC SIN NECESIDA DE UN
PROGRAMADOR.
Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo
Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."
HARDWARE
El circuito que se empleará es el que se muestra a continuación. Falta el conector USB,
pero comparando con la figura que se muestra más adelante podrá terminar de construir el
circuito requerido.
Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo
Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."
USB
El bus USB trasmite señales de datos (D+, D-) y de alimentación (5 voltios, 0 voltios) a
través de cuatro hilos y como buen protocolo serial de alta velocidad trabaja en modo
diferencial, es decir que detecta la información por medio de pequeñas diferencias de
tensión entre sus líneas de datos, es por esto que su voltaje máximo en estas líneas no
superan los 3.6 voltios, y es mas: algunos fabricantes especifican como voltaje máximo
solo 2.8 voltios. Como ves si, si se conecta un dispositivo USB en una toma frontal mal
instalada el daño en el dispositivo es seguro porque no existe ninguna protección.
En cuanto a la reparación, muchos dispositivos USB, llámense scanners, cámaras, pen
drives, etc… utilizan resistencias en serie con la entrada diferencial con un valor de 2.2
ohmios a 10 ohmios para lograr un mejor acople de impedancias en la línea, cuando estas
se ven expuestas a 5 voltios por algunos segundos se queman y se abren (aumentan su
resistencia al infinito) siendo este el único daño en el dispositivo, el problema radica en que
no todos los dispositivos USB cuentan con estas resistencias de acople, y la señal llega
directamente al circuito integrado encargado de decodificar estos pulsos diferenciales el
cual una vez dañado es difícil de conseguir, aunque si lo consigues lo mas seguro es que
puedas reparar el dispositivo.
Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo
Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."
USB fue diseñado para estandarizar la conexión de periféricos, como mouse, teclados,
joysticks, escáneres, cámaras digitales, teléfonos móviles, reproductores multimedia,
impresoras, dispositivos multifuncionales, sistemas de adquisición de datos, módems,
tarjetas de red, tarjetas de sonido, tarjetas sintonizadoras de televisión y grabadora de DVD
externa, discos duros externos y disquetera externas. Su éxito ha sido total, habiendo
desplazado a conectores como el puerto serie, puerto paralelo, puerto de juegos, Apple
Desktop Bus o PS/2 a mercados-nicho o a la consideración de dispositivos obsoletos a
eliminar de los modernos ordenadores, pues muchos de ellos pueden sustituirse por
dispositivos USB que implementen esos conectores.
Para nuestra instalación es recomendable buscar la mejor conexión en nuestro pic , para
ello conseguir bornes maquilados como se muestra en la figura (se encuentran en las
tarjetas madres).
Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo
Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."
Generación de código
El USB Bootloader es un pequeño programa de arranque, residente en las primeras 0x1000
bytes de la memoria de programa de un Microcontrolador Pic18F2550. El bootloader
funciona en el momento en que se carga el programa (justo cuando se reinicializa el PIC) y
es capaz de cargar un programa de aplicación en la memoria de programa del pic.
Es importante destacar el apartado #define LOADER_SIZE del programa el cual aísla el programa
del bootloader para no ser borrado tras una nueva carga, es importante tenerlo en cuenta cuando
se simula en Proteus comentarlos y cuando se vaya a descargar al PIC habilitarlo.
(colocar o quitar comentarios)
#define LOADER_SIZE 0x1000 //4096 Bytes. #build(reset=LOADER_SIZE, interrupt=LOADER_SIZE+0x08) #org 0, (LOADER_SIZE-1) {} PROGRAMA “PLANTILLA DE PROYECTOS” //************************************************ /* Publicado: ING. Baltazar de Jesus Zapata Arceo # Balzarc# Instituto Tecnológico de Lerma */ //************************************************ #include <18F2550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL2,CPUDIV1,VREGEN,MCLR //#define ADC=10 // Habilítalo cuando necesites que el adc sea de 10 bits #use delay(clock=48000000) /// MICROCHIP_BOOTLOADER.H /// NOTA: FUNCIONA CON LA VERSION DE USB_BOOTLOADER.EXE (HID) V.2.9a /// NO FUNCIONA CON LA VERSION DE USB_BOOTLOADER.EXE HID V2.3. /// CODIGO BOOTLOADER, PARA SIMULAR EN PROTEUS, PONER COMO COMENTARIO PARA GRABAR EN MICROCONTROLADOR, QUITAR COMENTARIO #define LOADER_SIZE 0x1000 //4096 Bytes. #build(reset=LOADER_SIZE, interrupt=LOADER_SIZE+0x08) #org 0, (LOADER_SIZE-1) {} #use standard_io(a) #use standard_io(b) #use standard_io(c)
Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo
Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."
void main() { /// Configuracion Embebida //// setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_wdt(WDT_OFF); setup_timer_0(RTCC_8_BIT|RTCC_DIV_128); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_timer_3(T3_DISABLED|T3_DIV_BY_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); for(;;){ ///////////·······poner programa desde aquí········//////////// //////////··········fin de programa···········/////// } }
Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo
Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."
DESCARGAR PROGRAMA CON BOOTLOADER HID
GRABANDO EL PIC
Abrimos la aplicación USB Boottloader V2.90 ( la encuentras en la dirección
http://balzarc-proyectositl.blogspot.mx/)
Se conecta el PIC al puerto USB. Una vez que Windows detecta que la PC tiene conectado
un dispositivo nuevo, se inicia el asistente para instalar drivers de hardware nuevo.
Para entrar en el modo USB Bootloader, se presiona el botón Reset conectado a la
terminal MCLR, luego se presiona el botón Bootloader y se libera nuevamente el
botón Reset. Lo anterior se realiza porque el programa bootloader del PIC primero
examina el nivel lógico de la termina Bootloader donde se encuentra conectado el
pushbutton. Si el botón está presionado el PIC entra en modo Bootloader y si no lo está
ejecuta el programa de aplicación que tenga grabado.
Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo
Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."
Automáticamente la aplicación lo detecta y el hardware solo emitirá unos destellos de
bootloader .
Cargamos nuestro proyecto extensión “.h” dando click en el icono de la carpeta o
file / import firmware image.
Y el último paso es descargar el proyecto que es nombrado como Erase/Program/Verify
Device como se ve en la imagen .
Se demora unos cuantos segundos, terminado el proceso se procede a resetear el PIC (por
hardware “el botón externo” ó software “Reset Device” )
Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo
Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."
Listo es hora de realizar las prácticas