AVR AtTiny84 está atascado en un reloj de 128kHz, avrdude + Arduino ya que el ISP no puede alcanzarlo

3

Al experimentar con el consumo de energía de diferentes velocidades de reloj configurando bits de fusible, parece que programé irreversiblemente un chip ATTiny84 para el oscilador interno de 128 kHz, y ahora avrdude ya no puede establecer comunicación SPI con el chip.

He estado usando un Arduino Duemilanove para programar el chip, con el boceto "ArduinoISP".

Algunas líneas de comando de avrdude que he estado usando, si me ayudan - mis intentos vanos de volver a 1MHz:

avrdude -p t84 -C "C:\Program Files (x86)\arduino-1.0.4\hardware\tools\avr\etc\avrdude.conf" 
    -c stk500v1 -P COM7 -b 19200 -U lfuse:w:0x62:m -u

avrdude -p t84 -C "C:\Program Files (x86)\arduino-1.0.4\hardware\tools\avr\etc\avrdude.conf" 
    -c stk500v1 -P COM7 -b 19200 -U lfuse:w:0x62:m -u -B833 -i833

He intentado muchos retrasos diferentes en la configuración de -B y -i, desde 1 hasta 10000. La salida es:

avrdude: please define PAGEL and BS2 signals in the configuration file for part
ATtiny84
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
     Double check connections and try again, or use -F to override
     this check.


avrdude done.  Thank you.

Agregar la opción -F no ayuda, intenta programarse, pero la configuración del fusible no funciona.

¿He perdido este chip de $ 2.50 para siempre? :)

    
pregunta QuadrupleA

3 respuestas

3

OK: encontré una versión del boceto ArduinoISP que admite una opción de baja velocidad para la programación SPI:

enlace

Al definir la macro LOW_SPEED pude reprogramar los bits del fusible a la predeterminada de 1 MHz. Así que el problema resuelto.

    
respondido por el QuadrupleA
2

enlace

ArduinoISP slow SCK

Es una modificación del croquis Arduino ISP que permite que una menor frecuencia de SCK programe microcontroladores con relojes lentos, por ejemplo, usando el reloj de vigilancia dividido por 8.

Cuando el modo de programación comienza con ArduinoISP baja frecuencia usando el System Clock Prescaler.

Cuando finaliza el modo de programación, el reloj del sistema Prescaler se establece nuevamente en 1

    
respondido por el user38386
0

A veces me meto en esta situación cuando programo los Flash de una pieza y los fusibles de fusión por separado (AVR Studio 4 afirma que la firma de la pieza es incorrecta, por lo que no me permite usar el formato .elf).

He intentado reducir la frecuencia del reloj de programación lo más bajo posible y, como tú, no funciona. Lo que hace funciona es desoldar el cristal y reemplazarlo con un generador de impulsos configurado a 1MHz o lo suficiente para reprogramar los fusibles. Si no tiene un generador de funciones de sobremesa, debería ser rápido construir un generador de pulsos de cristal o R / C simple. Muchos esquemas en línea y es una herramienta útil para tener alrededor.

    
respondido por el lyndon

Lea otras preguntas en las etiquetas