¿El pin de reinicio de Atmega328 no funciona después de volver a grabar el cargador de arranque Arduino?

Para obtener un poco de información, es posible que desee leer

¿ATmega328 con Optiboot no es compatible con Arduino?

Pero voy a resumir de todos modos. Tengo algunos chips Atmega328 que se enviaron con el gestor de arranque optiboot grabado en ellos y que parecían dañados. Para que los chips funcionaran, compré y usé un USBASP y volví a grabar el gestor de arranque. El proceso funciona bien y los chips se reinician y ejecutan el boceto parpadeante sin problemas, pero cuando tiro del pin de reinicio a tierra, el chip no parece reiniciarse y ejecutar el cargador Arduino. Mientras el pin de reinicio se mantenga en el suelo, el boceto dejará de ejecutarse y, cuando se suelte, el boceto parpadeante comenzará sin demora.

Si conecta el pin de reinicio a DTR de mi USB-TTL, el boceto dejará de ejecutarse cuando intente cargar un boceto a través del IDE de Arduino y luego falle la carga con un error de no conexión. Usando el USBASP puedo volver a grabar el cargador de arranque y parece reiniciarse correctamente

El reinicio funcionó antes de volver a grabar el cargador de arranque. Los circuitos de reinicio que uso funcionan en los chips atmega168 que tengo.

Para los cargadores de arranque, he intentado flashear el chip para usar el reloj interno http://arduino.cc/en/Tutorial/ArduinoToBreadboard y como lilypad y duemilanove, pero el pin de reinicio todavía no parece funcionar correctamente.

También usé el software que vino con el USPASP y leí los bits de fusible y bloqueo y los fusibles alto/bajo se ven bien, no estoy seguro acerca de los bits extendidos y de bloqueo.

Chip lee; Bajo= E2, Alto= DA, Ext= FD, Bloqueo=CF

tablero.txt lee;

atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05
atmega328bb.bootloader.path=arduino:atmega
atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader. bloquear_bits=0x0F

Respuestas (2)

Hay un fusible en los AVR llamado RSTDISBL, que desactiva la funcionalidad del pin de reinicio y le permite usarlo como un pin de E/S normal. Si programa este fusible, los reinicios obviamente no funcionarán y no podrá programar el chip a través del ISP. Esto también significa que no puede desprogramar el fusible mediante métodos normales.

Si este es el caso, puede desprogramar este fusible a través de la Programación de alto voltaje. Si tiene una placa AVR Dragon a mano, puede hacerlo fácilmente conectando los pines correctos en el encabezado HVSP a su chip. Sin embargo, tenga cuidado si está haciendo esto en el circuito, ya que las opciones de programación de alto voltaje usan 12 voltios, lo que puede freír el resto de su circuito. Lo mejor es programarlo exclusivamente en el dragón a través de un zócalo ZIF o similar.

Aquí hay un video de Atmel sobre cómo desprogramar el fusible a través de la programación en paralelo de alto voltaje: http://www.youtube.com/watch?v=32CkOkpOcSc

Si bien la descripción de RSTDISBL es correcta, no se aplica aquí: si RSTDISBL estuviera activo, el bit 0x80 del byte de fusible alto sería 0 y se muestra como 1 arriba. Además, el comportamiento descrito cuando se baja RESET demuestra claramente que RESET está habilitado.

Este es un problema de fusibles. El pin de reinicio probablemente esté apagado por una configuración incorrecta del fusible. Google "calculadora de fusibles" para obtener ayuda, o consulte la hoja de datos.