ATMega644PA posiblemente bloqueado al establecer fusibles con avrdude

2

He estado programando un ATMega644PA con avr-gcc y avrdude en linux por un tiempo sin problemas. Bueno hasta que decidí cambiar algunos fusibles. Había estado usando la opción para avrdude -p ATMEGA644P para programar el chip a pesar de que el chip es ATMega644P A .

Después de leer la hoja de datos (y leer los fusibles en el chip) hice lo siguiente

avrdude -v -c avrispmkII -p ATMEGA644P -P usb -U lfuse:w:0x63:m

El chip ya no se comunicaría. Después de eso me di cuenta de que el problema puede haber sido que configuré los bits para el reloj externo en lugar del oscilador de cristal, pero incluso con el uso de un ATTiny para generar una señal de 1 MHz al pin apropiado en mi Mega644, todavía no obtengo nada.

¿Alguna idea de por qué el chip no responde? ¿Podría ser que la causa sea la definición de avrdude para la versión P del chip en lugar de la versión PA?

Y finalmente, ¿qué puedo hacer para rescatar mi chip? He oído que puede ser posible con la programación de alto voltaje o JTAG. ¿Sería capaz de hacer eso con un STK500?

    
pregunta C-o-r-E

1 respuesta

5

No, su configuración 0x63 en el byte lfuse ha seleccionado el oscilador interno de 128 kHz como la fuente del reloj. (los bytes 3..0 son CKSEL, consulte la tabla 7.1 en la página 28 de hoja de datos de ATmega644 donde 0011 es 'Oscilador RC interno de 128 kHz'). Esto es agradable y de baja potencia, pero significa que es probable que su programador no se desplace lo suficientemente lento como para programar su dispositivo. No estoy familiarizado con avrdude ni con el STK500, pero aquí es de donde viene su problema.

Sin embargo, será difícil para usted bloquear su chip, ya que tiene el STK500, que puede realizar la programación de alto voltaje y rescatarlo de la mayoría de las situaciones. Como nunca he usado el dispositivo, haré referencia a muchos otro hilos donde otros han publicado problemas y soluciones para la configuración de fusibles AVR. También hay uno aquí en Chiphacker (ver mi comentario).

La próxima vez, esta calculadora de configuración de fusibles es un buen recurso. Es fantástico que lea la hoja de datos e intente calcular lo que desea, pero la herramienta lo hace mucho más fácil.

Por cierto, ¿a qué se fijaron los fusibles antes de realizar el cambio?

Editar: Parece que la opción 'A' solo indica que no es miembro de la serie "* P * ico Power", por lo que no debería hacer una diferencia.

    
respondido por el Kevin Vermeer

Lea otras preguntas en las etiquetas