Strumenti Utente

Strumenti Sito


isp

Shield ISP per Arduino

Finalità

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.

Arduino Uno per programmare un ATmega328P su breaboard

E' sufficiente replicare i collegamenti conoscendo il pinout della scheda Arduino e dell'ATmega328 (mostrato in figura).

pinout del microcontrollore ATmega328P

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.

primo layout dello shield ISP (singola faccia)

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)

Riferimenti

Torna all'indice.

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 15:59 da 127.0.0.1