87296971 Uso de Hid Boot Loader de Microchip Con Proton

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

Transcript of 87296971 Uso de Hid Boot Loader de Microchip Con Proton

Page 1: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

USODEHIDBOOTLOADERDE

MICROCHIPCONPROTON

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

Page 2: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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

Page 3: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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.

Page 4: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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.

Page 5: 87296971 Uso de Hid Boot Loader de Microchip Con Proton
Page 6: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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.

Page 7: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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”:

Page 8: 87296971 Uso de Hid Boot Loader de Microchip Con Proton
Page 9: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

Mientras que cuando hacemos la secuencia de poner en modo

“grabación” nuestra tarjeta, veremos la siguiente pantalla:

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.

Page 10: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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:

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.

Page 11: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

Nuestro primer Programa en Proton

Iniciamos el Proton desde el icono correspondiente y nos encontraremos

con la siguiente pantalla:

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:

Page 12: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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”

Page 13: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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

en la carpeta ejemplos, y con el icono de procedemos a grabar

nuestro microcontrolador.

Después del proceso de grabación que no toma más de 3 segundos

tendremos la siguiente pantalla:

Page 14: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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.

Page 15: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

'************************************************** ************** '* Name : BLINK.BAS * '* Author : Miguel Angel Borbolla Bonomi * '* Notice : Copyright (c) 2012 CIBERTLAN * '* : All Rights Reserved * '* Date : 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

Page 16: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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

Page 17: 87296971 Uso de Hid Boot Loader de Microchip Con Proton

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

[email protected]