🛠 Réparer une UNO muette : 16U2, DFU et programmation ICSP

Arduino UNO R3 · avance · Schéma : IMG-uno-r3-avance-3-recuperation-usb-16u2-icsp.svg — UNO R3 avec zoom sur le connecteur ICSP 2×3 broches et la puce ATmega16U2, jump RESET-ATMEGA16U2, câble ISP entre deux cartes.

Objectifs

Redevenir maître de sa carte quand le téléversement échoue : comprendre les deux processeurs de l'UNO (l'ATmega328P applicatif avec son bootloader STK500/Optiboot, et l'ATmega16U2 qui fait le pont USB-série et possède son propre bootloader DFU), savoir rétablir l'un ou l'autre, et court-circuiter le bootloader par l'ICSP.

Matériel

Code complet

  1. Diagnostic — le 328P est-il vivant ? Un croquis déjà téléversé tourne-t-il ? (LED qui pulse = bootloader OK, problème côté port/IDE). 2) Programmation ICSP avec une seconde UNO comme ISP :
Câblage ISP (UNO programmateur -> UNO cible), broches identiques broche à broche :
  1 (MOSI)  -> 1 (MOSI)      2 (VCC 5V) -> 2 (VCC)
  3 (GND)   -> 3 (GND)       4 (MISO)   -> 4 (MISO)
  5 (SCK)   -> 5 (SCK)       6 (RESET)  -> 6 (RESET)
# Avec arduino-cli (une fois la carte cible « Arduino Uno » sélectionnée) :
arduino-cli core install arduino:avr
arduino-cli program --protocol arduino --board arduino:avr:uno firmware.hex

# Bootloader : « Graver la séquence d'initialisation » dans l'IDE, ou :
arduino-cli burn-bootloader -b arduino:avr:uno -p /dev/ttyACM0   # via ISP d'une carte ISP

# Si le port USB a disparu (16U2 bloqué par un reflash raté) :
# court-circuiter les deux broches du jump « RESET-ATMEGA16U2 » (à côté de la puce),
# brancher l'USB, puis flasher le firmware USB via DFU :
dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash atmega16u2-mk3-arduino-1.0.1.hex
dfu-programmer atmega16u2 reset

Vérification attendue

Après gravure du bootloader par ICSP : le 328P clignote à nouveau son bootloader (LED L en rythme rapide au démarrage) et le téléversement par USB refonctionne. Après reflash DFU du 16U2 : le port série réapparaît dans le gestionnaire de périphériques. Le test final : Blink téléversé, puis débrancher/rebrancher — la LED repart seule.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels