Strumenti Utente

Strumenti Sito


isp

Differenze

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

Link a questa pagina di confronto

isp [2016/10/03 11:50] (versione attuale)
admin creata
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: 2016/10/03 11:50 da admin