Está en la página 1de 17

USO DE HIDBOOTLOADER DE MICROCHIP CON PROTON

Hola Bakunos, pues aquí dejo una manera muy versátil de programar un microcontrolador de la serie 18f2550 o 18f4550 de microchip la cual al menos de manera personal y a una buena cantidad de “robóticos” de bajo presupuesto nos ha servido de manera soberbia. Sabemos de antemano que habrá por ahí una infinidad de puristas que podrán tener sus contras al modo en como funciona este sistema, pero bueno si son puristas o como decimos en México muy chinguetas; dejen en paz a los que no lo somos ya que solo pretendemos hacer cosillas con un microcontrolador de manera sencilla o amateur, sin pasar por el tedio casi infinito de aprender muchísimas cosas sobre los microcontroladores y tener todas las herramientas necesarias. Así que el presente proyecto esta enfocado a principiantes o hobistas interesados en obtener resultados casi inmediatos.

Dado por sentado lo anterior debo exponer sin embargo en que se basa este sistema, cuales son sus principales ventajas y de donde surge la idea. La idea nace cuando vi a un compañero de modelismo (ferromodelismo) que tuvo la oportunidad de adquirir un Arduino (http://www.arduino.cc/es/) y sin mas, comenzó a hacer sus pequeñas grandes cosas con sus trenes y dioramas, a tal grado que sorprende a muchos por la facilidad de programar a través de su sistema, ya que no hay que saber prácticamente nada sobre microntroladores salvo que hay que cargarle el programa que requerimos para hacer algo y listo.

Donde a mi amigo ya le dolió el codo, fue cuando quiso tener varios arduinos para hacer más cosas: ¡vamos! adquirir muchos arduinos ya cuesta una buena cantidad de dinero. De ahí que me pregunto si existía la alternativa de fabricarse su propio arduino, cosa que es muy factible pues el arduino finalmente es open source, pero desgraciadamente en México los microcontroladores AVR prácticamente no se comercializan y ahí comenzó mi búsqueda por algo parecido pero basado en Microchip, que en México existen casi en cualquier tienda de componentes

electrónicos del país. En esta búsqueda me encontré con el proyecto Pingüino (http://www.hackinglab.org/pinguino/index_pinguino.html), que también es open source y es totalmente utilizable y factible, a manera personal lo que no me gusto a diferencia del arduino: es que no existe todavía un “manual del usuario” de programación formal, así que hay que andarle investigando mucho y se requiere ser casi un experto en C++ para irle descubriendo sus cositas. Cosa que no solucionaba en nada lo que buscaba, ni mi amigo ni yo.

El salto cuántico que me provoco conocer tanto al arduino como al pingüino, fue saber que por medio de un bootloader podría solucionarse en gran porcentaje el tedio que yo mismo sufrí y que seguramente sufrieron muchos de ustedes cuando comenzaron con un microcontrolador; en mis años mozos recuerdo las horas que me costó hacer que un maldito led encendiera y apagara. Como todos sabemos cuando compras un microcontrolador, este viene en “ceros”, esta muerto, si lo conectas no hace nada el maldito, alguien que ya paso por el proceso de hacer algo, es muy fácil. Pero para el pobre principiante que apenas tiene el primer encuentro con este mundo, puede ser toda una noche o semanas de angustias y frustraciones, verificando; el circuito, el grabador (eso si tiene el dinero para comprarlo), que si el primer programa, el compilador, etc, etc. Ustedes sabrán de qué hablo.

En contra parte si te llega a tus manos un microcontrolador “vivo” tienes un avance de un 80% sobre el hardware y el software, de tal suerte que puedes ponerte a hacer tus programas y olvidarte en gran medida de todo lo expuesto en el párrafo anterior y disfrutar verdaderamente del ocio y de tus hobbies. El software que en este caso mantiene vivo a nuestro microcontrolador es el “Bootloader de microchip” escríbanlo en Google y ahí encontraran mil y un paginas sobre el tema, y como dije al principio, aquí no me voy a meter en discutir o enseñar nada de lo que ya esta hecho, quien quiera saber a fondo ahí esta la pagina de microchip http://www.microchip.com/ y puede beberse todo lo que guste, aquí solo compartiré los archivos .hex que contienen el bootloader uno para el 18f2550 y el otro para el 18f4550, los diagramas respectivos y como utilizar nuestro sistema que expongo, también dejo el compilador de

Basic “Proton 3.5.2.7 “ con su respectiva medicina, para comenzar a hacer cosas lo mas rápido posible.

Descargando todo lo necesario

El link de descarga de mi proyecto esta en el servidor 4shared y el link es http://www.4shared.com/rar/O_VBrtfI/CIBERTLAN.htm . Este link de descarga contiene un archivo empacado en winrar con un password que es CIBERTLAN. Este password es meramente para evitar que borren la liga de descarga los de 4shared y bueno para obligar de alguna manera a que lean este texto y saber de mi parte que esta siendo de utilidad para alguien. Dentro de este archivo encontraran todo lo necesario para comenzar y para hacerlo consta de un paso vital para todo el proceso y que es grabar el archivo .hex (firmware) correspondiente al microcontrolador que van a utilizar. Veamos a más detalle:

Una vez que descarguen y desempaquen el archivo cibertlan.rar tendrán cincos carpetas:

Bootloader

Proton

Diagramas

Ejemplos

Datasheet

Dentro de la carpeta Bootloader encontraran 2 archivos: 18f2550.hex y 18f4550.hex estos archivos son el programa (firmware) del hidbootloader para los respectivos microcontroladores , que se deberán grabar dentro del microcontrolador que escojan vía un grabador de chips, acudiendo con un amigo (que lo tenga), o acudiendo a una tienda especializada (cobran 15 pesos)en el centro de la ciudad de México o si cuentan con un grabador de chips, pues ustedes mismo lo pueden hacer, en mi caso tengo el famoso pickit2 y a través de ahí grabe mi programa.

Una vez teniendo nuestro microntrolador grabado, encontraran dentro de la carpeta “diagramas” los respectivos dibujos para montar el circuito base para nuestros proyectos aquí vale la habilidad de cada quien para fabricarlos, en mi caso los monte en una tarjeta perforada universal que servirá de a su vez de tarjeta madre, que se podrá insertar en un Protoboard.

en una tarjeta perforada universal que servirá de a su vez de tarjeta madre, que se
Ya que se tiene montada toda la circuitería, podrán energizar el circuito y apreciar su

Ya que se tiene montada toda la circuitería, podrán energizar el circuito y apreciar su trabajo; ya que tendrán titilando el led de “grabación” a razón de un segundo con lo que dará acuse que todo va por buen camino. Si es así: ¡felicidades!, ya tenemos el camino muy avanzado. Ahora nos toca verificar la conectividad entre la computadora y el microcontrolador vía el puerto USB. Para esto deberemos conectar nuestro circuito a un puerto USB disponible a nuestra computadora.

Comento que, este “HID BOOTLOADER” no requiere de drivers para instalarse en nuestra computadora ya que al ser basado en el driver universal HID, todos los controladores vienen implantados desde Windows, ya sea XP, Vista o Windows 7, con lo que no tendrán que embromarse con instalaciones tediosas, el Windows hace lo propio de manera automática. Sin embargo lo que explicare a continuación es de vital importancia para entender el funcionamiento del HID Bootloader.

Carga de programas al Microcontrolador

Como podrán haber apreciado nuestro proyecto cuenta con dos switchs o botones y dos LEDS, un switch que sirve para hacer un reset o reinicio del microcontrolador, y el otro para lograr poner el microcontrolador en modo de “grabación”. Los leds sirven uno para indicar que esta energizado el circuito y el otro para indicarnos que se esta en modo “grabación”. De manera natural el microcontrolador esta en modo “run” o sea que se esta ejecutando el programa actualmente cargado.

Ahora bien; si solo pulsamos el switch de “Reset”, veremos que el led deja de parpadear y si lo soltamos vuelve a iniciarse la secuencia y sigue corriéndose el programa de manera normal. Por otro lado; si pulsamos los dos switchs al mismo tiempo, el de “reset” y “programa”, pero en secuencia solo soltamos el switch de “reset”, de manera inmediata veremos que la computadora nos diara que se a “encontrado hardware nuevo” y se ejecutara la respectiva instalación de drivers sin preguntarnos nada y el led de nuestra tarjeta titilara pero de manera muy rápida, con esto ya tendremos nuestro microcontrolador en modo “grabación”.

Para poder grabar programas nuevos a nuestro microcontrolador lo debemos hacer a través de la herramienta “HIDBootloader (Windows).exe” que encontraremos en la carpeta BOOTLOADER, al correr esta herramienta tendremos la siguiente pantalla cuando nuestro microntrolador esta en modo “run”:

Mientras que cuando hacemos la secuencia de poner en modo

la siguiente pantalla:

“grabación” nuestra tarjeta, veremos

pantalla: “grabación” nuestra tarjeta, veremos Como podrá apreciarse, el programa USB BOOTLOADER anuncia

Como podrá apreciarse, el programa USB BOOTLOADER anuncia si el microcontrolador esta conectado o no:

“Device Detached” cuando esta en modo “run”, corriendo el programa actual o

“Device Attached” cuando se esta en modo “Grabación”, Cuando esta listo para que le grabemos nuestro programa.

Instalando proton

Si hasta este punto todo ha estado correcto, nos encontramos en el punto de poder grabar el programa que queramos a nuestro microcontrolador, para esto debemos crearlo y para eso utilizaremos el IDE de desarrollo “Proton” y que a continuación doy una breve explanación de como instalarlo. Encontraremos dentro dela carpeta “proton” los siguientes archivos:

dentro dela carpeta “proton” los siguientes archivos: Procedemos a instalar el Proton Compiler Setup y una

Procedemos a instalar el Proton Compiler Setup y una vez hecho esto, copiaremos el archivo ProtonIDE dentro de la carpeta “C:\Program Files\ProtonIDE” y remplazamos el archivo existente, hacemos lo mismo con el PrPLUS dentro de la carpeta “C:\Program Files\ProtonIDE\PDS”. Con esto tenemos el proton instalado y parchado para ser utilizado de manera completa.

Nuestro primer Programa en Proton

Iniciamos el Proton desde el icono correspondiente y nos encontraremos con la siguiente pantalla:

y nos encontraremos con la siguiente pantalla: A efecto de acotar encontraran dentro de la carpeta

A efecto de acotar encontraran dentro de la carpeta “ejemplos” dividida

a su ves en los do tipos de microcontroladores un archivo “blink.bas”

abrimos el que corresponde a nuestro microcontrolador, con lo que tendremos la siguiente pantalla:

Procedemos a compilar nuestro programa con el respectivo botón “compile” con lo que nos generara

Procedemos a compilar nuestro programa con el respectivo botón “compile” con lo que nos generara dentro de la carpeta “ejemplos” el respectivo archivo “blink.hex” este archivo contiene el ejecutable para ser grabado en nuestro microcontrolador vía el “HIDBootloader (Windows).exe” que comentamos en párrafos anteriores.

Para hacerlo; corremos “HIDBootloader (Windows).exe” y ponemos en modo Grabacion nuestro microcontrolador. Presionamos al mismo tiempo “RESET” y “grabacion” inmediatamente después soltamos “reset” y de este modo quedara en modo “grabación”, lo repito por si no fue claro el procedimiento, dentro del programa nos anunciara “device atached”

Procedemos a abrir el archivo “blink.hex” que se debio haber generado en la carpeta ejemplos,

Procedemos a abrir el archivo “blink.hex” que se debio haber generado

en la carpeta ejemplos, y con el icono de nuestro microcontrolador.

ejemplos, y con el icono de nuestro microcontrolador. procedemos a grabar Después del proceso de grabación

procedemos a grabar

Después del proceso de grabación que no toma más de 3 segundos tendremos la siguiente pantalla:

Con lo que quedara grabado nuestro programa, procedemos a hacer un reset de nuestro microcontrolador

Con lo que quedara grabado nuestro programa, procedemos a hacer un reset de nuestro microcontrolador vía el switch “reset” y comenzara a titilar nuestro led, que es lo que hace el programa Blink.hex.

A partir de este punto ya queda en sus manos todo lo que quieran desarrollar con este potente compilador que es uno de los mejores que existen, obviamente pueden usar otros compiladores como CCS, Mikrobasic, MikroC, etc, etc. Yo tome Proton como base, puesto que lo tengo en mano y llevo buena experiencia con el, pero nada impide que ustedes usen otros compiladores.

'****************************************************************

'*

Name

: BLINK.BAS

*

'* Author : Miguel Angel Borbolla Bonomi

*

'* Notice : Copyright (c) 2012 CIBERTLAN '*

*

*

'*

Date

: All Rights Reserved : 08/03/2012

*

'*

Version : 1.0

*

'* Notes

:

*

'*

:

*

'**************************************************************** Device = 18F2550

Declare PROTON_START_ADDRESS = $1000 Xtal = 48

Inicio:

High PORTB.0 DelayMS 1000 Low PORTB.0 DelayMS 1000 GoTo Inicio

Por el momento, con este programita de BLINK, hagan sus pruebas, cambien los tiempos en el delayms, para cambiar los tiempos de encendido y apagado del led, en fin diviértanse. Ahora que si ya tienen experiencia con proton, ya están listos de hacer lo que gusten.

Antes de terminar este primer documento del proyecto debo comentarles algunos detalles que deben tomar en cuenta para usar el proton en comunión con el HID BOOTLOADER de microchip.

Si analizan el programa de BLINK.BAS encontraran estas líneas al principio:

Device = 18F2550 Declare PROTON_START_ADDRESS = $1000 Xtal = 48

Las cuales definen que Microcontrolador usaran, si arman el circuito con el 18f4550, pues deberán anunciarlo como:

Device = 18F4550

Por otro lado la siguiente línea avisa al compilador que deberá organizar la memoria de inicio en la locación $1000 ya que el propio “hidbootloader” reside en estas primeras direcciones de memoria, recuerden que previamente grabamos el firmware al microcontrolador. Para hacer esto, es obligadísima la sentencia:

Declare PROTON_START_ADDRESS = $1000

Por ultimo e igualmente importante la tercera línea avisa al compilador en que frecuencia de reloj trabaja nuestro microcontrolador, esto es 48 MHZ, aun cuando físicamente tenemos un cristal de 20 mhz, el firmware del “hidbootloader” deja configurado a 48 MHZ el reloj vía los registros internos. Así que es muy importante para que el compilador haga sus cálculos correspondientes para los delays, y configuración de baudaje del puerto serie y del propio puerto USB implementado. Así que esto se anuncia con la línea:

Xtal = 48

Sin mas doy terminada esta primera parte, en la que a manera de conclusión podemos apreciar las ventajas de usar un bootloader como el de microchip, en la que una ves implementado se obtiene total portabilidad de nuestro circuito, sin la necesidad de estar dependiendo de un grabador extra, de estar quitando y poniendo el microcontrolador en nuestro grabador o en nuestro circuito de desarrollo con el respectivo desgaste de las patas del microcontrolador. Tenemos total portabilidad, ya que lo podemos usar en cualquier computadora, laptop o netbook, sin más dependencias de infinidad de herramientas. Y lo más importante es que el costo es lo suficientemente bajo como para poder solventarlo sin la inversión de tantas cosas.

Obviamente pido disculpas adelantadas por faltas de ortografía o por los posibles errores que pudiesen existir en diagramas, aunque debo comentar que estos circuitos junto con el firmware lo han implantado ya varias decenas de personas y los comentarios siempre han sido buenos, de ahí que me atreva a compartir el proyecto, sin embargo no descarto

que pudiesen existir errores incluso en la explicación, ya que no es fácil explicar las cosas vía la palabra escrita.

Vía el foro de ba-k, donde aparece el presente post, tratare de ayudar en lo posible a quien lo solicite en ese medio, para que así aproveche la comunidad en general.

Saludos

Miguel Angel Borbolla Bonomi

CIBERTLAN

miborbolla@gmail.com