Vai al contenuto

Il cuore di Arduino: L'atmega328p


RyujiAndy

Messaggi raccomandati

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:

##############################################################

atmega328.name=ATmega328 on a breadboard (8 MHz internal clock)

atmega328.upload.protocol=stk500
atmega328.upload.maximum_size=32768
atmega328.upload.speed=57600
atmega328.upload.using=arduino:arduinoisp

atmega328.bootloader.low_fuses=0xE2
atmega328.bootloader.high_fuses=0xDA
atmega328.bootloader.extended_fuses=0x05
atmega328.bootloader.path=arduino:atmega
atmega328.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328.bootloader.unlock_bits=0x3F
atmega328.bootloader.lock_bits=0x0F

atmega328.build.mcu=atmega328p
atmega328.build.f_cpu=8000000L
atmega328.build.core=arduino:arduino

##############################################################

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.

Modificato da RyujiAndy
Link al commento
Condividi su altri siti

Interessante, da notare il fatto che in alternativa si può programmare il chip direttamente dalla scheda, anche se necessita di un oscillatore esterno e ovviamente deve avere il bootloader per essere programmato dalla scheda (necessario se si utilizza l' arduino come isp).

In fine ecco il pinout che può fare sempre comodo http://computerpr0n.com/wp-content/uploads/2012/04/Atmega168PinMap2.png

Link al commento
Condividi su altri siti

l'utilità di usare l'atmel senza cristallo esterno, sono soprattutto il risparmio energetico e quindi la possibilità di aumentare il tempo di alimentazione tramite batteria, di norma e regola anche io uso sempre un clock esterno, soprattutto perchè ho la mania di interfacciare i miei proggetti ad internet tramite i modulo RJ45.
Link al commento
Condividi su altri siti

scusa ragazzi sono un profano curioso e appassionato di tecnologia..a cosa vi serve questa piattaforma?che tipo di progetti si possono realizzare?

 

Di tutto ! Io ci ho fatto il mio impianto domotico ! Ma si possono fare un sacco di cose: Ci puoi collegare pulsanti, sensori di temperatura, di luce, servocomandi, motorini elettrici, relè, lettori RFID ... puoi collegarci un pc attraverso la USB, aggiungere un'interfaccia Ethernet ... il limite è solo la fantasia !

 

Se vuoi approfondire vai sul sito ufficiale: http://www.arduino.cc ... ti si aprirà un mondo !

Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

Giochi in Uscita



  • Community Hive Community Hive

    Community Hive allows you to follow your favorite communities all in one place.

    Follow on Community Hive
  • Utenti

    Non ci sono membri da mostrare

×
×
  • Crea Nuovo...