🛠 Arduino as ISP : programmer un autre ATmega328P
Objetivos
Utilizar el Nano clásico como programador ISP («Arduino as ISP») para grabar el bootloader o un binario directamente en un segundo ATmega328P: se anula el bootloader de la placa maestra a través del conector ICSP de 6 pines situado en la parte superior de la placa. Es la vía de rescate cuando se pierde un bootloader, y el primer paso hacia el ATmega328P desnudo en una protoboard.
Material
- 1 × Arduino Nano clásico (programador maestro)
- 1 × ATmega328P (o 328P desnudo preprogramado) + cristal de 16 MHz + 2 condensadores cerámicos de 22 pF + resistencia de 10 kΩ en RESET (objetivo)
- 6 × cables para la conexión ICSP a ICSP; alimentar el objetivo con 5 V
- >
Código completo
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).
Verificación esperada
avrdude o el IDE responden «Connecting......done» y luego leen las firmas del ATmega328P (0x1E 0x95 0x0F). Después de grabar el bootloader, el objetivo se comporta como un Nano clásico: la carga por puerto serie vuelve a funcionar en la placa grabada. Los fusibles leídos (lfuse 0xFF, hfuse 0xDE) confirman el modo de cristal a plena frecuencia.
Errores frecuentes
- Olvidar seleccionar «Arduino as ISP» como programador: el IDE sigue hablando con el bootloader serie del maestro y falla en el handshake.
- MISO/MOSI cruzados entre maestro y objetivo: «device not responding» permanente; recablear pin a pin, nunca en espejo.
- Objetivo sin reloj (fusibles por defecto en un chip nuevo, oscilador interno dividido): grabar primero los fusibles internos si el cristal aún no está conectado.
- Confundir las dos opciones del menú: «Burn Bootloader» utiliza el programador ya configurado, mientras que el sketch ArduinoISP debe cargarse primero en el maestro.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
buzzer-melodie.inoArduinoservo-sweep.inoArduinoultrason-hcsr04.inoArduinolcd-i2c.inoArduinoeeprom-contre.inoArduinosommeil-watchdog.inoArduino