|

Articulos relacionados

En linea

Hay 57 invitados 

Iniciar sesion




Designed by:
SiteGround web hosting Joomla Templates
Programación de alto voltaje Imprimir Correo electrónico
Valoración de los usuarios: / 0
PobreEl mejor 
Escrito por Maxi Padulo   
Martes 08 de Septiembre de 2009 00:46

Resumen

HVP Shield y ATmega8 desprogramado

Los 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ón

Es 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 DAPA

Programador DAPA inicial

Para 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.

Error de grabación del ARDUINO IDE

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.

Programador DAPA modificado

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:

Esquemático HVP

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.

High Voltage Parallel Programer Shield HVP Shield y ATmega8 desprogramado

Primero debemos cargar el programa en la arduino. Bajar HVFUSE.PDE por MightyOhm.

Luego de subir un sketch

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.

High Voltage Parallel Programer & Arduino Colocando el HVP Shield en la Arduino

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.

Montando el chip y reprogramándolo

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
 

Escribir un comentario


Código de seguridad
Refescar