🛠 Resusciter une Duemilanove sans bootloader : ICSP, fusibles et ATmegaBOOT

Arduino Duemilanove — Ficha de placa · avance · Schéma : IMG-duemilanove-avance-3-resusciter-bootloader-icsp-fuses.svg — Arduino Duemilanove avec la puce ATmega en plan éclaté, connecteur ICSP 2×3 relié à un programmateur USBtinyISP, terminal affichant des commandes avrdude de lecture des fusibles (low=0xFF, high=0xDA, extended=0xFD) et de réécriture du fichier ATmegaBOOT_168_atmega328.hex.

Objetivos

El bootloader ATmegaBOOT (protocolo STK500 original, 57600 baudios en 328 / 19200 en 168) puede desaparecer: fusibles modificados, borrado accidental, grabación fallida. La placa entonces no responde al IDE pero NO está muerta: el conector ICSP 2×3 da acceso directo al chip. Este tutorial es el procedimiento completo de resurrección documentado por el tutorial oficial «Programmer»: lectura de los fusibles, reescritura del HEX correcto del bootloader, verificación.

Material

Código completo

# 1) Brancher le programmateur sur l'ICSP de la Duemilanove (respecter
#    le sens du nappe : pin 1 = marque rouge, vers le RESET).

# 2) Lire les fusibles (USBtinyISP via avrisp ; 19200 est le debit ISP)
#    Attendu pour ATmega328 : low=0xFF high=0xDA extended=0xFD
avrdude -c usbtiny -p m328p -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h

# 3) Si les fusibles sont hors spec (ex. high=0xC9 : RESET coupe !),
#    les reprogrammer :
avrdude -c usbtiny -p m328p -U lfuse:w:0xFF:m -U hfuse:w:0xDA:m -U efuse:w:0xFD:m

# 4) Recrire le bootloader officiel (HEX du core, 2 Ko en fin de flash)
avrdude -c usbtiny -p m328p -U flash:w:ATmegaBOOT_168_atmega328.hex:i

# 5) Verifier la signature puis tester par le bootloader :
avrdude -c usbtiny -p m328p -n        # "Reading | ####... signature 0x1E950F"
# IDE : carte "Duemilanove or Diecimila / ATmega328" + Blink -> doit repasser

# Variante 168 : -p m168, fusibles high=0xDD extended=0xF8,
# HEX ATmegaBOOT_168.hex, upload a 19200 bauds.

Verificación esperada

La lectura de los fusibles devuelve low=0xFF, high=0xDA, extended=0xFD (328) — high=0xDD/extended=0xF8 para una 168. La firma leída es 0x1E950F (328) o 0x1E940B (168). Tras la reescritura del HEX, el Blink de prueba se carga normalmente por USB a 57600 baudios: el bootloader está vivo. El LED TX parpadea al abrir el puerto.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales