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

8

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 1MHz a 20MHz, así que seleccioné ATTiny85 a 20MHz en el menú Tableros y luego hice clic en Herramientas> Grabar cargador de arranque. Pero eso fue estúpido, ya que ahora mi ATTiny no funciona en absoluto. No puedo cargar bocetos y, si lo intento, aparece 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 incluso mejor, para que funcione a 20MHz?

Calin
fuente
2
¿Recuerdas los valores de fusibles que estableciste? Todavía puede estar en la pantalla si te desplazas un poco hacia arriba. No puede configurar un ATtiny85 a 20MHz con el oscilador interno, ¿conectó una fuente de reloj?
jippie
No, no conecté una fuente de reloj. Acabo de quemar el gestor de arranque con 20 mhz attiny seleccionado como placa (y, por supuesto, con el attiny conectado al arduino).
Calin
Tengo otro arduino, ¿hay alguna manera de restablecer los fusibles que lo usan?
Calin
¿Por qué necesitarías otro Arduino? Como entiendo, bloqueaste tu ATtiny, no tu Arduino. El mensaje de error en su pregunta apunta en la misma dirección: el Arduino está bien. Si tiene dudas sobre su Arduino, desconecte todo excepto USB, luego programe el Blinkejemplo. Si eso funciona bien, puede volver a su ArduinoISP (creo que ese es el nombre del software del programador que estaba usando).
jippie
2
Sin conocer la configuración exacta de fusibles que usó, no podemos estar seguros de lo que realmente hizo. Si, de hecho, configuró el reloj para 20MHz, todo lo que necesita hacer es conectar una fuente de reloj externa, ya sea un cristal, resonador o pulso de otro circuito, siempre que la fuente de reloj externa sea de 20MHz.
Kurt E. Clothier

Respuestas:

10

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 20MHz. Puede darle una nueva vida a su controlador conectando una señal de reloj al pin 2 CLKIe intente restablecer el reloj al reloj RC interno de 8MHz.

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 revisa la hoja de datos del capítulo 6.2 'Fuentes de reloj' para más detalles.

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

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

jippie
fuente
¡Gracias! Entonces 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
@Calin ¿De qué "más de 12V" estás hablando? Puede dañar el chip con bastante facilidad ... Se podrían usar un par de resistencias para bajar el voltaje a 12V. Vea esto: electronics.stackexchange.com/questions/25038/…
Kurt E. Clothier el
¡OK gracias! Lo intentaré mañana ya que es casi medianoche. ¡Te mantendré informado!
Calin
Pruebe las opciones de fuente de reloj externo de mi respuesta antes de freír accidentalmente el controlador con un voltaje demasiado alto. El alto voltaje debe estar entre 11.5 y 12.5V (capítulo 20.7.1 en la hoja de datos).
jippie
1
¡Gracias! ¡La versión "fija" del ArduinoISP me ayudó a resolver mi problema! Subí la versión fija en el Arduino, desconecté el Arduino y conecté el ATTiny de manera normal, pero con el pin 9 de Arduino conectado al pin 2 de ATTiny (como sugirió). Después de eso abrí el Arduino IDE y seleccioné ATTiny85 (con reloj interno de 8MHz) como mi placa y ArduinoISP como Programador. Hice clic en Herramientas> Burn Bootloader y todo salió bien. Después de eso volví a cargar el boceto original de ArduinoISP del directorio de ejemplos y pude programar el ATTiny nuevamente usando mi Arduino como programador.
Calin
5

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

Como alternativa a la versión ArduinoISP mencionada anteriormente, puede probar ScratchMonkey , que además de la generación de reloj también hace SPI de software 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.

microtherion
fuente