Molti si chiederanno se è necessario comprare un nuovo Arduino ogni volta che si realizza un progetto utilizzando la board. Ovvero... "per costruire qualcos'altro... devo prima procurarmi un altro Arduino?" Sarete felici di sapere che non è sempre indispensabile. Infatti il cuore di arduino uno non è altro che l'atmega328p, un microcontrollore ad 8-bit prodotto dalla avr.
La casa costruttrice ci fornisce un programmatore ed una IDE anche per i microcontroller della famiglia Atmega, ma diventa difficile programmare direttamente il 328p o qualsiasi altro chip per chi non è del mestiere, è molto più semplice collegare un chip vergine ad un Arduino utilizzato come programmatore, e utilizzare gli strumenti per Arduino al fine di programmarlo... a programmazione terminata potremo scollegare il nostro "Arduino-programmatore" e usare il chip indipendentemente dalla board.
Il chip infatti ha già all'interno un oscillatore che genera tramite un quarzo da 8 MHz il clock che gli serve per processare nel tempo i comandi.
Su Arduino invece si ha un quarzo da 16Mhz, che permette di velocizzare l'esecuzione dei comandi. Il microcontrollore è una sorta di piccola CPU in sostanza, e utilizzando una frequenza di 16Mhz anzichè quella di 8 prevista dal produttore sul chip è come se lo stessimo "overcloccando". La frequenza massima di clock prevista dal produttore per l'atmega328p è di 20Mhz.
Il Bootloader di arduino è una piccola componente software (comandi) che occupano 0.5 Kb e servono soprattutto per caricare i nostri programmi senza l'ausilio di un programmatore (tramite un seriale TTL). Infatti andando a vedere lo schema elettrico di arduino, tra la porta usb e l'atmega328p troviamo un atmega16u2 che viene utilizzato come "convertirore" da usb a porta seriale rs232.
La porta seriale è utilizzata per la programmazione del microcontrollore.
Sui vecchi Arduino seriali come il Severino (vedi foto) infatti mancava completamente il chip che provvedeva la conversione della porta, in quanto l'USB è stato aggiunto per comodità sulle board più recenti, in modo da permetterne la programmazione anche con i computer portatili.
Per adattare il microcontrollore a funzionare senza l'ausilio dell'intera board dobbiamo specificare all'IDE quali sono i suoi nuovi parametri di funzionamento: basterà aprire il file boards.txt che troviamo nella cartella del programma di arduino e aggiungere le seguenti righe:
Per programmare il chip senza dover comprare un programmatore possiamo utilizzare direttamente un arduino (montato, con su il suo chip atmega).
Basterà seguire il seguente schema:
http://images.nonsologaming.com/arduinoisp2.png
Io ho provato l'operazione su varie versioni dell'IDE, e la 0022 è quella che mi ha dato meno errori.
Una volta aperto l'IDE dobbiamo andare a cercare negli esempi lo sketch ArduinoISP: carichiamolo su Arduino, poi colleghiamo un condensatore da 22uF tra il Reset e GND di Arduino, selezioniamo la board atmega328 che abbiamo creato in precedenza... e potremo andare a caricare sul chip il nostro programma.
Al termine dell'operazione non servirà nè il clock esterno nè la board per il funzionamento dell'integrato dopo la programmazione, che ormai funzionerà indipendentemente dalla board. Sarà sufficiente alimentarlo.
Molti si chiederanno se è necessario comprare un nuovo Arduino ogni volta che si realizza un progetto utilizzando la board. Ovvero... "per costruire qualcos'altro... devo prima procurarmi un altro Arduino?" Sarete felici di sapere che non è sempre indispensabile. Infatti il cuore di arduino uno non è altro che l'atmega328p, un microcontrollore ad 8-bit prodotto dalla avr.
La casa costruttrice ci fornisce un programmatore ed una IDE anche per i microcontroller della famiglia Atmega, ma diventa difficile programmare direttamente il 328p o qualsiasi altro chip per chi non è del mestiere, è molto più semplice collegare un chip vergine ad un Arduino utilizzato come programmatore, e utilizzare gli strumenti per Arduino al fine di programmarlo... a programmazione terminata potremo scollegare il nostro "Arduino-programmatore" e usare il chip indipendentemente dalla board.
Il chip infatti ha già all'interno un oscillatore che genera tramite un quarzo da 8 MHz il clock che gli serve per processare nel tempo i comandi.
Su Arduino invece si ha un quarzo da 16Mhz, che permette di velocizzare l'esecuzione dei comandi. Il microcontrollore è una sorta di piccola CPU in sostanza, e utilizzando una frequenza di 16Mhz anzichè quella di 8 prevista dal produttore sul chip è come se lo stessimo "overcloccando". La frequenza massima di clock prevista dal produttore per l'atmega328p è di 20Mhz.
Il Bootloader di arduino è una piccola componente software (comandi) che occupano 0.5 Kb e servono soprattutto per caricare i nostri programmi senza l'ausilio di un programmatore (tramite un seriale TTL). Infatti andando a vedere lo schema elettrico di arduino, tra la porta usb e l'atmega328p troviamo un atmega16u2 che viene utilizzato come "convertirore" da usb a porta seriale rs232.
La porta seriale è utilizzata per la programmazione del microcontrollore.
Sui vecchi Arduino seriali come il Severino (vedi foto) infatti mancava completamente il chip che provvedeva la conversione della porta, in quanto l'USB è stato aggiunto per comodità sulle board più recenti, in modo da permetterne la programmazione anche con i computer portatili.
[imgx]
http://images.nonsologaming.com/ArduinoSeverino400.jpg[/imgx]Per adattare il microcontrollore a funzionare senza l'ausilio dell'intera board dobbiamo specificare all'IDE quali sono i suoi nuovi parametri di funzionamento: basterà aprire il file boards.txt che troviamo nella cartella del programma di arduino e aggiungere le seguenti righe:
Per programmare il chip senza dover comprare un programmatore possiamo utilizzare direttamente un arduino (montato, con su il suo chip atmega).
Basterà seguire il seguente schema:
Io ho provato l'operazione su varie versioni dell'IDE, e la 0022 è quella che mi ha dato meno errori.
Una volta aperto l'IDE dobbiamo andare a cercare negli esempi lo sketch ArduinoISP: carichiamolo su Arduino, poi colleghiamo un condensatore da 22uF tra il Reset e GND di Arduino, selezioniamo la board atmega328 che abbiamo creato in precedenza... e potremo andare a caricare sul chip il nostro programma.
Al termine dell'operazione non servirà nè il clock esterno nè la board per il funzionamento dell'integrato dopo la programmazione, che ormai funzionerà indipendentemente dalla board. Sarà sufficiente alimentarlo.
Modificato da RyujiAndy