Realizzare uno shield Arduino per programmare i microcontrollori ATmega328P “vergini”, cioè privi di bootloader.
Il problema da risolvere
Il bootloader è necessario per poter utilizzare i microcontrollori con le schede Arduino. I microcontrollori acquistati separatamente - cioè non montati su una scheda Arduino - non contengono un bootloader e per essere utilizzati devono essere programmati con un programmatore (ad esempio l'AVRIPS della Atmel) e un software di sviluppo dedicato (ad esempio Atmel Studio). Per utilizzare gli ATmega328P vergini sulle schede Arduino e per poterli programmare con il suo ambiente di sviluppo è necessario scrivere il bootloader Arduino sul microcontrollore. Questa operazione, chiamata anche flash del bootloader, si può fare in più modi:
usando un programmatore
usando due schede Arduino (una come programmatore una come target)
usando una scheda ARduino come programmatore e una breadboard con il microcontrollore da programmare
usando una scheda ARduino come programmatore e uno shield che ospita il microcontrollore da programmare
L'ultima soluzione è l'obiettivo di questo progetto.
Una volta scritto il bootloader si può montare il microcontrollore sullo zoccolo di una scheda Arduino e utilizzarlo normalmente (o utilizzare la scheda solo per caricare un programma sul microcontrollore e poi spostarlo un una scheda elettronica custom).
Cosa fa il bootloader
Il bootloader è un programma - o meglio un firmware - contenuto nella memoria del microcontrollore che viene eseguito ogni volta che si alimenta o resetta il microcontrollore. Il bootloader:
controlla se si sta cercando di programmare il microcontrollore attraverso la porta seriale
in caso affermativo carica il nuovo programma in memoria e resetta il microcontrollore
altrimenti esegue il programma già contenuto in memoria
Lo shield ISP
Lo shield si basa sullo schema del tutorial ufficiale ma al posto della breadboard si vuole usare uno shield apposito.
E' sufficiente replicare i collegamenti conoscendo il pinout della scheda Arduino e dell'ATmega328 (mostrato in figura).
In particolare occorre collegare:
l'alimentazione 5V ai pin 7 e 20 dello zoccolo
la massa GND ai pin 8 e 22 dello zoccolo
i due terminali del quarzo ai pin 9 e 10 e a massa
collegare la resistenza di pull-up al pin 1 dello zoccolo e all'alimentazione 5V
pin D10 al pin 1 dello zoccolo
pin D11, D12, D13 ai pin 17, 18 e 19 dello zoccolo
Layout
In figura un primo tentativo di layout monofaccia.
Si vede che manca un collegamento (ratsnest gialla da GND superiore a inferiore), ma il collegamento è comunque presente sulla scheda Arduino Uno su cui lo shield va montato. Senza questo accorgimento bisogna ricorrere a una scheda a doppia faccia.
Bill of materials
zoccolo SDIP28
quarzo da 16Mhz
2 condensatori da 22 pF
resistenza di pull-up da 10 kΩ
connettori strip maschio-maschio
Come utilizzare lo shield
Inserire il chip ATmega328P vergine nello zoccolo e montare lo shield sulla scheda Arduino.
Utilizzando il software Arduino:
caricare nella scheda Arduino utilizzata come programmatore lo sketch ArduinoISP contenuto nella cartella Esempi
selezionare la porta seriale (COM) collegata alla scheda Arduino
selezionare il tipo di scheda da programmare (Arduino Uno), cioè il tipo di bootloader Arduino che si desidera caricare nel microcontrollore
selezionare il programmatore (Arduino as ISP nel menu Strumenti|Programmatore)
scrivere il bootloader sul microcontrollore montato nello shield selezionando Burn bootloader
selezionare nuovamente il programmatore “standard” (AVR ISP mkII) per utilizzare il software Arduino normalmente
Problemi/TODO
serve ancora il condensatore da 10 μF tra reset e GND nella scheda Arduino Uno usata come programmatore? (non serve nelle Arduino 2009, pare che non serva dall'IDE 1.0.x in poi, c'è una soluzione alternativa al limite)
Questo sito Web utilizza i cookie. Utilizzando il sito Web, l'utente accetta la memorizzazione dei cookie sul proprio computer. Inoltre riconosci di aver letto e compreso la nostra Informativa sulla privacy. Se non sei d'accordo, lascia il sito.Maggiori informazioni sui cookie
isp.txt · Ultima modifica: 2020/07/03 17:59 (modifica esterna)