Mientras experimentaba con el consumo de energía de diferentes frecuencias 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 avrdude que he estado usando, si ayudan, mis vanos intentos 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 probado muchos retrasos diferentes en las configuraciones -B e -i, que van desde 1 us hasta 10000 us. 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 programar, pero la configuración del fusible no funciona.
¿He perdido este chip de $2.50 para siempre? :)
Bien, encontré una versión del boceto ArduinoISP que admite una opción de velocidad lenta para la programación SPI:
https://github.com/adafruit/ArduinoISP/blob/master/ArduinoISP.ino
Al definir la LOW_SPEED
macro, pude reprogramar los bits del fusible al valor predeterminado de 1 MHz. Así que problema resuelto.
LOW_SPEED
. ¡Gracias!https://github.com/lmpipaon/ArduinoISP_slow_SCK.git
ArduinoISP lento SCK
Es una modificación del boceto Arduino ISP que permite una frecuencia más baja de SCK para programar microcontroladores con relojes lentos, por ejemplo, usando el reloj de vigilancia dividido por 8.
Cuando ArduinoISP inicia el modo de programación de baja frecuencia utilizando el System Clock Prescaler.
Cuando finaliza el modo de programación, el Prescaler del reloj del sistema vuelve a establecerse en 1
A veces me encuentro en esta situación cuando estoy programando el Flash y los fusebits de una parte por separado (AVR Studio 4 afirma que la firma de la parte es incorrecta, por lo que no me permite usar el formato .elf).
He probado a bajar la frecuencia del reloj de programación lo más bajo posible y al igual que tú, no funciona. Lo que sí funciona es desoldar el cristal y reemplazarlo con un generador de pulsos ajustado a 1 MHz más o menos el tiempo suficiente para reprogramar los fusibles. Si no tiene un generador de funciones de sobremesa, debería ser rápido construir un R/C simple o un generador de pulsos de cristal. Muchos esquemas en línea y es una herramienta útil para tener a mano.
AndrejaKo
CuádrupleA
AndrejaKo