¿Tengo que usar un reloj externo para la programación de ATmega ISP después de cambiar los bits del fusible?

Después de programar un microcontrolador ATmega a través de la interfaz ISP (SPI) y cambiar los bits de fusibles relacionados con el reloj , me gustaría volver a programarlo. ¿Tendré que conectarlo a un reloj externo ahora para hacerlo, o siempre podré programarlo cronometrando solo a través de la línea SCLK de SPI, sin reloj externo (como en la imagen a continuación)?

(en la imagen de abajo, el programador es una Raspberry Pi)

Respuestas (2)

Hmh, encontré una respuesta a otra pregunta similar :

No necesita ningún circuito de cristal para programar un AVR en blanco fuera de la línea (ya que salen del oscilador interno), pero si intenta reprogramar un chip que está fusionado para un cristal externo, necesitará un cristal comparable y cargue capacitores en el circuito (a menos que use un modo de programación de alto voltaje).

así que por ahora entiendo que la respuesta es que no puedo usar el circuito simple anterior después de cambiar los bits del fusible, tengo que extenderlo con un reloj que coincida con la configuración de los bits del fusible.

Eso es correcto.
Incluso en el modo de oscilador (donde se espera un cristal), puede alimentar un reloj digital simple en el pin XIN. Realmente no necesitas encontrar un cristal a juego.

Depende de en qué establezca los bits de fusible de la fuente del reloj. La configuración predeterminada suele funcionar con un oscilador interno de 8 MHz dividido en 1 MHz; otras configuraciones incluyen un reloj externo (normalmente en el pin XTAL1) y varios modos de cristal (con un resonador de cristal en XTAL1 y XTAL2). En cada uno de estos modos, se admiten velocidades de reloj hasta CC, por lo que el chip se congelará efectivamente si no recibe una entrada de reloj. Sin embargo, en el modo de oscilador, XTAL2 es esencialmente una amplificación invertida de la entrada XTAL1 solo para hacer que el resonador oscile y, por lo tanto, podría simplemente alimentar un reloj en XTAL1 en todos los casos. Simplemente se ignorará si se utiliza el oscilador interno.

Las dos combinaciones que causan problemas son:

  1. Si actualmente no está programando el chip y se ejecuta desde un oscilador interno, podría configurar el pin XTAL1 como una salida. Si también lo está manejando externamente, este conflicto puede freír los búferes de E/S.
  2. La velocidad del reloj en el AVR debe ser más rápida que el reloj SPI. Esto puede significar que la entrada XTAL1 debe ser considerablemente más rápida (por ejemplo, hasta 3*512 veces en un ATmega644).
El problema 1 se puede resolver usando una resistencia en serie entre su oscilador y el chip, 1K probablemente sería una buena opción.