Bootloader per ATMega328

Semplice schema per realizzare un programmatore di bootloader, che rende un ATMega328 compatibile con Arduino IDE.
Viene realizzato come semplce shield plug-in di un Arduino Uno (vedere Fig.1):

Fig.1

Da questo schema si può produrre un layout, per una realizzazione su schedina millefori, come in Fig.2:

Fig.2

e il risultato è mostrato in Fig.3:

Fig.3

PROGRAMMAZIONE

Sull'Arduino Uno, collegato al PC, si carica una volta per tutte lo sketch ArduinoISP(vedere Fig.4)

Fig.4

Il programmatore di bootloader è adesso pronto all'uso: per ogni programmazione (una procedura che dura solo qualche secondo), si procede come segue:

  • 1) aprire Arduino IDE
  • 2) collegare l'Arduino UNO di Fig.3  al PC, tramite la connessione USB
  • 3) selezionare in Strumenti/Programmatore l'opzione Arduino as ISP
  • 4) sul connettore 28DIP dello shield montare un ATMega328 vergine (cioè senza bootloader precaricato), avendo cura che il pin1 del componente sia posizionato come mostrato in Fig.3
  • 5) selezionare Strumenti/Scrivi il bootloader
  • 6) dopo pochi secondi l'operazione è terminata; rimuovere il componente programmato e ripetere i punti 4) e 5), per ogni componente vergine, su cui precaricare il bootloader
  • 7) a fine programmazione ripristinare in Strumenti/Programmatore l'opzione USBasp per la programmazione normale
Fig.5

TROUBLESHOOTING

Per alcune versioni di ATMega328, l'operazione descritta al punto 6 del paragrafo precedente può dare errori del tipo
avrdude: Yikes! Invalid device signature o similari.
In questi casi una soluzione può essere la seguente procedura:

  • uscire da Arduino IDE
  • andare nella directory Programmi/Arduino/hardware/tools/avr/etc/
  • copiare il file avrdude.conf e rinominarlo avrdude_orig.conf (per ogni evenienza)
  • con un editor di testo qualunque modificare la linea di testo: da signature = 0x1e 0x95 0x14; in signature = 0x1e 0x95 0x0F;
  • modificare una successiva linea di testo: da signature = 0x1e 0x95 0x0F; in signature = 0x1e 0x95 0x14
  • salvare il file modificato e ripetere la procedura di programmazione del bootloader