Cambié los bits del fusible del reloj en mi ATtiny85. Ahora no puedo flashear nada o incluso cambiar el fusible. me sale el error:
avrdude.exe: Device signature = 0x000000
avrdude.exe: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
El comando de línea de comando que usé para cambiar el fusible inicialmente fue:
avrdude -p attiny85 -P com8 -c stk500v1 -b 19200 -U lfuse:w:0x62:m -U flash:w:main.hex
Ahora entiendo que configuré el fusible del reloj para una señal de reloj oscilante, no para un cristal. Leí aquí que puedo suministrar la señal de reloj necesaria desde un stk500. Mi Arduino UNO funciona como programador (y en los argumentos de la línea de comando, en realidad le digo avrdude que es un stk500). ¿Cómo conecto/configuro UNO y ATtiny para suministrar la señal de reloj necesaria?
EDITAR
No estoy tratando de usar la programación paralela de alto voltaje. Solo quiero suministrar la señal de reloj externa que ahora espera el AVR para programarlo normalmente.
Tengo un segundo Arduino e intenté enviar una onda cuadrada de 16MHz al pin 2 (CLK1) del ATtiny85, usando el código en esta página . Sin embargo, cuando traté de programar el AVR con ambos Arduinos conectados (tanto el reloj como el programador), recibí el mismo error que antes. ¿Alguna idea de lo que está mal?
Los chicos de los foros de Arduino me ayudaron. Aparentemente, mi código no estaba creando PWM. De lo contrario, el concepto es sólido. Aquí está su respuesta y todos mis pasos.
En realidad, si el comando que ingresó es realmente el que usó, entonces no configuró el fusible para una fuente de reloj externa de ningún tipo. El byte de fusible bajo de 0x62 es la configuración de fusible predeterminada para el dispositivo ATtiny85 que utiliza el oscilador interno de 8 MHz. Puede verificar esto fácilmente en la hoja de datos o en este sitio web, que es una gran herramienta para descubrir los fusibles correctos:
http://www.engbedded.com/fusecalc
Normalmente definiría la frecuencia de MCU en MAKEFILE, pero no estoy seguro de cómo funciona eso con Arduino. Entonces, no necesitaría especificar la tasa de baudios (-b 19200) ya que esto lo resolverían el programador y AVRDUDE.
Si realmente ya no puede comunicarse con el dispositivo, es posible que deba usar un HVSP para restablecer los fusibles a los valores predeterminados. He construido uno para este propósito... no es tan difícil si sabes mucho sobre los dispositivos AVR. Aquí hay un sitio web que detalla algunos de los pasos:
Mirando la sección de fusibles de la hoja de datos, estos fusibles pueden interesarle:
CKOUT : emite el reloj de los dispositivos en el pin CLKO. Esto debería ser perfecto para suministrar al dispositivo dañado un reloj del Arduino en funcionamiento. Si aún hay problemas, intente proporcionar un reloj más lento (por ejemplo, 1 MHz)
RSTDISBL y SPIEN: le recomiendo que nunca toque estos fusibles; de lo contrario, necesitará una programación en serie de alto voltaje para recuperarse (estuvo allí)
AndrejaKo
Shungun
JellicleCat