🛠 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.

Objetivos

Recuperar el control de tu placa cuando la carga del programa falla: comprender los dos procesadores del UNO (el ATmega328P de aplicación con su bootloader STK500/Optiboot, y el ATmega16U2 que actúa como puente USB-serie y posee su propio bootloader DFU), saber restablecer uno u otro, y saltarse el bootloader mediante ICSP.

Material

Código completo

  1. Diagnóstico — ¿está vivo el 328P? ¿Se ejecuta un sketch ya cargado? (LED parpadeante = bootloader OK, problema del lado del puerto/IDE). 2) Programación ICSP con un segundo UNO como 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

Verificación esperada

Tras grabar el bootloader por ICSP: el 328P vuelve a parpadear su bootloader (LED L a ritmo rápido al arrancar) y la carga por USB vuelve a funcionar. Tras regrabar el 16U2 por DFU: el puerto serie reaparece en el administrador de dispositivos. La prueba final: cargar Blink, luego desconectar/reconectar — el LED vuelve a funcionar solo.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales