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

Arduino Duemilanove — Fiche carte · 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.

Objectifs

Le bootloader ATmegaBOOT (protocole STK500 d'origine, 57600 bauds sur 328 / 19200 sur 168) peut disparaître : fusibles modifiés, effacement accidentel, gravure ratée. La carte alors ne répond plus à l'IDE mais n'est PAS morte : le connecteur ICSP 2×3 donne accès direct au chip. Ce tuto est la procédure complète de résurrection documentée par le tutoriel officiel « Programmer » : lecture des fusibles, réécriture du bon HEX de bootloader, vérification.

Matériel

Code complet

# 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 débit 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.

Vérification attendue

La lecture des fusibles renvoie low=0xFF, high=0xDA, extended=0xFD (328) — high=0xDD/extended=0xF8 pour une 168. La signature lue est 0x1E950F (328) ou 0x1E940B (168). Après réécriture du HEX, le Blink de test se téléverse normalement par USB à 57600 bauds : le bootloader est vivant. La LED TX clignote à l'ouverture du port.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels