Ahora, sé lo que estás pensando. Yo también lo he estado pensando toda la noche.
Sí, sé que con el diminuto fusionado para un cristal de 32 kHz necesitaré que el reloj SPI sea de 8 kHz o menos. Incluso eso, sin embargo, parece no estar funcionando.
Empecé con una placa de trabajo que tenía un cristal de 4 MHz y fusibles divididos por 8. Primero usé un USBTiny para restablecer los fusibles a los valores predeterminados usando avrdude (62 DF FF). Luego quité el cristal y sus capacitores de carga y coloqué un cristal de 32 kHz 12.5 pF en su lugar. Luego usé el mismo USBTiny para configurar los fusibles en E6 DF FF. Y eso es todo lo que escribió.
Con un alcance, puedo mirar los pines xtal y puedo ver 32 kHz. Así que sospecho que el reloj está corriendo.
Sabía que agregaría -B a la línea de comando avrdude. Antes de comenzar con todo esto, experimenté con varios valores de -B y una lectura flash. Efectivamente, la alteración de -B hizo que la lectura flash sucediera más rápido o más lento.
Pero he intentado agregar valores -B hasta 250 (lo que leí en esta página debería dar como resultado un reloj SPI de 4 kHz). Nada. Intenté usar al menos 6 versiones diferentes del concepto AVR-as-ISP-pero-ralentizado con un Arduino Uno. Ninguno de ellos trabaja. Todos funcionan con una versión sin modificar del dispositivo con el que comencé (con su cristal de 4 MHz y fusible original), por lo que estoy seguro de que el cableado es correcto.
¿Qué más podría ser?
Me lo imaginé.
Los cambios de fusibles no borran el flash. El boceto anterior comenzó con la configuración del preescalador del reloj del sistema para dividir por 8. El preescalador de reloj sobrevive a RESET.
La solución fue atar temporalmente RESET bajo. De esa manera, tuve la oportunidad de conectar el programador y encenderlo sin que tuviera lugar la configuración del preescalador. Subí un nuevo boceto sin el escalado previo y ahora funciona.
yippie
nsayer
chris stratton
nsayer
yippie