🛠 Récupérer un Micro bloqué : bootloader Caterina et rituel de l'upload
Objetivos
Comprender el ritual de carga del Micro (bootloader Caterina, protocolo AVR109) y saber recuperar una placa que ya no acepta ninguna carga: ventana de 1200 baudios, reinicio manual y, como último recurso, reprogramación del bootloader mediante ICSP.
Material
- 1 Arduino Micro (o Pro Micro 32U4) + cable micro-USB de datos
- Como último recurso: un programador ICSP (por ejemplo, otra placa Arduino como Arduino ISP) y un cable ISP de 6 pines
Código completo
// Sketch-minimal de controle apres recuperation : clignotement + amorce CDC.
// Apres un upload reussi, cette LED prouve que l'application tourne.
void setup {
pinMode(LED_BUILTIN, OUTPUT); // broche 13
Serial.begin(9600); // CDC USB
}
void loop {
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(200);
}
// Ritual d'upload Caterina :
// 1) L'IDE ouvre le port a 1200 bauds (upload.use_1200bps_touch) : le
// bootloader reste actif ~8 s puis redemarre sur l'application.
// 2) Si l'ouverture 1200 ne declenche rien : appuyer sur RESET juste
// apres l'affichage du message de televersement, dans la fenetre de 8 s.
// 3) En secours absolu : graver bootloaders/caterina/Caterina-Micro.hex
// via ICSP (arduino-cli ou IDE > Graver le bootloader).
Verificación esperada
Tras pulsar dos veces el botón de reinicio (o a 1200 baudios), el puerto USB desaparece y vuelve a aparecer con el PID del bootloader (0x8037 para 0x2341); la carga se completa y el sketch mínimo hace parpadear rápidamente el LED 13. En caso de reprogramación ICSP, el fusible y el bootloader se restauran y la carga vuelve a ser normal.
Errores frecuentes
- Iniciar la carga demasiado tarde después del reinicio: la ventana de Caterina solo dura aproximadamente 8 segundos.
- Creer que la placa está muerta cuando un sketch corta la conexión USB o espera a Serial: mantener pulsado el botón de reinicio mientras se conecta el cable y cargar inmediatamente después.
- Puerto incorrecto seleccionado: durante el reinicio, el número de puerto COM puede cambiar (dispositivo diferente).
- Escribir un sketch que desactive globalmente las interrupciones: Caterina puede perder el reloj de reinicio; el núcleo de Arduino gestiona el salto al bootloader, pero el código de bajo nivel debe ser cauteloso (ver issues #122/#218).
- Confundir los PIDs: 0x0037 = puerto de aplicación, 0x8037 = bootloader; el Genuino Micro utiliza el VID 0x2A03.
- Grabar un hex de Leonardo en un Micro: utilizar exclusivamente Caterina-Micro.hex.
Otros tutoriales para esta placa
- Faire clignoter la LED embarquée (et comprendre les LED TX/RX)
- Lire un bouton avec une résistance de pull-up interne
- Lire un capteur analogique sur le convertisseur 10 bits
- Transformer le Micro en clavier USB (HID) avec bouton de sécurité
- Pont Serial vers Serial1 : passerelle USB vers TTL
- Piloter un servo moteur avec le PWM et un potentiomètre
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinoclavier-auto-tape.inoArduinosouris-cercle.inoArduinotelecommande-media.inoArduinobouton-clic-souris.inoArduino