El primer paso será instalar la aplicación Bootloader AN1310 que nos provee Microchip gratuitamente.
NOTA: Esta aplicación solo funciona si tenemos el bootloader cargado previamente en el microcontrolador, tanto la aplicación ejecutable como el firmware bootloader se proveen gratuitamente desde el mismo sitio de Microchip.
Link a la página de Microchip sobre el Bootloader AN1310:
Debemos tener en cuenta que este Bootloader es Serial, funciona mediante el UART del microcontrolador. Si no contamos con una interfaz serial en nuestra PC debemos utilizar un Bridge USB (Un conversor de USB a Serial virtual).
Si utilizamos este Bridge USB debemos instalar los drivers antes de abrir nuestro programa cargador para que el mismo sea reconocido.
En la actualidad se pueden encontrar Bridge USB en base a los integrados MCP2200, FT232, PL2303, CH340, etc…
Como requisito para nuestro cargador serial USB virtual, necesitaremos de los pines Tx, Rx y RTS.
Los pines Tx y Rx serán directos al UART del microcontrolador o mediante dos resistencias de 1k para aislar la interfaz del los pines funcionales.
El pin RTS es necesario para que el programa cargador reinicie automáticamente el microcontrolador para realizar la inversión en el UART como especifica el firmware bootloader para saber que ha entrada en el modo correcto.
El acople del pin RTS al MCLR se realiza mediante un diodo de alta velocidad y baja señal como el 1N4148.
Como podemos ver en el siguiente circuito estamos usando un Bridge USB de Microchip MCP2200 y un PIC16F883, podremos ver las líneas Tx y Rx del UART con el MCP2200 mediante resistencias de 1k, y también podremos ver como se acopla RTS del MCP2200 al MCLR del PIC mediante un diodo 1N4148. (nótese que también se encuentra el botón de reset y el pull-up).
Como se puede ver en el circuito el MCP2200 solamente utiliza Tx, Rx y RTS, si contamos con otro cable adaptador debemos buscar estas tres conexiones o bien si tenemos una PC con puerto Serial debemos buscar el mismo, pero en el caso de tener un DB9 Serial tenemos que saber que el protocolo de comunicaciones es RS-232, este protocolo maneja +/-15V en sus líneas y estos niveles de tensión podrían destruir el microcontrolador.
Para ello debemos utilizar un adaptador RS232 a TTL (Recordemos que TTL es una tecnología que maneja 0 y 5V necesaria para el microcontrolador).
Un integrado muy conocido es el MAX232 que posee norma RS232 de un lado y TTL del otro lado.
Una vez descargado el programa Bootloader AN1310 procedemos a abrir el mismo.
El primer paso será entrar a la configuración del mismo, para ello vamos a la solapa Program y elegimos Settings.
Una vez que entramos a la configuración debemos buscar el puerto por donde conectaremos el microcontrolador. (En mi caso he utilizado el Bridge USB con el MCP2200 y me ha creado un puerto serie Virtual denominado “USB Serial Port (COM3)” pero podría estar en otro COM dependiendo de la instalación del mismo.)
Luego elegimos la velocidad “Bootload Baud Rate” y “Application Baud Rate” en 9600 bps.
Luego dejamos como está el resto de la configuración y presionamos OK.
Una vez que ya hemos configurado la interfaz de comunicaciones debemos reconocer a nuestro microcontrolador, para ello la nota de aplicación de Microchip AN1310 nos recomienda primero presionar el botón Pause “Break/Reset Application Firmware”.
Como podemos en la base de la aplicación nos deja la leyenda: “Break, asserted. Power cycle/reset device to force bootloader entry”.
Seguidamente de presionar este botón debemos presionar el botón Stop “Bootloader Mode”.
Una vez presionado este botón el programa detectará el microcontrolador que posee el firmware bootloader en el mismo, como podemos ver nos muestra la memoria libre “3FFF” y los sectores resaltados en celeste son sectores propios del bootloader que no serán utilizados por el programa que carguemos.
En la parte inferior del programa podremos ver que nos muestra el microcontrolador PIC16F883 seguido de COM3 y 9600, aquí nos está demostrando que ha reconocido correctamente el microcontrolador.
Ahora podremos leer el microcontrolador para saber si ya tenía un programa cargado anteriormente, para ello presionamos el botón que tiene una flecha verde “Read Device”.
Una vez que se completa la lectura del mismo podremos ver que se encuentra ocupada la memoria donde antes era 3FFF ahora hay datos, también podremos notar en la parte inferior de la ventana “Read complete (FLASH 9.555s, EEPROM 0.38s), aqui nos muestra el tiempo que demoró en leer las memorias internas del microcontrolador.
Para grabar un nuevo programa es conveniente (aunque no necesario) borrar el microcontrolador (sólo se borraran los espacios disponibles para el programa, el bootloader permanecerá en el mismo).
Para ello presionamos el botón que tiene una goma de borrar “Erase Device”.
Como podremos ver en la parte inferior de la ventana nos muestra “Erase device complete (12.588s)” nos está diciendo que se ha borrado completamente en 12.588 segundos.
Podríamos volver a leer para asegurarnos de que se ha borrado correctamente, pero no es necesario. Ahora vamos a buscar nuestro programa compilado “*.hex” mediante el botón Open.
Ahora buscaremos nuestro archivo donde corresponda que lo tengamos guardado.
Para grabar nuestro programa debemos presionar el botón que tiene una flecha roja “Write Device” y el mismo comenzará la carga al microcontrolador.
Una vez completada la grabación, en la parte inferior de la ventana nos mostrará “Write complete (FLASH 2.995s), donde nos comenta que la grabación demoro 2.995 segundos.
Una vez grabado ya estamos listos para ejecutar nuestro programa, en este punto podremos desconectar el microcontrolador de la PC, o cerrar el programa y simplemente presionando Reset del microcontrolador entrada en ejecución normal.
El programa también nos provee de una terminal serial en el mismo que se activa automáticamente al presionar el botón Play de la aplicación “Run Application Firmware” de esta forma no tenemos que presionar el botón reset del microcontrolador ya que lo hará automáticamente mediante RTS el programa y nos llevara al terminal serial (si tenemos un programa que utiliza el UART veremos esto en el terminal, sino solamente quedará en blanco).
En nuestro caso hemos realizado un programa muy simple en C mediante el compilador CCS, que cumple la función de incrementar la variable número en una unidad a cada segundo y luego la imprime en el puerto serial.
Por último veremos en la terminal del programa el los envíos del microcontrolador mediante UART.
Para este ejemplo se ha utilizado el circuito descripto al principio del documento.
NOTA: Existe una posibilidad de que el bootloader no sea reconocido en primer instancia, como vimos al principio del documento primero presionamos el botón Pausa y luego el botón Stop y el microcontrolador es reconocido correctamente, pero si no lo reconoce, debemos presionar el botón pause y desde ese estado presionamos el botón Reset físico del circuito y lo soltamos, ni bien soltamos el botón Reset presionamos rápidamente el botón Stop en la ventana y el microcontrolador será reconocido, si no pasa a la primera vez debemos volver a probar, es un bug que se encuentra vigente en Microchip para el AN1310, en mis pruebas me ha pasado una única vez sobre Windows XP, en Windows 7 y 10 no ha pasado nunca.
Excelente muy bien explicado, gracias por tu colaboración.
ResponderBorrarGracias, Por nada!
BorrarSaludos.
excelente amigo lo hice y funciona muy bien
ResponderBorrarexcelente amigo lo hice y funciona muy bien
ResponderBorrarBuenísimo, me alegra! cualquier consulta avísame! Saludos.
BorrarMuchas felicidades
ResponderBorrarsaludos desde bolivia
Este comentario ha sido eliminado por el autor.
ResponderBorrarHola amigo no logro subir el butloader a pic 18f4550 como genero el ex para subir gracias
ResponderBorrarSe puede usar ch340g en vez del mcp2200?
ResponderBorrar