Come programmare il microcontrollore AVR con Arduino

Indice

Program the AVR Microcontroller with Arduino

Nel mondo dei microcontrollori e dell’elettronica, ci sono molti tipi diversi. Uno dei tipi di microcontrollori più popolari è la famiglia AVR. Questi microcontrollori possono essere utilizzati in una varietà di progetti o prodotti, poiché hanno molti usi e funzioni.

Se vuoi iniziare un progetto Arduino ma non sei sicuro di come programmare il microcontrollore AVR con Arduino, non preoccuparti! In questo articolo del blog, copriremo tutte le tue opzioni!

Cos'è un microcontrollore AVR?

Un microcontrollore AVR è un microcontrollore che utilizza il set di istruzioni AVR. AVR è un microcontrollore a chip singolo RISC a 8 bit di architettura Harvard modificata che è stato sviluppato da Atmel nel 1996. I microcontrollori AVR sono spesso utilizzati nelle schede Arduino e quando si programma per le schede Arduino, si utilizzerà il microcontrollore AVR.

avr microcontroller

Forma completa del microcontrollore AVR

La forma completa del microcontrollore AVR è Atmel AVR. È un tipo di microcontrollore che è stato originariamente progettato per dispositivi embedded come automobili, telefoni cellulari, elettrodomestici, sistemi di monitoraggio domestico e molto altro! I microcontrollori AVR sono spesso utilizzati nelle schede Arduino e quando si programma per le schede Arduino, si utilizzerà il microcontrollore AVR.

Caratteristiche del microcontrollore AVR

Basso consumo – Una delle migliori caratteristiche dei microcontrollori AVR è il loro basso consumo energetico. A seconda di ciò che stai facendo con il dispositivo, può variare da trascurabile a un paio di watt.

Ampia gamma di temperature – Sebbene la temperatura possa influire sulla velocità del dispositivo, i microcontrollori AVR possono resistere a temperature comprese tra -40 gradi Celsius e 85 gradi Celsius.

Architettura a 8 bit – Un’altra caratteristica dei microcontrollori AVR è la loro architettura a 8 bit. Ciò consente al tuo dispositivo di avere più memoria e più potenza di elaborazione.

Facile da programmare – Ultimo ma non meno importante, i microcontrollori AVR sono facili da programmare. Questo li rende una scelta eccellente per principianti e hobbisti che desiderano creare i propri progetti.

Architettura del microcontrollore AVR

L’architettura AVR si basa su un’architettura di computer a set di istruzioni ridotto (RISC). Le architetture RISC rendono il processo di programmazione molto più semplice ed efficiente, che è uno dei motivi per cui AVR è diventato così popolare.

Set di istruzioni – Il set di istruzioni dell’architettura è anche ridotto. Sebbene possa sembrare che ciò renda la programmazione più difficile, la rende più facile perché meno istruzioni significano istruzioni meno complesse.

Percorso dati a 8 bit – L’architettura a 8 bit significa anche che ha un percorso dati a 8 bit, il che significa che può elaborare più dati contemporaneamente.

Memoria del programma – La memoria del programma è dove sono memorati tutti i tuoi programmi. È come un disco rigido per il tuo dispositivo.

Memoria dei dati – La memoria dei dati è dove sono memorati i tuoi dati. Ad esempio, se vuoi memorizzare un numero nel dispositivo, viene memorizzato nella memoria dei dati.

Schema dei pin del microcontrollore AVR

Esistono diversi tipi di microcontrollori AVR e lo schema dei pin varierà a seconda del tipo. Tuttavia, ci sono alcuni schemi dei pin che sono comuni in molti tipi di microcontrollori AVR come ATmega328P.

AVR ATmega328P pighixxx
Pin AVR ATmega328P

Configurazione dei pin ATmega328P

RESET – RESET è una linea che si attiva quando il dispositivo viene ripristinato. Questo può interferire con il programma se i due sono collegati.

GND – GND sta per massa. Questa è la connessione che il dispositivo utilizzerà per completare il circuito.

VCC – VCC è la tensione utilizzata per alimentare il dispositivo.

RX – RX è un pin di ingresso che riceve dati da un altro dispositivo.

TX – TX è un pin di uscita che invia dati a un altro dispositivo.

Diagramma a blocchi del microcontrollore AVR

Il diagramma a blocchi del microcontrollore AVR è il diagramma che mostra tutte le parti interne del microcontrollore. Diversi modelli avranno parti diverse, ma ogni modello è generalmente lo stesso in termini di funzionalità.

Memoria programma – La memoria programma è dove viene memorizzato il programma. Questo è come un disco rigido per il dispositivo.

Memoria dati – La memoria dati è dove vengono memorizzati i dati.

Contatore di programma – Il contatore di programma tiene traccia di dove ti trovi nel programma.

Registro istruzioni – Il registro istruzioni contiene la prossima istruzione che verrà eseguita.

ALU – L’ALU sta per unità aritmetico-logica. Questo esegue tutte le operazioni matematiche nel programma.

File di registro – Il file di registro è una raccolta dei registri dell’ALU. – Timer/contatore – Il timer/contatore viene utilizzato per misurare il tempo o contare diversi eventi.

Cos'è Arduino

Arduino è una piattaforma open-source che rende facile per le persone con poca o nessuna esperienza di programmazione progettare e creare progetti elettronici. Le schede Arduino sono in grado di controllare una varietà di luci, sensori e altri dispositivi. Le schede Arduino utilizzano software specifico per programmarle. Se vuoi programmare il microcontrollore AVR con Arduino, devi utilizzare una scheda specificamente progettata per questo.

Programmazione del microcontrollore AVR con Arduino

Se vuoi programmare il microcontrollore AVR con Arduino, dovrai utilizzare una scheda Arduino progettata per i microcontrollori AVR. Queste schede sono specificamente progettate per gestire la programmazione del microcontrollore AVR. Programmare il microcontrollore AVR con Arduino è facile come caricare un programma sulla scheda. Una volta caricato il programma, devi ripristinare la scheda Arduino e quindi scollegare la fonte di alimentazione. Quando ricolleghi la fonte di alimentazione, il microcontrollore AVR con Arduino sarà programmato.

1. Configura programmatore-Arduino

Innanzitutto, devi configurare “programmatore-Arduino” (l’Arduino che hai configurato come programmatore) come ISP. Per impostazione predefinita, gli sketch (codice) sono disponibili in Esempio di codice nel menu File dell’IDE Arduino. Lo sketch Arduino ISP passa le istruzioni necessarie al Programmatore-Arduino per configurarlo in modalità programmazione.

Select Arduino ISP option
Select Arduino ISP option

2. LED collegato ad Arduino

Come secondo passo, lo stato del Programmatore-Arduino può essere monitorato utilizzando i LED collegati come mostrato. Il codice Arduino ISP è pre-programmato per questa funzionalità.

Arduino-LED connection
Arduino-LED connection

Note LED:

Pin 7 = programmazione (si illumina durante la programmazione)

Pin 8 = Errore (si accende in caso di errore di programmazione)

Pin 9 = Normale (rimane acceso una volta che il programmatore è alimentato)

Una volta che il Programmatore-Arduino è configurato, viene stabilita la connessione tra il Programmatore-Arduino e l’Arduino di destinazione. La configurazione dei pin deve essere eseguita esattamente come descritto nel codice Arduino ISP.

3. Configura la comunicazione SPI

L’Arduino ISP comunica utilizzando il protocollo Serial Peripheral Interface (SPI) per programmare il microcontrollore AVR. La comunicazione SPI utilizza 4 segnali logici: MOSI, MISO, SCLK e SS. Oltre a I2C, SPI è una delle modalità di comunicazione più comunemente utilizzate per i MCU. SPI segue un’architettura master-slave, il che significa che un dispositivo master può comunicare con più dispositivi slave utilizzando gli stessi pin dati e il dispositivo slave di destinazione viene selezionato utilizzando la linea di selezione slave.

Se c’è una scheda di memoria, la selezione viene utilizzata per selezionare un chip specifico tra più chip. Tuttavia, quando si utilizza Arduino come strumento di programmazione, il segnale di selezione slave viene utilizzato solo per ripristinare il microcontrollore. Ripristina il microcontrollore in uno stato di accettazione dei comandi dal programmatore Arduino.

Su Programmer-Arduino, i pin 10, 11, 12 e 13 vengono utilizzati come pin dati. La configurazione è la seguente:

pin 10 = reset

Pin 11 = MOSI

Pin 12 = MISO

Pin 13 = SCK

4. configura i pin dell'header ICSP

La programmazione seriale in circuito (ICSP) è la capacità di programmare un microcontrollore senza interrompere il circuito. L’header ICSP è disponibile come 6 pin sulla scheda Arduino. Collega i pin 11, 12 e 13 dell’Arduino di destinazione ai pin 11, 12 e 13 dell’Arduino programmatore. Nota che il pin 10 dell’Arduino programmatore deve essere collegato al pin di reset dell’Arduino di destinazione. In alternativa, i pin dell’header ICSP possono essere utilizzati per la comunicazione SPI.

ICSP header for Arduino
ICSP header for Arduino

5. Configura Arduino come ISP

Dopo aver collegato tutto quanto sopra, devi definire che stai utilizzando la modalità Programmatore sul PC host. Vai su Strumenti nel menu e seleziona “Arduino come ISP” nell’opzione “Programmatore”.

Configure Arduino as ISP
Configure Arduino as ISP

6. Brucia il Bootloader sull'Arduino

Successivamente, carica il bootloader nella memoria dell’Arduino di destinazione e definisci il “fuse”. In Arduino-land, un fuse è un insieme di istruzioni utilizzate per definire più funzioni in un microcontrollore. Ad esempio, la frequenza del chip e la sorgente di clock sono definite nei fuse. I microcontrollori sono sensibili alle tensioni operative e possono funzionare male se i livelli di tensione sono inferiori a quelli specificati. La tensione operativa minima è definita anche all’interno del fuse.

burn bootloader to Arduino
burn bootloader to Arduino

Precauzioni

#1. Se il microcontrollore o la scheda Arduino possono comunicare con il programma Arduino IDE, ci sono vari vantaggi, come la possibilità di utilizzare il monitor seriale dell’Arduino IDE per controllare i risultati in fase di esecuzione. (Il Monitor Seriale si apre in una finestra separata, fungendo da terminale separato per la ricezione e l’invio di dati seriali.)

#2. Se il bootloader non è caricato nel microcontrollore, non sarà in grado di utilizzare le funzioni di Arduino e non sarà in grado di comunicare con l’IDE di Arduino. Il bootloader occupa parte della memoria. In alcuni casi, non è necessario utilizzare l’IDE di Arduino, quindi il bootloader non deve essere programmato. Se il bootloader non è programmato, è possibile liberare più memoria per lo sketch del programma principale. Ad esempio, in Arduino UNO, la dimensione totale della memoria è di 32 KB e 0,5 KB di memoria sono allocati per il bootloader. Se il bootloader non è installato, la memoria totale disponibile per lo sketch del programma principale è maggiore.

Riepilogo

Il microcontrollore AVR è un chip facile da usare e potente che può essere programmato per un’ampia gamma di applicazioni. È un ottimo chip per i principianti che vogliono entrare nel mondo dei microcontrollori e dell’elettronica. La piattaforma Arduino è un ottimo modo per iniziare con i microcontrollori ed è progettata specificamente pensando ai principianti.

Iscriviti

Unisciti alla nostra lista di iscritti per ricevere aggiornamenti mensili sul blog, notizie tecnologiche, casi di studio. Non invieremo mai spam e potrai annullare l’iscrizione in qualsiasi momento.

Informazioni sull'autore

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Hai bisogno di aiuto?

Torna in alto

Instant Quote