Strumenti Utente

Strumenti Sito


isp
no way to compare when less than two revisions

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.


Ultima revisione
isp [2016/10/03 09:50] – creata admin
Linea 1: Linea 1:
 +====== 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'[[http://www.atmel.com/tools/AVRISPMKII.aspx|AVRIPS]] della Atmel) e un software di sviluppo dedicato (ad esempio [[http://www.atmel.com/tools/atmelstudio.aspx|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 [[https://www.arduino.cc/en/Tutorial/ArduinoISP|tutorial]] ufficiale ma al posto della breadboard si vuole usare uno shield apposito.
 +
 +{{:breadboardavr.png|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).
 +
 +{{::pinoutatmega328p.png|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.
 +
 +{{::ispshieldlayout.png|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 [[http://www.gammon.com.au/forum/?id=11635|soluzione alternativa]] al limite)
 +
 +
 +===== Riferimenti =====
 +
 +riferimenti: 
 +  * https://www.arduino.cc/en/Tutorial/ArduinoISP
 +  * https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader
 +
 +Definizioni:
 +  * ISP //in-system programmer//
 +  * bootloader
 +  * flash
 +
 +===== Navigazione =====
 +
 +Torna all'[[start#indice|indice]].
isp.txt · Ultima modifica: 2020/07/03 15:59 da 127.0.0.1