| Programación de alto voltaje |
|
|
| Escrito por Maxi Padulo |
| Martes 08 de Septiembre de 2009 00:46 |
ResumenLos fusibles ("fuses") de los AVR son un espacio en memoria de 2 o 3 bytes de longitud que permiten setear algunas propiedades muy importantes del microcontrolador. Si bien se llaman fusibles no tienen nada que ver con la protección eléctrica del micro. La programación de alto voltaje permite programar el chip incluso cuando se han seteado erróneamente los fusibles de configuración impidiendo el acceso al microcontrolador. IntroducciónEs bastante frecuente arruinar la configuración de los fuses y descubrir que el microcontrolador ya no nos responde al querer programarlo via ICSP. Muchos suelen comprar otro chip, pero es bastante sencillo recuperar el estado de los fuses. Hay diversas razones por la cual podemos malograr la configuración de los fuses. La más común suele ser que nos confundimos al setearlo, lo seteamos mal, y luego no podemos volver a corregir nuestro error porque el microcontrolador no nos responde. Otra razón menos común, pero culpa de la cual malogré varios microcontroladores, es programador defectuoso. Problema con el programador DAPAPara programar mis AVR me constrí un programador DAPA. Es super simple de constrir. Pueden encontrarlo AQUÍ. Pueden ver en la imagen el programador (que parece simplemente un cable con un conector DB-25) junto a una Arduino Severino. El problema me encontré al querer cargar el primer bootloader con el IDE de Arduino. Pueden ver en la imagen a continuación el mensaje de error que devolvía el AVRDude al querer programar el microcontrolador. avrdude: verification error, first mistmatch at byte 0x0000 El problema con mi programador DAPA era que tenía el cable ICSP muy largo. Este programador si bien es muy sencillo de construir, también sufre de los costos de la sencillez. Al no hacer ningún tipo de reacondicionamiento de señales, la longitud del cable termina siendo un factor crítico a la hora de utilizarlo. Al querer programarlo con un cable tan largo, la señal de cable de datos llegó distorsionada al microcontrolador grabándome cualquier basura y desprogramando los fusibles. Buscando comodidad al momento de programación yo le había colocado un cable de más de 1 metro de largo, y éso era lo que estaba causándome problemas. Solucionarlo fue muy sencillo. Simplemente acorte el cable a menos de 30 cm de longitud y anduvo a la perfección. Ahora tenía un programador funcionando, pero varios microcontroladores que habían quedado con los fuses mal seteados y era imposible acceder a ellos. Programador de Alto Voltaje (HVP-High Voltage Programmer)Los microcontroladores AVR poseen 2 modos de programación. Con voltaje de funcionamiento (5V) y con alto voltaje, o voltaje de programación (12V). Jeff Keyzer diseño un programador de alto voltaje que funciona como shield de una Arduino. Recomiendo adquirir o fabricarse uno. http://www.mightyohm.com/blog/products/avr-hv-rescue-shield/ El esquemático de la primer versión del programador de Jeff es el siguiente: Básicamente lo que hace es alimentar al microcontrolador AVR con un voltaje de programación alto (12v) y utilizar un programa que previamente se carga en la arduino para comunicarse con el microcontrolador averiado y setearle los fuses de vuelta a su estado original. Yo construí la versión para placas preperforadas. La idea era fabricarla rápido para "sanar" a los micros que había desprogramado. En las fotos se ve un microcontrolador desprogramado junto al programador de alto voltaje. Primero debemos cargar el programa en la arduino. Bajar HVFUSE.PDE por MightyOhm. Luego colocamos el programador en la arduino. El programador HVP se alimenta con 12v, por eso tiene un conector propio. Iniciamos la arduino y esperamos que se encienda el led rojo. Luego colocamos el microcontrolador en el zócalo teniendo en cuenta de colocarlo en la orientación correcta. Por último presionamos el botón para iniciar la programación de los fuses a su estado original. El led se apagará durante el proceso. Cuando se vuelva a encender indica que el proceso ha finalizado. Ya tenemos el microcontrolador listo para ser programado nuevamente por ICSP, utilizando el programador DAPA o cualquier otro. |
| Última actualización el Miércoles 23 de Septiembre de 2009 09:09 |






