🛠 Arduino as ISP : programmer un autre ATmega328P
Objectifs
Utiliser le Nano classique comme programmateur ISP (« Arduino as ISP ») pour graver le bootloader ou un binaire directement dans un second ATmega328P : on court-circuite le bootloader de la carte maître via le connecteur ICSP 6 broches situé en haut de la carte. C'est la voie de secours quand un bootloader est perdu, et le premier pas vers l'ATmega328P nu sur breadboard.
Matériel
- 1 × Arduino Nano classique (maître programmateur)
- 1 × ATmega328P (ou 328P nu pré-programmé) + quartz 16 MHz + 2 céramiques 22 pF + résistance 10 kΩ sur RESET (cible)
- 6 × câbles pour la liaison ICSP vers ICSP ; alimenter la cible en 5 V
- >
Code complet
1. Cote MAITRE (Nano) : Televerser le croquis File > Examples >
11.ArduinoISP > ArduinoISP (le sketch, PAS l'option « Burn the
bootloader » qui suppose un programmateur deja branche).
2. Cabler ICSP maitre -> ICSP cible : MOSI-MOSI, MISO-MISO,
SCK-SCK, RESET-RESET, VCC-VCC, GND-GND.
3. Cote IDE : Tools > Programmer > « Arduino as ISP ».
4. Graver les fusibles puis le bootloader :
avrdude -c arduino -P COMx -b 19200 -p m328p -U flash:w:optiboot_atmega328.hex
ou via l'IDE : Sketch > Upload Using Programmer, puis
Tools > Burn Bootloader (choisir « Arduino as ISP (Nano) » si
l'option dediee existe, sinon le speedo du sketch ArduinoISP).
Vérification attendue
avrdude ou l'IDE répondent « Connecting......done » puis lisent les signatures du ATmega328P (0x1E 0x95 0x0F). Après gravure du bootloader, la cible se comporte comme un Nano classique : le téléversement série refonctionne sur la carte gravée. Les fusibles lus (lfuse 0xFF, hfuse 0xDE) confirment le mode cristal pleine fréquence.
Erreurs fréquentes
- Oublier de sélectionner « Arduino as ISP » comme programmateur : l'IDE continue de parler au bootloader série du maître et échoue au handshake.
- MISO/MOSI croisés entre maître et cible : « device not responding » permanent ; recâbler broche à broche, jamais en miroir.
- Cible sans horloge (fusibles par défaut sur un chip neuf, oscillateur interne divisé) : graver d'abord les fusibles internes si le quartz n'est pas encore câblé.
- Confondre les deux options de menu : « Burn Bootloader » utilise le programmateur déjà configuré, alors que le sketch ArduinoISP doit d'abord être téléversé sur le maître.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
buzzer-melodie.inoArduinoservo-sweep.inoArduinoultrason-hcsr04.inoArduinolcd-i2c.inoArduinoeeprom-contre.inoArduinosommeil-watchdog.inoArduino