ATTiny85 no funciona después de grabar el gestor de arranque

Tengo un problema con mi ATTiny85. Debo mencionar que uso Arduino como ISP para programarlo.

Mi ATTiny funcionó bien hasta que decidí que necesitaba aumentar la velocidad del reloj de 1 MHz a 20 MHz, así que seleccioné ATTiny85 a 20 MHz en el menú Placas y luego hice clic en Herramientas> Grabar cargador de arranque. Pero eso fue una estupidez, ya que ahora mi ATTiny no funciona en absoluto. No puedo cargar bocetos en él y si lo intento me sale este mensaje:

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

Entonces, mi pregunta para usted sería, ¿hay alguna manera de restablecer lo que he hecho? O mejor aún, ¿para que funcione a 20 MHz?

¿Recuerdas los valores de fusible que configuraste? Es posible que todavía esté en la pantalla si se desplaza un poco hacia arriba. No puede configurar un ATtiny85 a 20 MHz con el oscilador interno, ¿conectó una fuente de reloj?
No, no conecté una fuente de reloj. Acabo de quemar el gestor de arranque con attiny de 20 MHz seleccionado como placa (y, por supuesto, con attiny conectado al arduino).
Tengo otro arduino, ¿hay alguna forma de restablecer los fusibles usándolo?
¿Por qué necesitarías otro Arduino? Como lo entiendo, bloqueaste tu ATtiny, no tu Arduino. El mensaje de error en su pregunta apunta en la misma dirección: Arduino está bien. Si tiene dudas sobre su Arduino, desconecte todo excepto el USB, luego programe el Blinkejemplo. Si eso funciona bien, puede volver a su ArduinoISP (creo que ese es el nombre del software de programación que estaba usando).
Sin conocer la configuración exacta del fusible que usó, no podemos estar seguros de lo que realmente hizo. Si, de hecho, configuró el reloj a 20 MHz, todo lo que necesita hacer es conectar una fuente de reloj externa, ya sea un cristal, un resonador o un pulso de otro circuito, siempre que la fuente de reloj externa sea de 20 MHz.
Solo para que conste (con respecto a electronics.stackexchange.com/questions/66721/… ) Quería preguntar si conectó una fuente de reloj después de la programación. Si mi corazonada es correcta, necesita un reloj externo para usar o reprogramar el dispositivo a partir de ese momento, hasta que logre restablecer los fusibles a sus valores predeterminados.
Ven a visitarnos en el chat mañana: chat.stackexchange.com/rooms/15/electrical-engineering
Votó a favor, por lo que tiene suficiente representante para ingresar al chat.

Respuestas (2)

Sospecho que ha configurado los fusibles del controlador para usar una fuente de reloj externa, ya que es imposible hacer que el oscilador interno funcione a 20 MHz. Puede dar nueva vida a su controlador conectando una señal de reloj al pin 2 CLKIe intentar restablecer el reloj a un reloj RC interno de 8 MHz.

En realidad, hay una versión 'fija' de ArduinoISP que tiene una salida de reloj en el pin digital 9. No probé esta salida de reloj yo mismo, pero vale la pena intentarlo. Entonces, además de las conexiones que ya tiene entre Arduino y ATtiny, conecte el pin digital 9 de Arduino al pin 2 de ATtiny85 (CLKI). Luego intente programar el reloj RC interno de 8MHz.

Si consulta el capítulo 6.2 de la hoja de datos 'Fuentes de reloj' para obtener más detalles.

Un método alternativo es usar un programador de alto voltaje, que se puede improvisar fácilmente usando un Arduino .

Por cierto: sucederá algo similar cuando seleccione una fuente de reloj RC <1 MHz , el reloj de su controlador en ese caso funcionará demasiado lento para el software ArduinoISP estándar.

¡Gracias! Así que necesito una fuente de alimentación de 12v para hacer esto (que actualmente no tengo). Veré qué puedo hacer para improvisar. ¿Hay algún problema si la fuente es un poco más de 12v?
@Calin ¿De qué "más de 12 V" estás hablando? Puede dañar el chip con bastante facilidad ... Se podrían usar un par de resistencias para reducir el voltaje a 12V. Vea esto: electronics.stackexchange.com/questions/25038/…
¡OK gracias! Lo intentaré mañana ya que ahora es casi medianoche. ¡Te mantendré informado!
Pruebe las opciones de fuente de reloj externo de mi respuesta antes de freír accidentalmente el controlador con un voltaje demasiado alto. La alta tensión debe estar entre 11,5 y 12,5 V (capítulo 20.7.1 de la ficha técnica).
¡Gracias! ¡La versión "fija" de ArduinoISP me ayudó a resolver mi problema! Cargué la versión fija en el Arduino, desconecté el Arduino y conecté el ATTiny normalmente pero con el pin 9 de Arduino conectado al pin 2 de ATTiny (como sugeriste). Después de eso, abrí el IDE de Arduino y seleccioné ATTiny85 (con un reloj interno de 8 MHz) como mi placa y ArduinoISP como programador. Hice clic en Herramientas>Grabar cargador de arranque y todo salió bien. Después de eso, volví a cargar el boceto ArduinoISP original del directorio de ejemplos y pude programar el ATTiny nuevamente usando mi Arduino como programador.

Como dijo @jippie, esto es simplemente una cuestión de aplicar una fuente de reloj externa (en realidad, no importa si la fuente de reloj es de 20 MHz o no, solo necesita alcanzar 1 MHz más o menos para administrar la velocidad de programación SPI de ArduinoISP).

Como alternativa a la versión de ArduinoISP mencionada anteriormente, puede probar ScratchMonkey , que además de la generación de reloj también hace software SPI para tratar otros problemas de reloj. A menos que haya logrado deshabilitar su pin de reinicio, no debería haber ninguna razón para recurrir a la programación de alto voltaje.