<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programmatore AVR Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/programmatore-avr/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/programmatore-avr/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sun, 15 Jan 2017 17:12:59 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://logicaprogrammabile.it/wp-content/uploads/2017/11/cropped-logicaprogrammabile-logo-02-32x32.png</url>
	<title>Programmatore AVR Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/programmatore-avr/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Arduino UNO bootloader su un nuovo chip ATMEGA328</title>
		<link>https://logicaprogrammabile.it/arduino-bootloader-atmega328/</link>
					<comments>https://logicaprogrammabile.it/arduino-bootloader-atmega328/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Fri, 29 Jul 2011 09:50:52 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[ArduinoISP]]></category>
		<category><![CDATA[ATMEGA328]]></category>
		<category><![CDATA[Bootloader]]></category>
		<category><![CDATA[Programmatore AVR]]></category>
		<category><![CDATA[SPI]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=1767</guid>

					<description><![CDATA[<p>Procedura per caricare il bootloader su un chip vergine. La cosa che apprezzo maggiormente di Arduino è la possibilità di realizzare una propria compatible-board. Questo permette di creare soluzioni integrate che si adattano meglio alle proprie esigenze di sviluppo e di implementazione. Una volta realizzato...</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-bootloader-atmega328/">Arduino UNO bootloader su un nuovo chip ATMEGA328</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Procedura per caricare il bootloader su un chip vergine.</h1>
<p>La cosa che apprezzo maggiormente di <strong>Arduino</strong> è la possibilità di realizzare una propria compatible-board. Questo permette di creare soluzioni integrate che si adattano meglio alle proprie esigenze di sviluppo e di implementazione.<br />
Una volta realizzato un prototipo funzionante con la board ufficiale possiamo rimuovere il chip Atmel per adattarlo su una nostra scheda.</p>
<p>Per realizzare questo lavoro è sufficiente acquistare degli <strong>Atmega328P-PU</strong> vergini, caricare il <strong>bootloader</strong>, lo sketch e montare tutto sulla scheda dedicata.</p>
<p>Per poter programmare i nuovi chip con gli sketch è necessario prima di tutto caricare il bootloader al loro interno, questa procedura solitamente viene eseguita tramite un programmatore dedicato che costa qualche decina di euro.</p>
<p>Fortunatamente esiste una tecnica che permette di utilizzare la nostra board Arduino UNO per programmare il nuovo chip. Sul web sono presenti molti esempi che illustrano i collegamenti e spiegano come caricare il bootloader, quasi tutti in lingua inglese; ho deciso, quindi, di scrivere questo articolo per dare la possibilità, soprattutto per i neofiti, di imparare questa utile tecnica.</p>
<p><span id="more-1767"></span>Prima di iniziare dobbiamo realizzare il circuito seguente:</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-2600" title="Uno_BootLoad1" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Uno_BootLoad1.gif" alt="" width="414" height="296" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Uno_BootLoad1.gif 414w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/Uno_BootLoad1-300x214.gif 300w" sizes="(max-width: 414px) 100vw, 414px" /></p>
<p>La tabella seguente riassume i collegamenti tra l&#8217;Arduino UNO e il chip ATMEGA328</p>
<table>
<tbody>
<tr>
<td>Arduino UNO</td>
<td>Chip vergine ATMEGA328</td>
</tr>
<tr>
<td>Pin 5V</td>
<td>da collegare ai pin 7 e pin 20</td>
</tr>
<tr>
<td>Pin GND</td>
<td>da collegare ai pin 8 e pin 22</td>
</tr>
<tr>
<td>Pin 10</td>
<td>da collegare al pin 1</td>
</tr>
<tr>
<td>Pin 11</td>
<td>da collegare al pin 17</td>
</tr>
<tr>
<td>Pin 12</td>
<td>da collegare al pin 18</td>
</tr>
<tr>
<td>Pin 13</td>
<td>da collegare al pin 19</td>
</tr>
</tbody>
</table>
<p>Inoltre il pin1 del nuovo chip deve essere collegato alla +5Vdc tramite una resistenza da 10Kohm. I pin 9 e 10 devono essere collegati al quarzo da 16Mhz e ai due condensatori ceramici.</p>
<p>Lo schema proposto utilizza il canale SPI per caricare il bootloader nel chip vergine. Via software è necessario predisporre l&#8217;Arduino UNO in modo che funga da programmatore.<br />
Non dobbiamo inventare niente, è sufficiente caricare lo sketch <strong>ArduinoISP</strong> presente nel menu <span style="text-decoration: underline;">File-&gt;Examples</span> dell&#8217;ambiente di sviluppo.</p>
<p><img decoding="async" class="aligncenter wp-image-1783 size-full" title="Sketch Arduino ISP" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/ArduinoISP.jpg" alt="Caricare programma Arduino ISP" width="499" height="598" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/ArduinoISP.jpg 499w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/ArduinoISP-250x300.jpg 250w" sizes="(max-width: 499px) 100vw, 499px" /></p>
<p>Ora carichiamo lo sketch sul nostro Arduino UNO utilizzando il pulsante upload e attendiamo il messaggio di conferma</p>
<p><img decoding="async" class="aligncenter wp-image-1785 size-full" title="Upload ArduinoISP" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Upload.jpg" alt="Procedura per caricare il bootloader Arduino" width="499" height="252" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Upload.jpg 499w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/Upload-300x151.jpg 300w" sizes="(max-width: 499px) 100vw, 499px" /></p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Uploading1.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1788" title="Uploading bootloader" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Uploading1.jpg" alt="Fase di caricamento dello sketch" width="498" height="75" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Uploading1.jpg 498w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/Uploading1-300x45.jpg 300w" sizes="auto, (max-width: 498px) 100vw, 498px" /></a></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1789 size-full" title="Caricamento sketch ultimato" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/UploadDone1.jpg" alt="caricamento ArduinoISP ultimato" width="498" height="156" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/UploadDone1.jpg 498w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/UploadDone1-300x93.jpg 300w" sizes="auto, (max-width: 498px) 100vw, 498px" /></p>
<p>A questo punto si potrebbero caricare sul nuovo chip diversi bootloader, a seconda del tipo di board che intendiamo realizzare (l&#8217;unica raccomandazione è comunque utilizzare una board compatibile col chip ATMEGA328).<br />
A noi, per ora, ci interessa caricare il bootloader dell&#8217;Arduino UNO, quindi dal menu <span style="text-decoration: underline;">Tools-&gt;Board</span> selezioniamo <strong>Arduino UNO</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1792 size-full" title="Seleziona tipo scheda" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/SelectBoard.jpg" alt="Seleziona la scheda Arduino UNO" width="618" height="482" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/SelectBoard.jpg 618w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/SelectBoard-300x233.jpg 300w" sizes="auto, (max-width: 618px) 100vw, 618px" /></p>
<p>Non ci resta che avviare l&#8217;operazione tramite il menu <span style="text-decoration: underline;">Tools-&gt;Burn Bootloader-&gt; w/ Arduino as ISP</span></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1794 size-full" title="Burn Bootloader" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/BurnBootloader.jpg" alt="Caricamento bootloader tramite ISP" width="500" height="371" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/BurnBootloader.jpg 500w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/BurnBootloader-300x222.jpg 300w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>La scrittura del bootloader richiede qualche minuto. Durante l&#8217;operazione i led <strong>L</strong>, <strong>TX</strong> e <strong>RX</strong> sulla board <strong>Arduino Uno</strong> lampeggiano costantemente e si spengono solo quando la scrittura è completata.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1795 size-full" title="Burning Bootloader" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/BurningBootloader.jpg" alt="Fase di scrittura del bootloader" width="499" height="119" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/BurningBootloader.jpg 499w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/BurningBootloader-300x71.jpg 300w" sizes="auto, (max-width: 499px) 100vw, 499px" /></p>
<p>dopo qualche minuto l&#8217;editor mostrerà un messaggio dell&#8217;avvenuta scrittura del bootloader</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1797 size-full" title="Burn Bootloader Done" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/BurnBootloaderDone.jpg" alt="scritura bootloader eseguita con successo" width="502" height="88" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/BurnBootloaderDone.jpg 502w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/BurnBootloaderDone-300x52.jpg 300w" sizes="auto, (max-width: 502px) 100vw, 502px" /></p>
<p>Su diversi blog ho letto che questa operazione potrebbe concludersi con l&#8217;errore <strong>avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51.<br />
</strong>Ciò può dipendere da errori di connessione risolvibili controllando la corretta porta dove è collegato l&#8217;Arduino (Tools-&gt;Serial Port) o scollegando e ricollegando il cavo usb.</p>
<p>Se il problema persiste questo può allora dipendere all&#8217;autoreset dell&#8217;Arduino UNO. Per risolverlo è sufficiente modificare lo schema elettrico aggiungendo una resistenza da 120 Ohm e un condensatore da 10microF che hanno il compito di disabilitare l&#8217;autoreset. Ecco lo schema:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1801 size-full" title="Disable Autoreset Arduino Uno" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Uno_BootLoadMOD.gif" alt="Disabilitare autoreset Arduino UNO" width="414" height="296" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Uno_BootLoadMOD.gif 414w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/Uno_BootLoadMOD-300x214.gif 300w" sizes="auto, (max-width: 414px) 100vw, 414px" /></p>
<p>Ultimati i collegamenti eseguiamo nuovamente la procedura per il caricamento del bootloader.</p>
<p>Ora che il nuovo chip è dotato di bootloader possiamo montarlo sulla board Arduino Uno per programmarlo con gli sketch di esempio e verificare che tutto funziona regolarmente.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1809 size-full" title="Esperimento Arduino ISP" src="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Scheda.jpg" alt="Arduino ISP" width="450" height="337" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/07/Scheda.jpg 450w, https://logicaprogrammabile.it/wp-content/uploads/2011/07/Scheda-300x224.jpg 300w" sizes="auto, (max-width: 450px) 100vw, 450px" /></p>
<p>&nbsp;</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-bootloader-atmega328/">Arduino UNO bootloader su un nuovo chip ATMEGA328</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/arduino-bootloader-atmega328/feed/</wfw:commentRss>
			<slash:comments>26</slash:comments>
		
		
			</item>
	</channel>
</rss>
