🛠 Graver Optiboot par ICSP : +1,5 Ko de flash et upload accéléré
Objetivos
El bootloader de fábrica de la Pro Mini (ATmegaBOOT, protocolo STK500 v1 a 57600 baudios) reserva 2 KB de flash: el sketch está limitado a 30 720 bytes. Optiboot ocupa solo 512 bytes — « only 512 bytes, freeing 1.5k of extra code space compared to older bootloaders » —, arranca inmediatamente tras la alimentación (fastboot) y admite velocidades de transmisión superiores; es explícitamente compatible con la línea Pro. Este bootloader se graba mediante ICSP (los pines SPI 10-13 + RESET aceptan un programador ISP) y se recuperan 32 256 bytes de flash, igual que en una Uno.
Material
- 1 × Arduino Pro Mini (ATmega328P; guarde primero los fusibles leídos: avrdude -v los muestra)
- 1 × programador ISP: otra tarjeta Arduino con el sketch ArduinoISP, o USBasp
- 6 × cables: MOSI→11, MISO→12, SCK→13, RESET→RESET, VCC, GND (alimente la Pro Mini, por ejemplo, a través de su regulador desde 5 V en RAW o directamente en VCC)
- IDE de Arduino con el core arduino:avr, o avrdude en línea de comandos
- >
Código completo
1. Cote MAITRE : televerser le sketch File > Examples > 11.ArduinoISP
> ArduinoISP, puis Tools > Programmer > « Arduino as ISP ».
2. Graver le bootloader via l'IDE (carte « Arduino Pro or Pro Mini »
+ CPU 5V/16MHz) : Tools > Burn Bootloader. L'IDE ecrit le
firmware, les fusibles et la signature en une passe.
3. Alternative avrdude manuelle (hex Optiboot telecharge) :
avrdude -c arduino -P COMx -b 19200 -p m328p -U lock:w:0x3F:m
puis ecriture de optiboot_atmega328.hex en flash, puis lock 0x0F.
(fusibles cristal 16 MHz : lfuse 0xFF, hfuse 0xDE ; l'efuse encode
la taille du bootloader — laissez l'IDE la choisir)
4. Verifier : avrdude -c arduino -P COMx -b 19200 -p m328p -v
l'efuse lu doit correspondre a un bootloader de 512 o (Optiboot)
et non 2 Ko (ATmegaBOOT).
Verificación esperada
Tras la grabación, una carga serie clásica vuelve a funcionar a través del conector de 6 pines (el perfil del IDE para Pro Mini sigue en 57600, una velocidad que Optiboot también admite). El tamaño máximo del sketch pasa de 30 720 a 32 256 bytes: un sketch que antes no cabía ahora compila correctamente. Al alimentar con batería, el sketch arranca sin el retardo del antiguo ATmegaBOOT (fastboot).
Errores frecuentes
- Grabar con el conjunto de fusibles incorrecto: un nivel BOD inadecuado o un reloj interno en lugar del cristal externo inutiliza la conexión serie y provoca bucles de arranque; grabe solo lo que el IDE o la ficha boards.txt especifica para pro16MHzatmega328.
- Olvidar desbloquear el lock (0x3F antes de grabar, 0x0F después): avrdude se niega a escribir en el flash, « chip is locked ».
- Confundir los dos menús del IDE: « Burn Bootloader » utiliza el programador ya configurado; el sketch ArduinoISP debe cargarse primero en la tarjeta maestra.
- Cruzar MOSI/MISO entre maestro y objetivo como si fuera una conexión serie: en ISP se cablea pin a pin, nunca en espejo — de lo contrario, « device not responding ».
- Creer que el perfil de 3,3 V/8 MHz es intercambiable: el modelo de 8 MHz tiene su propio hex Optiboot (pro_8MHz) y sus propios fusibles; el conjunto original de ATmega168 3,3 V selecciona incluso el oscilador RC interno (low_fuses=0xc6).
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-poussoir.inoArduinopwm-fade.inoArduinocapteur-lumiere-ldr.inoArduinoservo-balayage.inoArduinoruban-neopixel.inoArduino