Casa / Padroneggiare il PC / Microcontrollori AVR. Nozioni di base sulla programmazione. AVR. Corso di formazione. Introduttivo. Cos'è il microcontrollore della serie Avr

Microcontrollori AVR. Nozioni di base sulla programmazione. AVR. Corso di formazione. Introduttivo. Cos'è il microcontrollore della serie Avr

Famiglia AVR: include microcontrollori a 8 bit per un'ampia gamma di attività. Per progetti complessi con un gran numero di ingressi/uscite, vengono forniti i microcontrollori AVR Mega e AVR xmega, disponibili in pacchetti da 44 a 100 pin e dotati di memoria Flash fino a 1024 kB, e la loro velocità operativa è elevata a 32 milioni di operazioni al secondo. Quasi tutti i modelli hanno la capacità di generare PWM, ADC e DAC integrati.

Milioni di radioamatori stanno sviluppando progetti interessanti su AVR: questa è la famiglia di MK più popolare, sono stati scritti molti libri su di loro in russo e in altre lingue del mondo.

Interessante: per il firmware è necessario un programmatore, uno dei più comuni è AVRISP MKII, che puoi realizzare facilmente dal tuo Arduino.

La popolarità della famiglia AVR si mantiene ad alto livello da molti anni; negli ultimi 10 anni l'interesse per essa è stato alimentato dal progetto Arduino, una scheda per un semplice ingresso nel mondo dell'elettronica digitale.

Aree di applicazione dei vari Tiny, Mega

È impossibile descrivere chiaramente il campo di applicazione del microcontrollore perché è illimitato, ma può essere classificato come segue:

  1. Tiny AVR è il più semplice in termini tecnici. Hanno poca memoria e pin per il collegamento dei segnali e il prezzo è appropriato. Tuttavia, questa è una soluzione ideale per progetti semplici, che vanno dal controllo automatico dell'illuminazione interna dell'auto alle sonde dell'oscilloscopio per la riparazione elettronica fai-da-te. Sono utilizzati anche nel progetto compatibile con Arduino - Digispark. Questa è la versione più piccola di un Arduino di terze parti; realizzato in formato unità flash USB.
  2. La famiglia MEGA è rimasta a lungo la principale tra i radioamatori avanzati; sono più potenti e hanno una capacità di memoria e un numero di pin maggiori rispetto a Tiny. Ciò consente progetti complessi, ma la famiglia è troppo ampia per essere descritta brevemente. Sono stati utilizzati nelle prime schede Arduino; le schede attuali sono dotate principalmente di ATMEGA

L'uscita di qualsiasi MK senza amplificatori aggiuntivi utilizzerà, ad esempio, LED o una matrice LED come indicatori.

Microcontrollori AVR xMega o precedenti

Gli sviluppatori di Atmel hanno creato l'AVR xMega come un MK più potente, pur appartenendo ancora alla famiglia AVR. Ciò era necessario per facilitare il lavoro dello sviluppatore quando si trasferiva in una famiglia più potente.

AVR xMega ha due direzioni:

  • I MK con una tensione di alimentazione di 1,8-2,7 volt funzionano con una frequenza fino a 12 MHz, i loro ingressi sono resistenti a una tensione di 3,3 V;
  • I MK con una tensione di alimentazione di 2,7-3,6 volt possono già funzionare a frequenze più elevate, fino a 32 MHz e l'ingresso è resistente a 5 volt.

Vale anche la pena notare: gli AVR xMega funzionano benissimo nei sistemi autonomi perché hanno un basso consumo energetico. Ad esempio: quando i timer e gli orologi in tempo reale sono in funzione, gli RTC consumano 2 mA di corrente e sono pronti per il funzionamento in caso di interruzioni esterne o overflow del timer, nonché in caso di tempo. Una varietà di timer a 16 bit viene utilizzata per eseguire una varietà di funzioni.

Funziona con una porta USB

Partiamo dal fatto che per programmare il microcontrollore è necessario utilizzare una porta seriale, ma sui computer moderni spesso manca una porta COM. Come collegare un microcontrollore a un computer del genere? Se utilizzi convertitori USB-UART, questo problema può essere risolto molto facilmente. Puoi assemblare il convertitore più semplice utilizzando i microcircuiti FT232 e CH340 e il suo diagramma è presentato di seguito.

Tale convertitore si trova sulle schede Arduino UNO e Aduino Nano.

Alcuni microcontrollori AVR dispongono di USB (hardware) integrata:

  • ATmega8U2;
  • ATmega16U2;
  • ATmega32U2.

Questa soluzione viene utilizzata per implementare la comunicazione tra un computer e Arduino mega2560 tramite USB, in cui il microcontrollore “capisce” solo UART.

Scopo del DAC e dell'ADC dei microcontrollori AVR

I convertitori digitale-analogico (DAC) sono dispositivi che convertono i segnali di uno e zero (digitali) in analogici (variabili in modo uniforme). Le caratteristiche principali sono la profondità di bit e la frequenza di campionamento. L'ADC converte il segnale analogico in forma digitale.

Le porte con supporto ADC sono necessarie per collegare sensori analogici, ad esempio di tipo resistivo, al microcontroller.

Il DAC ha trovato la sua applicazione nei filtri digitali, dove il segnale di ingresso viene elaborato nel software ed emesso attraverso il DAC in forma analogica; di seguito potete vedere gli oscillogrammi visivi. Il grafico in basso è il segnale di ingresso, il grafico centrale è lo stesso segnale, ma elaborato da un filtro analogico e il grafico in alto è un filtro digitale sul microcontrollore Tiny45. È necessario un filtro per formare la gamma di frequenza richiesta del segnale, nonché per formare un segnale di una determinata forma.


Un esempio di utilizzo di un ADC è un oscilloscopio su un microcontrollore. Purtroppo non sarà possibile tracciare le frequenze degli operatori mobili e del processore del PC, ma le frequenze dell'ordine di 1 MHz sono facili. Sarà un eccellente assistente quando si lavora con alimentatori a commutazione.

Ed ecco un video dettagliato di questo progetto, istruzioni di montaggio e suggerimenti dell'autore:

Quale letteratura dovrei leggere sui microcontrollori AVR per principianti?

Sono state scritte montagne di letteratura per formare giovani professionisti, vediamone alcune:

  1. Evstifeev A.V. "Microcontrollori AVR della famiglia Mega." Il libro discute in dettaglio l'architettura del microcontrollore. Viene descritto lo scopo di tutti i registri e i timer, nonché le loro modalità operative. È stato studiato il funzionamento delle interfacce di comunicazione con il mondo esterno, SPI, ecc.. Il sistema di comando è rivelato comprensibile ad un radioamatore di livello medio. Il materiale contenuto nel libro "Microcontrollori AVR della famiglia Mega: Guida per l'utente" ti aiuterà a studiare la struttura del chip e lo scopo di ciascuno dei suoi nodi, che è sicuramente importante per qualsiasi programmatore di microcontrollori.
  2. Belov A.V. – “Microcontrollori AVR nella pratica radioamatoriale”. Come suggerisce il titolo, questo libro è in gran parte dedicato all'aspetto pratico del lavoro con i microcontrollori. Il microcontrollore ATiny2313, diventato un classico, viene esaminato in dettaglio, così come molti circuiti per l'assemblaggio.
  3. Hartov V.Ya. “Microcontrollori AVR. Laboratorio per principianti." Ti aiuterà a comprendere AVR Studio 4 e lo Starter Kit STK. Imparerai come lavorare con interfacce seriali e parallele, come UART, I2C e SPI. Libro “Microcontrollori AVR. Workshop per principianti" scritto da un insegnante della MSTU. N.E. Bauman e viene utilizzato lì per studiare questo argomento.

Lo studio di questa famiglia di microcontrollori ha aiutato molti appassionati di elettronica a iniziare a lavorare e sviluppare progetti. Vale la pena iniziare con una famiglia popolare per avere sempre accesso a un mare di informazioni.

Tra i radioamatori entry-level c'è solo un concorrente dei microcontrollori AVR - PIC.

I microcontrollori sono dispositivi piccoli ma allo stesso tempo molto convenienti per coloro che desiderano creare varie straordinarie cose robotiche o automatizzate a casa. Questo articolo discuterà della programmazione AVR per principianti, vari aspetti e sfumature di questo processo.

informazioni generali

I microcontrollori possono essere trovati ovunque. Si trovano nei frigoriferi, nelle lavatrici, nei telefoni, nelle macchine industriali, nelle case intelligenti e in molti altri dispositivi tecnici. Il loro utilizzo diffuso è dovuto alla capacità di sostituire circuiti di dispositivi analogici più complessi e su larga scala. La programmazione dell'AVR MK consente il controllo autonomo dei dispositivi elettronici. Questi microcontrollori possono essere pensati come un semplice computer in grado di interagire con apparecchiature esterne. Possono quindi aprire/chiudere transistor, ricevere dati dai sensori e visualizzarli sugli schermi. I microcontrollori possono anche eseguire varie elaborazioni delle informazioni di input, in modo simile a un personal computer. Se padroneggi la programmazione AVR da zero e raggiungi il livello professionale, avrai possibilità quasi illimitate per controllare vari dispositivi utilizzando le porte I/O, oltre a modificarne il codice.

Un po' di AVR

L'articolo prenderà in considerazione una famiglia di microcontrollori prodotta da Atmel. Hanno prestazioni piuttosto buone, che ne consentono l'utilizzo in molti dispositivi amatoriali. Ampiamente usato nell'industria. Può essere trovato in questa tecnica:

  1. Domestico. Lavatrici, frigoriferi, forni a microonde, ecc.
  2. Mobile. Robot, comunicazioni e così via.
  3. Informatica. Sistemi di controllo dei dispositivi periferici, schede madri.
  4. Divertente. Gioielli e giocattoli per bambini.
  5. Trasporto. Sistemi di sicurezza del veicolo e di gestione del motore.
  6. Equipaggiamento industriale. Sistemi di controllo della macchina.

Questo, ovviamente, non copre tutte le aree. Vengono utilizzati laddove è vantaggioso utilizzare non un set di chip di controllo, ma un microcontrollore. Ciò è possibile grazie al basso consumo energetico e per scrivere i programmi vengono utilizzati i linguaggi C e Assembler, leggermente modificati per la famiglia dei microcontrollori. Tali modifiche sono necessarie a causa delle deboli capacità di calcolo, che di solito vengono calcolate in decine di kilobyte. La programmazione AVR senza imparare queste lingue non è possibile.

Come ottenere il tuo primo microcontrollore?

La programmazione AVR richiede:

  1. Disponibilità dell'ambiente di sviluppo necessario.
  2. In realtà i microcontrollori stessi.

Consideriamo il secondo punto più in dettaglio. Esistono tre opzioni per acquisire il dispositivo richiesto:

  1. Acquista direttamente il microcontrollore stesso.
  2. Ottieni un dispositivo come parte del designer (ad esempio Arduino).
  3. Assembla tu stesso il microcontrollore.

Non c’è nulla di complicato nel primo punto, quindi passiamo al secondo e al terzo.

Ottieni un dispositivo come parte del designer

Verrà scelto come esempio il noto Arduino. Questa è anche una comoda piattaforma per lo sviluppo rapido e di alta qualità di vari dispositivi elettronici. La scheda Arduino comprende un insieme specifico di componenti per il funzionamento (esistono varie configurazioni). Deve includere un controller AVR. Questo approccio ti consente di iniziare rapidamente a sviluppare un dispositivo, non richiede competenze speciali, ha capacità significative in termini di connessione di schede aggiuntive e puoi anche trovare molte informazioni su domande di interesse su Internet. Ma c'erano alcuni aspetti negativi. Acquistando un Arduino, una persona si priva dell'opportunità di immergersi più profondamente nella programmazione AVR, per comprendere meglio il microcontrollore e le specifiche del suo funzionamento. A tutto ciò si aggiunge anche la gamma relativamente ristretta di modelli, motivo per cui spesso è necessario acquistare schede per compiti specifici. Un'altra particolarità è che qui la programmazione in “SI” differisce notevolmente dalla forma standard. Nonostante tutti i suoi difetti, Arduino è adatto ai principianti per imparare. Ma non dovresti abusarne.

Autoassemblaggio

Va notato che i microcontrollori AVR sono abbastanza amichevoli con i principianti. Puoi assemblarli tu stesso utilizzando componenti disponibili, semplici ed economici. Se parliamo dei vantaggi, questo approccio consente di conoscere meglio il dispositivo, selezionare autonomamente i componenti necessari, adattare il risultato finale ai requisiti, utilizzare linguaggi di programmazione standard e basso costo. Gli unici svantaggi che si possono notare sono la difficoltà dell'autoassemblaggio quando viene eseguito per la prima volta e la mancanza delle conoscenze e competenze necessarie.

Come lavorare?

Quindi diciamo che il problema con il microcontrollore è stato risolto. Inoltre si riterrà che sia stato acquistato o acquistato in modo indipendente. Cos'altro ti serve per padroneggiare la programmazione AVR? A questo scopo è necessario un ambiente di sviluppo (un normale blocco note andrà bene come base, ma io consiglio di utilizzare Notepad++). Sebbene siano disponibili altri programmi per la programmazione degli AVR, questo software sarà in grado di gestire tutti i requisiti. È richiesto anche un programmatore. Puoi acquistarlo presso il tuo negozio locale, ordinarlo online o assemblarlo da solo. Anche un circuito stampato non farebbe male. Non è necessario, ma utilizzarlo ti consente di risparmiare tempo e nervi. Acquistato/creato anche in modo indipendente. E l'ultima cosa è la fonte di energia. Per l'AVR è necessario fornire una tensione di alimentazione di 5V.

Dove e come studiare?

Non sarai in grado di creare capolavori da zero. Ciò richiede conoscenza, esperienza e pratica. Ma dove posso trovarli? Esistono diversi modi. Inizialmente, puoi cercare autonomamente le informazioni necessarie sul World Wide Web. Puoi iscriverti a corsi di programmazione (a distanza o in presenza) per acquisire competenze lavorative di base. Ogni approccio ha i suoi vantaggi. Quindi i corsi di programmazione a distanza saranno più economici, e forse anche gratuiti. Ma se qualcosa non funziona, con le lezioni faccia a faccia uno sviluppatore esperto sarà in grado di trovare rapidamente la causa del problema. Sarebbe anche una buona idea familiarizzare con la letteratura disponibile gratuitamente. Naturalmente, non potrai cavartela solo con i libri, ma puoi acquisire conoscenze di base sul dispositivo, sulla programmazione in "SI", "Assembler" e altri aspetti lavorativi.

Porte di I/O

Questo è un argomento estremamente importante. Senza comprendere come funzionano le porte I/O, la programmazione in-circuit dell'AVR non è affatto possibile. Dopotutto, l'interazione del microcontrollore con i dispositivi esterni avviene proprio attraverso la loro mediazione. A prima vista, al principiante può sembrare che il port sia un meccanismo piuttosto confuso. Per evitare una simile impressione, non considereremo in dettaglio lo schema del suo funzionamento, ma ne avremo solo un'idea generale. Consideriamo l'implementazione del software. Come esempio di dispositivo è stato scelto il microcontrollore AtMega8, uno dei più apprezzati dell'intera famiglia AVR. La porta I/O è composta da tre registri responsabili del suo funzionamento. A livello fisico, sono realizzati come gambe. Ciascuno di essi corrisponde a un bit specifico nel registro di controllo. Ciascuna gamba può funzionare sia per immettere informazioni che per emetterle. Ad esempio, è possibile allegare una funzione per accendere un LED o elaborare la pressione di un pulsante su di esso. A proposito, i tre registri menzionati sono: PORTx, PINx e DDRx. Ognuno di essi è a otto bit (ricorda, stiamo guardando AtMega8). Cioè, un bit è occupato da una gamba specifica.

Operazione di registrazione

Il più significativo in termini di orientamento è il controllo DDRx. È anche a otto bit. I valori possono essere scritti 0 o 1. Come cambia il funzionamento del controller quando si utilizzano zeri e uno? Se un determinato bit è impostato su 0, la gamba corrispondente passerà alla modalità di input. E da esso sarà possibile leggere i dati che provengono da dispositivi esterni. Se impostato su 1, il microcontrollore sarà in grado di controllare qualcosa (ad esempio, istruire un transistor a passare tensione e accendere un LED). Il secondo più importante è PORTx. Gestisce le condizioni della gamba. Diamo un'occhiata a un esempio. Diciamo che abbiamo una porta di uscita. Se ne impostiamo uno logico in PORTx, viene inviato un segnale dal microcontrollore al dispositivo di controllo per iniziare a funzionare. Ad esempio, accendi il LED. Quando viene impostato zero, verrà spento. Cioè, non è necessario lavorare costantemente con il registro di controllo DDRx. E infine, parliamo di PINx. Questo registro è responsabile della visualizzazione dello stato del pin del controller quando è impostato sullo stato di ingresso. Va notato che PINx può funzionare solo in modalità lettura. Non potrai scriverci nulla. Ma leggere lo stato attuale della gamba non è un problema.

Lavorare con analoghi

Gli AVR non sono gli unici microcontrollori. Questo mercato è diviso tra diversi grandi produttori, nonché tra numerosi imitatori cinesi e dispositivi fatti in casa. In molti modi sono simili. Ad esempio, programmare un PIC/AVR non è molto diverso. E se capisci una cosa, capire tutto il resto sarà facile. Ma consigliamo comunque di iniziare il viaggio con AVR grazie alla sua struttura competente, alla facilità con gli sviluppatori e alla presenza di un gran numero di materiali di supporto, motivo per cui il processo di sviluppo può essere notevolmente accelerato.

Misure di sicurezza

Quando si programmano i microcontrollori AVR in "SI" o "Assembler", è necessario lavorare con molta attenzione. Il fatto è che impostando una determinata combinazione di registri e modificando le impostazioni interne, puoi bloccare in sicurezza il microcontrollore. Ciò è particolarmente vero per i fusibili. Se non sei sicuro della correttezza delle tue azioni, è meglio rifiutarti di usarle. Lo stesso vale per i programmatori. Se acquisti apparecchiature di fabbrica, eseguirà il flashing dei microcontrollori senza problemi. Quando lo si assembla da soli, potrebbe verificarsi una triste situazione in cui il programmatore blocca il dispositivo. Ciò può accadere sia a causa di un errore nel codice del programma che per problemi nel codice stesso. A proposito, riguardo a un altro punto (questa volta positivo) che è stato menzionato in precedenza di sfuggita, ma che non è mai stato completamente divulgato. Ora quasi tutti i microcontrollori moderni hanno una funzione di programmazione in-circuit. Cosa significa? Supponiamo che il dispositivo sia stato saldato sulla scheda. E per cambiarne il firmware, ora non è necessario dissaldarlo, perché tale intervento può danneggiare il microcontrollore stesso. E' sufficiente collegarsi ai pin corrispondenti e riprogrammarlo attraverso di essi.

Quale modello dovresti scegliere?

Nell'ambito dell'articolo è stato recensito AtMega8. Si tratta di un microcontrollore piuttosto mediocre in termini di caratteristiche, che, tuttavia, è sufficiente per la maggior parte dei mestieri. Se vuoi creare qualcosa su larga scala, puoi prendere mostri originali come Atmega128. Ma sono progettati per sviluppatori più esperti. Pertanto, se non hai abbastanza esperienza, è meglio iniziare con dispositivi piccoli e semplici. Inoltre, sono molto più economici. D'accordo, una cosa è bloccare accidentalmente un microcontrollore per cento rubli, ma un'altra cosa è bloccarlo per mezzo migliaio. È meglio entrare nel vivo delle cose e comprendere i vari aspetti del funzionamento per non perdere somme importanti in futuro. Inizialmente, puoi iniziare con AtMega8 e poi concentrarti sulle tue esigenze.

Conclusione

Quindi il tema della programmazione AVR è stato considerato nei termini più generali. Naturalmente c’è molto altro da dire. Quindi, ad esempio, non è stata presa in considerazione la marcatura dei microcontrollori. E può dire molto. Pertanto, i microcontrollori generalmente funzionano con una tensione di 5 V. Mentre la presenza, ad esempio, della lettera L può indicare che per il funzionamento del dispositivo sono sufficienti solo 2,7 V. Come puoi vedere, a volte la conoscenza della marcatura può svolgere un ruolo molto importante in termini di funzionamento corretto e duraturo dei dispositivi . Anche il tempo di funzionamento dei microcontrollori è un argomento interessante. Ogni dispositivo è progettato per un certo periodo. Quindi, alcuni possono lavorare mille ore. Altri hanno una riserva di garanzia di 10.000!

Microcontrollori AVR. Nozioni di base sulla programmazione

Struttura e principali caratteristiche dei microcontrollori AVR

In questo articolo cercheremo di delineare in termini generali, caratteristiche principali, cosa c'è "dentro", cosa è necessario per iniziare a lavorare con i microcontrollori AVR, ecc.

Cos'è Piccolo, Mega?

Azienda Atmel produce una vasta linea di microcontrollori a otto bit basati sul core AVR, suddivisi in diverse sottofamiglie, diverse per caratteristiche tecniche, applicazione, prezzo:

  • ATminuscolo– Famiglia di microcontrollori AVR ottimizzata per applicazioni che richiedono prestazioni relativamente elevate (fino a 1,0 MIPS e in grado di funzionare a frequenze fino a 20,0 MHz), efficienza energetica (ATtiny è l'unica famiglia in grado di funzionare con tensione di alimentazione di 0,7 V!) e compattezza ( ci sono microcontrollori nel caso SOT23-6 - solo 6 pin e ciascun pin ha diverse funzioni, ad esempio: porta I/O, ingresso ADC, uscita PWM, ecc.). È qui che emerge il loro ambito di applicazione: dispositivi critici per prezzo, consumo energetico, dimensioni, ecc.
  • ATmega– una famiglia di microcontrollori AVR progettata per l'utilizzo in un'ampia varietà di ambiti, grazie a un set molto ampio di dispositivi periferici, una grande quantità di memoria di programma, porte di ingresso/uscita, ecc. In una parola, c'è spazio per espandersi.
  • ATxmega– una nuova famiglia di microcontrollori AVR con un set di dispositivi periferici ancora più ampio rispetto a ATmega (aggiunto dispositivo di accesso diretto alla memoria, DAC, modulo CRC, interfaccia USB completa, ADC più veloce, ecc.), con frequenze operative fino a 32,0 MHz.

Vale la pena notare la caratteristica principale di tutti i dispositivi di cui sopra: hanno tutti un'unica architettura e ciò semplifica il trasferimento del codice da un microcontrollore all'altro.
I microcontrollori sono disponibili sia in pacchetti DIP che SMD (ciascuno con i propri pro e contro).

Le custodie da imballaggio più popolari sono:

  • DIP (Dual Inline Package) - alloggiamento con due file di contatti
  • QFP (Quad Flat Package) - pacchetto piatto con quattro file di contatti
  • SOIC (Small-Outline Integrated Circuit) – circuiti integrati di piccole dimensioni (piccola area).

Per quanto riguarda la pratica radioamatoriale, i microcontrollori sono, ovviamente, di grande interesse Pacchetto DIP, poiché sono i più facili da lavorare: hanno un passo abbastanza ampio tra i pin e, inoltre, puoi utilizzare le prese per loro (questo è un connettore speciale in cui puoi installare microcircuiti senza saldatura).
In generale, una presa è un'invenzione estremamente conveniente: i pin sono sempre intatti e puoi rimuovere e inserire ripetutamente un microcircuito ed è molto più semplice realizzare prototipi di dispositivi futuri..

Alimentazione e clock dei microcontrollori AVR

Microcontrollori AVR costruito utilizzando la tecnologia CMOS, che garantisce un consumo energetico molto basso. In pratica il consumo energetico è lineare e direttamente proporzionale alla frequenza operativa (maggiore è la frequenza, maggiore è il consumo energetico).



La tensione di alimentazione per i microcontrollori AVR varia da da 2,7 a 5,5 V(6,0 V è il massimo, anche se il mio AVR in qualche modo funzionava a 7 V - e niente, è ancora vivo fino ad oggi). Ciò significa che l'AVR può controllare direttamente, scambiare dati, ecc. con vari dispositivi (sia con tolleranza 3,3 V che con tolleranza 5 V) senza la necessità di utilizzare convertitori di livello logico. Per un'elaborazione più accurata dei segnali analogici, l'AVR fornisce pin separati per alimentare la parte analogica del microcontrollore, che include dispositivi come ADC, DAC e comparatore analogico. Inoltre, i microcontrollori AVR dispongono di diverse "modalità di sospensione" per fornire il miglior risparmio energetico possibile.

Inoltre, ciascun pin del microcontrollore (a seconda della frequenza operativa e della tensione di alimentazione) può fornire ai dispositivi esterni una corrente fino a 40,0 mA(massimo!), ma tutto può essere “scaricato/scaricato” dal microcontrollore fino a 200,0 mA(massimo!).

La gamma di frequenza dei segnali di clock varia a seconda dell'anzianità della famiglia (ATtiny è la famiglia più giovane di microcontrollori AVR e ATxMega la più vecchia). Per alcuni rappresentanti, in particolare la famiglia ATtiny, la frequenza operativa può raggiungere 20,0 MHz, per ATmega non supera i 16,0 MHz, mentre ATxMega non supera i 32,0 MHz. Inoltre, ogni microcontrollore AVR ha un oscillatore RC interno fino a 8,0 MHz, che consente di fare a meno di una sorgente di segnale di clock esterna.

Atmel produce microcontrollori con frequenze massime di funzionamento che sono la metà dello standard (per aumentare il risparmio energetico), quindi è necessario prestare attenzione alla codifica dei microcontrollori al momento dell'acquisto. Informazioni dettagliate su quale microcontrollore opera a quali frequenze e tensioni di alimentazione, quali codifiche sono disponibili, confezione per questo microcontrollore, ecc. sono reperibili nella sezione “Informazioni per l'ordine” di ciascuna scheda tecnica.

Di seguito è riportata una tabella di esempio dalla scheda tecnica del microcontrollore ATtiny13. Nella colonna "Codice di ordinazione" puoi vedere le differenze tra le codifiche e non è difficile indovinare a cosa sono collegate.



Cosa c'è dentro il microcontrollore AVR?

Come già affermato nella prefazione, Microcontrollori AVR hanno un'architettura Harvard (la caratteristica principale di tale architettura è che la memoria del programma e la RAM, così come i loro bus di accesso, sono separati per aumentare la velocità di esecuzione dei comandi: mentre un comando viene eseguito, quello successivo viene recuperato dal programma memoria) con un processore RISC, con velocità 1.0 MIPS. Tutti i microcontrollori, indipendentemente dal modello e dal layout, hanno la stessa unità di elaborazione centrale (processore/core). Un singolo core rende un programma scritto in qualsiasi linguaggio più universale e, se lo si desidera, può essere sostituito in qualsiasi progetto, ad esempio, un controller più costoso con un altro più economico, con modifiche minime al codice.

RISC(Computer con set di istruzioni ridotto) – un processore con una serie di semplici istruzioni di assemblaggio (addizione, sottrazione, spostamento a sinistra/destra, “AND logico”, ecc.), tutte le istruzioni hanno una lunghezza fissa, il processore contiene un gran numero di istruzioni generali registri di scopo, ecc. Per calcolare, ad esempio, una sorta di equazione matematica media, il processore dovrà eseguire diverse semplici istruzioni di assemblaggio, a differenza di un processore CISC che ha istruzioni "per tutte le occasioni". -processore, poiché non tutte le istruzioni di assembly hanno un formato fisso. La maggior parte ha un formato a 16 bit, il resto è a 32 bit. Ciò significa che ogni istruzione occupa 16 o 32 bit nella memoria del programma. A proposito, le istruzioni non fisse la lunghezza delle istruzioni di assemblaggio è ciò che lo rende un processore: processore Advanced Virtual RISC (AVR).

MIPS(milioni di istruzioni al secondo) - I microcontrollori AVR sono in grado di eseguire (approssimativamente) un milione di istruzioni a 1,0 MHz o, in parole povere, la maggior parte delle istruzioni di assemblaggio vengono eseguite in un singolo ciclo di clock.



Il cervello di un microcontrollore AVR è la sua unità di elaborazione centrale (CPU/core).

Alcuni componenti del processore:

Unità logica aritmetica

Contatore di programma

Puntatore dello stack

  • Registro di stato
  • Memoria di programma flash
  • Memoria dati

Registri per scopi generali

Registri periferici (registri I/O)

Memoria RAM

Sistema dell'orologio. Questo sistema può essere paragonato al sistema cardiovascolare

Unità di interruzione

Dispositivi periferici, ne elencherò alcuni:

Porte di I/O

Memoria EEPROM

Interfacce USB (solo xMega), USART, I2C, SPI, JTAG

Watchdog, timer/contatore (con oscillatore PWM, cattura/confronto, ecc.)

ADC, DAC (solo xMega), comparatore analogico

Moduli di interrupt esterni

L'insieme dei dispositivi periferici nelle diverse famiglie (Tiny, Mega e xMega) e dei diversi microcontrollori di queste famiglie è diverso. Esistono microcontrollori dotati di una varietà di dispositivi periferici, ma anche, per sviluppi critici in termini di costi, ci sono microcontrollori con un piccolo set (necessario) di periferiche.

Uno dei vantaggi dei microcontrollori AVR è la capacità di utilizzare i dispositivi periferici in varie modalità operative congiunte, il che molto spesso semplifica il compito dello sviluppatore. L'AVR dispone inoltre di un sistema integrato per il ripristino e il monitoraggio del livello della tensione di alimentazione (controllo e ripristino del sistema), che garantisce il normale avvio del microcontrollore e, se necessario, uno spegnimento affidabile.

I registri di controllo/stato dei dispositivi periferici si trovano nell'area della memoria dati, tra i registri di uso generale e la RAM, che garantisce prestazioni elevate quando si lavora con le periferiche. Lo sviluppatore, ovviamente, ha pieno accesso a questi registri (registri I/O).

Cosa è necessario affinché il microcontrollore funzioni?

  • scrivere un programma (programma). Per scrivere un programma/algoritmo per il quale funzionerà il microcontrollore, avrai bisogno di un ambiente di sviluppo integrato per i microcontrollori AVR, che includa un editor di codice/testo, un compilatore, un linker e altre utilità.
  • progettazione del circuito. Il programma da solo non è sufficiente per il funzionamento del microcontrollore; richiede anche un kit minimo (un insieme di dispositivi elettronici esterni) per fornire al microcontrollore la tensione di alimentazione e un segnale di clock in modo che almeno il core del microcontrollore funzioni.
La figura seguente mostra il kit microcontrollore “classico” necessario per il normale funzionamento.


La figura mostra i requisiti minimi del circuito per il microcontrollore ATmega16. Con questo schema di commutazione, il core del microcontrollore AVR inizia a funzionare, è possibile utilizzare tutte le porte di ingresso/uscita e altri dispositivi periferici. In breve, il microcontrollore è in piena prontezza al combattimento. Per, ad esempio, iniziare a utilizzare un ADC o un comparatore analogico, è necessario prima configurare a livello di codice il dispositivo periferico utilizzando i suoi registri di controllo/monitoraggio per impostare la modalità operativa necessaria, ecc., quindi applicare i segnali in esame agli ingressi del dispositivo periferico corrispondente.

- Quarzo e condensatori C1, C2 (22 pF ciascuno) forniscono al microcontrollore e a tutti i suoi dispositivi periferici un segnale di clock di alta qualità (frequenza massima - 16,0 MHz).

Resistenza R1(10K), fornisce un livello alto all'ingresso RESET, necessario per il funzionamento stabile del microcontrollore. Se durante il funzionamento del microcontrollore la tensione su questo pin scende al di sotto di un certo livello, il microcontrollore verrà ripristinato e il funzionamento dell'algoritmo previsto potrebbe essere interrotto.

-Connettore ISP utilizzato per la programmazione in-circuit, ovvero è necessario scrivere il programma che hai scritto nella memoria del microcontrollore direttamente sulla scheda (senza rimuovere il microcontrollore dal dispositivo).

- Acceleratore L1 e i condensatori C3, C4 forniscono tensione di alimentazione ai dispositivi periferici analogici, nonché ad alcuni registri delle porte I/O. Se il microcontrollore non ha una parte analogica, non ci sono pin di alimentazione analogici e di conseguenza questi componenti non sono necessari. Il cablaggio semplificato del microcontrollore è il seguente: in primo luogo, poiché il microcontrollore è stato privato del clock esterno, dovrebbe indicare che il clock verrà dall'oscillatore RC interno impostando i bit del fusibile appropriati (una sorta di limitazione dei parametri operativi del microcontrollore ).
La frequenza massima dell'oscillatore interno è 8,0 MHz, il che significa che il microcontrollore non sarà in grado di funzionare alla sua frequenza massima (prestazioni).
In secondo luogo, la parte analogica del microcontrollore (così come alcuni registri delle porte di ingresso/uscita) non dispongono di una fonte di alimentazione, il che ne preclude l'utilizzo.
In terzo luogo, non è presente alcun connettore per la programmazione in-circuit, quindi per scrivere il firmware nella memoria del microcontrollore dovrai rimuoverlo dal dispositivo, scriverlo da qualche parte e poi rimetterlo al suo posto. Come tu stesso capisci, questo non è molto conveniente (rimuovere/inserire, saldare/dissaldare) e può causare danni sia al microcontrollore stesso (le gambe potrebbero rompersi, surriscaldarsi dalla saldatura, ecc.), sia ai dispositivi vicini: connettore, tracce a bordo, ecc.

Famiglia AVR: include microcontrollori a 8 bit per un'ampia gamma di attività. Per progetti complessi con un gran numero di ingressi/uscite, vengono forniti i microcontrollori AVR Mega e AVR xmega, disponibili in pacchetti da 44 a 100 pin e dotati di memoria Flash fino a 1024 kB, e la loro velocità operativa è elevata a 32 milioni di operazioni al secondo. Quasi tutti i modelli hanno la capacità di generare PWM, ADC e DAC integrati.

Milioni di radioamatori stanno sviluppando progetti interessanti su AVR: questa è la famiglia di MK più popolare, sono stati scritti molti libri su di loro in russo e in altre lingue del mondo.

Interessante: per il firmware è necessario un programmatore, uno dei più comuni è AVRISP MKII, che puoi realizzare facilmente dal tuo Arduino.

La popolarità della famiglia AVR si mantiene ad alto livello da molti anni; negli ultimi 10 anni l'interesse per essa è stato alimentato dal progetto Arduino, una scheda per un semplice ingresso nel mondo dell'elettronica digitale.

Aree di applicazione dei vari Tiny, Mega

È impossibile descrivere chiaramente il campo di applicazione del microcontrollore perché è illimitato, ma può essere classificato come segue:

  1. Tiny AVR è il più semplice in termini tecnici. Hanno poca memoria e pin per il collegamento dei segnali e il prezzo è appropriato. Tuttavia, questa è una soluzione ideale per progetti semplici, che vanno dal controllo automatico dell'illuminazione interna dell'auto alle sonde dell'oscilloscopio per la riparazione elettronica fai-da-te. Sono utilizzati anche nel progetto compatibile con Arduino - Digispark. Questa è la versione più piccola di un Arduino di terze parti; realizzato in formato unità flash USB.
  2. La famiglia MEGA è rimasta a lungo la principale tra i radioamatori avanzati; sono più potenti e hanno una capacità di memoria e un numero di pin maggiori rispetto a Tiny. Ciò consente progetti complessi, ma la famiglia è troppo ampia per essere descritta brevemente. Sono stati utilizzati nelle prime schede Arduino; le schede attuali sono dotate principalmente di ATMEGA

L'uscita di qualsiasi MK senza amplificatori aggiuntivi utilizzerà, ad esempio, LED o una matrice LED come indicatori.

Microcontrollori AVR xMega o precedenti

Gli sviluppatori di Atmel hanno creato l'AVR xMega come un MK più potente, pur appartenendo ancora alla famiglia AVR. Ciò era necessario per facilitare il lavoro dello sviluppatore quando si trasferiva in una famiglia più potente.

AVR xMega ha due direzioni:

  • I MK con una tensione di alimentazione di 1,8-2,7 volt funzionano con una frequenza fino a 12 MHz, i loro ingressi sono resistenti a una tensione di 3,3 V;
  • I MK con una tensione di alimentazione di 2,7-3,6 volt possono già funzionare a frequenze più elevate, fino a 32 MHz e l'ingresso è resistente a 5 volt.

Vale anche la pena notare: gli AVR xMega funzionano benissimo nei sistemi autonomi perché hanno un basso consumo energetico. Ad esempio: quando i timer e gli orologi in tempo reale sono in funzione, gli RTC consumano 2 mA di corrente e sono pronti per il funzionamento in caso di interruzioni esterne o overflow del timer, nonché in caso di tempo. Una varietà di timer a 16 bit viene utilizzata per eseguire una varietà di funzioni.

Funziona con una porta USB

Partiamo dal fatto che per programmare il microcontrollore è necessario utilizzare una porta seriale, ma sui computer moderni spesso manca una porta COM. Come collegare un microcontrollore a un computer del genere? Se utilizzi convertitori USB-UART, questo problema può essere risolto molto facilmente. Puoi assemblare il convertitore più semplice utilizzando i microcircuiti FT232 e CH340 e il suo diagramma è presentato di seguito.

Tale convertitore si trova sulle schede Arduino UNO e Aduino Nano.

Alcuni microcontrollori AVR dispongono di USB (hardware) integrata:

  • ATmega8U2;
  • ATmega16U2;
  • ATmega32U2.

Questa soluzione viene utilizzata per implementare la comunicazione tra un computer e Arduino mega2560 tramite USB, in cui il microcontrollore “capisce” solo UART.

Scopo del DAC e dell'ADC dei microcontrollori AVR

I convertitori digitale-analogico (DAC) sono dispositivi che convertono i segnali di uno e zero (digitali) in analogici (variabili in modo uniforme). Le caratteristiche principali sono la profondità di bit e la frequenza di campionamento. L'ADC converte il segnale analogico in forma digitale.

Le porte con supporto ADC sono necessarie per collegare sensori analogici, ad esempio di tipo resistivo, al microcontroller.

Il DAC ha trovato la sua applicazione nei filtri digitali, dove il segnale di ingresso viene elaborato nel software ed emesso attraverso il DAC in forma analogica; di seguito potete vedere gli oscillogrammi visivi. Il grafico in basso è il segnale di ingresso, il grafico centrale è lo stesso segnale, ma elaborato da un filtro analogico e il grafico in alto è un filtro digitale sul microcontrollore Tiny45. È necessario un filtro per formare la gamma di frequenza richiesta del segnale, nonché per formare un segnale di una determinata forma.


Un esempio di utilizzo di un ADC è un oscilloscopio su un microcontrollore. Purtroppo non sarà possibile tracciare le frequenze degli operatori mobili e del processore del PC, ma le frequenze dell'ordine di 1 MHz sono facili. Sarà un eccellente assistente quando si lavora con alimentatori a commutazione.

Ed ecco un video dettagliato di questo progetto, istruzioni di montaggio e suggerimenti dell'autore:

Quale letteratura dovrei leggere sui microcontrollori AVR per principianti?

Sono state scritte montagne di letteratura per formare giovani professionisti, vediamone alcune:

  1. Evstifeev A.V. "Microcontrollori AVR della famiglia Mega." Il libro discute in dettaglio l'architettura del microcontrollore. Viene descritto lo scopo di tutti i registri e i timer, nonché le loro modalità operative. È stato studiato il funzionamento delle interfacce di comunicazione con il mondo esterno, SPI, ecc.. Il sistema di comando è rivelato comprensibile ad un radioamatore di livello medio. Il materiale contenuto nel libro "Microcontrollori AVR della famiglia Mega: Guida per l'utente" ti aiuterà a studiare la struttura del chip e lo scopo di ciascuno dei suoi nodi, che è sicuramente importante per qualsiasi programmatore di microcontrollori.
  2. Belov A.V. – “Microcontrollori AVR nella pratica radioamatoriale”. Come suggerisce il titolo, questo libro è in gran parte dedicato all'aspetto pratico del lavoro con i microcontrollori. Il microcontrollore ATiny2313, diventato un classico, viene esaminato in dettaglio, così come molti circuiti per l'assemblaggio.
  3. Hartov V.Ya. “Microcontrollori AVR. Laboratorio per principianti." Ti aiuterà a comprendere AVR Studio 4 e lo Starter Kit STK. Imparerai come lavorare con interfacce seriali e parallele, come UART, I2C e SPI. Libro “Microcontrollori AVR. Workshop per principianti" scritto da un insegnante della MSTU. N.E. Bauman e viene utilizzato lì per studiare questo argomento.

Lo studio di questa famiglia di microcontrollori ha aiutato molti appassionati di elettronica a iniziare a lavorare e sviluppare progetti. Vale la pena iniziare con una famiglia popolare per avere sempre accesso a un mare di informazioni.

Tra i radioamatori entry-level c'è solo un concorrente dei microcontrollori AVR - PIC.

Diamo un'occhiata all'architettura interna dei microcontrollori AVR, proviamo a capire da quali blocchi è costituito il chip del microcircuito e di quali funzioni è responsabile ciascun blocco, come interagiscono tra loro. Non mancheranno inoltre utili confronti ed esempi, appunti preziosi che aiuteranno a chiarire i principi di funzionamento del microcontrollore con dispositivi e periferiche esterne.

Microcontrollore AVR dall'interno

Un microcontrollore dall'interno è un computer con il proprio dispositivo di elaborazione, memoria permanente e dinamica, porte I/O e varie periferiche.

Riso. 1. Struttura del microcontrollore AVR. Disegno da digikey.com

All'interno del microcontrollore contiene:

  • Processore ad alta velocità con architettura RISC;
  • Memoria flash;
  • Memoria EEPROM;
  • Memoria RAM;
  • porte I/O;
  • Moduli periferici e di interfaccia.

RISC (Reduced Instruction Set Computer) è un'architettura con un set di istruzioni accuratamente selezionato che viene solitamente eseguito in un ciclo del processore. I moderni microcontrollori AVR contengono circa 130 comandi, che vengono eseguiti molto rapidamente e non richiedono grandi spese sia in termini di risorse intraprocessore che di consumo energetico.

Schema a blocchi del microcontrollore AVR

Diamo un'occhiata alla figura qui sotto e scopriamo in quali blocchi è composto il microcontrollore e come sono collegati tra loro:

Riso. 2. Schema a blocchi del microcontrollore AVR.

Diamo un breve sguardo a ciò che viene mostrato sui blocchi nel diagramma:

  • Interfaccia JTAG(Joint Test Action Group Interface) - interfaccia di debug in-circuit (4 fili);
  • VELOCE- memoria riprogrammabile per il salvataggio del programma;
  • Interfaccia periferica seriale, SPI- interfaccia periferica seriale (3 fili);
  • EEPROM(Memoria di sola lettura programmabile cancellabile elettricamente) - ROM riprogrammabile, memoria non volatile;
  • processore(CPU) - processore di controllo centrale, il cuore del microcontrollore, nucleo del microprocessore a 8 bit;
  • ALLU(ALU) - unità aritmetico-logica, la base dell'unità CPU;
  • RAM(Memoria ad accesso casuale) - RAM del processore;
  • Contatore di programma- contatore dei comandi;
  • 32 Registri per scopi generali- 32 registri di carattere generale;
  • Registro delle istruzioni- registro dei comandi, istruzioni;
  • Decodificatore di istruzioni- decodificatore di comando;
  • DOC(On-Chip Debugger) - unità di debug interna;
  • Comparatore analogico- comparatore analogico, unità di confronto del segnale analogico;
  • Convertitore A/D(Convertitore analogico/digitale) - convertitore analogico-digitale;
  • Interfaccia LCD(Interfaccia display a cristalli liquidi) - interfaccia per il collegamento di un display a cristalli liquidi, indicatore;
  • USART(Trasmettitore-ricevitore asincrono universale), UART - ricetrasmettitore asincrono universale;
  • TWI(Interfaccia seriale a due fili) - interfaccia seriale con connessione a due fili;
  • Temporizzatore del cane da guardia- watchdog o timer di controllo;
  • Porte di I/O- porti d'acqua/uscita;
  • Interruzioni- centralina e risposta alle interruzioni;
  • Temporizzatori/Contatori- moduli timer e contatori.

Maggiori informazioni sui blocchi interni del microcontrollore

Ora diamo uno sguardo più da vicino a tutti i blocchi del microcontrollore, scopriamo cosa è necessario e perché e forniamo semplici esempi in un linguaggio accessibile.

Interfaccia JTAG- un'interfaccia importante che consente il debug interno direttamente nel chip utilizzando il blocco di debug interno ( DOC), senza utilizzare emulatori. Possiamo dire che JTAG è un'interfaccia per il debug “hardware” di un microcontrollore. Attraverso un adattatore JTAG, il microcircuito è direttamente collegato al pacchetto software per la programmazione e il debug.

Utilizzando questa interfaccia, puoi eseguire il programma direttamente nel microcontrollore in modalità passo passo, osservare come cambia il contenuto dei registri, come lampeggiano gli indicatori e i LED collegati al microcontrollore dopo ogni passaggio, ecc. Per connettersi all'interfaccia JTAG sono sufficienti 4 conduttori: TDI(Test Data In), TDO(Test Data Out), TCK(Test Clock), TMS (Test Mode Select).

L'interfaccia JTAG non è disponibile in tutti i microcontrollori AVR, di norma i chip con 40 o più pin e una capacità di memoria di almeno 16 KB hanno un'aggiunta così gustosa. Per compiti seri: materiali e strumenti seri.)

VELOCE- memoria di programma, ROM non volatile (read only memory) realizzata con tecnologia FLASH. Qui viene memorizzato il programma che verrà eseguito dall'unità ALU del microcontrollore. La memoria flash del chip può essere riscritta più volte, modificando o aggiungendo così il codice del programma per l'esecuzione. Questo tipo di memoria può conservare i dati scritti su di essa per 40 anni e il numero di possibili cicli di cancellazione/scrittura può raggiungere 10.000.

A seconda del modello di microcontrollore, la dimensione della memoria FLASH può raggiungere i 256 KB.

Interfaccia periferica seriale, SPI - interfaccia periferica seriale (SPI), che viene spesso utilizzata per scambiare dati tra diversi microcontrollori a velocità fino a diversi MHz (diversi milioni di clock al secondo).

Per scambiare dati tramite l'interfaccia SPI tra due dispositivi sono sufficienti 3 conduttori:

  1. MOSI (Master Output Slave Input) - Dati da master a slave;
  2. MISO (Master Input Slave Output) - Dati dallo slave al master;
  3. CLK (Clock) - segnale orologio.

I dispositivi con interfaccia SPI si dividono in due tipologie: Master e Slave. Se all'interfaccia sono collegati più dispositivi, sono necessarie linee di comunicazione aggiuntive (conduttori) per scambiare dati tra loro in modo che il master possa selezionare un dispositivo slave e fargli una richiesta.

L'interfaccia SPI viene utilizzata anche per la programmazione SPI nel circuito; un programmatore è collegato al microcontrollore tramite questa interfaccia.

EEPROM- memoria dati non volatile in cui i dati verranno archiviati anche quando l'alimentazione del microcontrollore è spenta. In questa memoria è possibile archiviare le impostazioni di esecuzione del programma, i dati raccolti per le statistiche di funzionamento del dispositivo e altre informazioni utili. Ad esempio, avendo assemblato una piccola stazione meteorologica su un microcontrollore, è possibile memorizzare i dati sulla temperatura dell'aria, sulla pressione, sulla forza del vento in EEPROM per ogni giorno, quindi leggere in qualsiasi momento i dati raccolti e condurre studi statistici.

La EEPROM ha uno spazio di indirizzi separato che differisce dallo spazio di indirizzi RAM e FLASH. La memoria EEPROM di un microcontrollore è una risorsa molto preziosa, poiché di solito è molto piccola, da 0,5 a diversi kilobyte per chip. Il numero di riscritture per questo tipo di memoria è di circa 100000 che è 10 volte superiore alla risorsa di memoria FLASH.

ALLU- Un'unità logica aritmetica sincrona con il segnale di clock e basata sullo stato del contatore del programma ( Contatore di programma) seleziona dalla memoria del programma ( VELOCE) comando successivo e lo esegue.

Il segnale di clock per il microcontrollore è generato da un generatore di clock e può essere fornito da diverse fonti disponibili tra cui scegliere:

  • oscillatore RC interno calibrabile alla frequenza desiderata;
  • risuonatore ceramico o al quarzo con condensatori (non disponibile su tutti i modelli);
  • segnale di clock esterno.

La sorgente del clock viene impostata utilizzando i bit FUSE.

FUSIBILI(dall'inglese: fusione, spina, fusibile) - 4 byte speciali (4 * 8 = 32 bit) di dati che configurano alcuni parametri globali del microcontrollore durante il processo del firmware. Dopo aver aggiornato il firmware, questi bit non possono essere modificati tramite il programma interno scritto nel MK.

Con questa configurazione di bit diciamo al microcontrollore questo:

  • quale oscillatore master utilizzare (esterno o interno);
  • dividere o meno la frequenza del generatore per un fattore;
  • utilizzare il pin di reset (RESET) per il reset o come pin I/O aggiuntivo;
  • quantità di memoria per il bootloader;
  • altre impostazioni dipendono dal microcontrollore utilizzato.

processore- questo è il cervello del microcontrollore, che contiene ALU, registri e RAM.

Un blocco di 32 registri di uso generale è collegato all'ALU ( 32 Registri per scopi generali- memoria registri), ciascuno dei quali rappresenta 1 byte di memoria (8 bit). Lo spazio degli indirizzi dei registri di uso generale si trova all'inizio della memoria ad accesso casuale (RAM) ma non ne fa parte. Con i dati inseriti nei registri è possibile eseguire una varietà di operazioni aritmetiche, logiche e di bit. Non è possibile eseguire tali operazioni nella RAM. Per lavorare con i dati dalla RAM, è necessario scriverli nei registri, eseguire le operazioni necessarie nei registri e quindi scrivere i dati risultanti dai registri nella memoria o in altri registri per eseguire alcune azioni.

RAM- RAM. È possibile scrivere dati dai registri su di esso , leggere i dati nei registri; tutte le operazioni sui dati e i calcoli vengono eseguiti nei registri. Per le diverse famiglie di chip AVR, la dimensione della RAM è limitata:

  • ATxmega: fino a 32 KB;
  • ATmega - 16KB;
  • ATtiny - 1 KB.

Comparatore analogico- questo blocco confronta tra loro due livelli di segnale e memorizza il risultato del confronto in un determinato registro, dopodiché è possibile analizzare il risultato presentato ed eseguire le azioni necessarie. Ad esempio: puoi utilizzare questo blocco come ADC (convertitore analogico-digitale) e misurare la tensione della batteria, se la tensione della batteria ha raggiunto un livello basso, eseguire alcune azioni, lampeggiare il LED rosso, ecc. Questo modulo può essere utilizzato anche per misurare la durata dei segnali analogici, leggere le modalità operative impostate del dispositivo utilizzando un potenziometro, ecc.

Convertitore A/D- questo blocco converte il valore della tensione analogica in un valore digitale, con cui si può lavorare nel programma e in base al quale si possono eseguire determinate azioni. Di norma, l'intervallo di tensione fornito all'ingresso ADC nel microcontrollore AVR è compreso tra 0 e 5,5 Volt. Per questa unità è molto importante che il microcontrollore sia alimentato da una fonte di alimentazione stabile e di alta qualità. Molti microcontrollori AVR dispongono di uno speciale pin separato per fornire alimentazione stabile al circuito ADC.

Interfaccia LCD- interfaccia per il collegamento di un indicatore o display a cristalli liquidi. Servono per visualizzare informazioni, lo stato del dispositivo e dei suoi componenti.

USART- interfaccia seriale asincrona per lo scambio dati con altri dispositivi. È presente il supporto al protocollo RS-232, grazie al quale è possibile collegare il microcontrollore per scambiare dati con un computer.

Per tale connessione tra MK e la porta COM del computer, è necessario un convertitore logico del livello di tensione (+12 V per COM a +5 V per il microcontrollore) o semplicemente RS232-TTL. Per scopi simili vengono utilizzati microcircuiti MAX232 e simili.

Per collegare il microcontrollore a un computer tramite USB utilizzando l'interfaccia UART, è possibile utilizzare un microcircuito specializzato FT232RL. Pertanto, sui nuovi computer e laptop, senza avere una porta COM fisica, è possibile associare un microcontrollore utilizzando una porta USB tramite l'interfaccia USART.

TWI- interfaccia per lo scambio dati tramite bus bifilare. A tale bus dati possono essere collegati fino a 128 dispositivi diversi utilizzando due linee dati: un segnale di clock (SCL) e un segnale dati (SDA). L'interfaccia TWI è analoga alla versione base dell'interfaccia I2C.

A differenza dell'interfaccia SPI (un master e uno/più slave), l'interfaccia TWI è bidirezionale; consente di organizzare una piccola rete interna tra più microcontrollori.

Temporizzatore del cane da guardiaè un sistema per monitorare il blocco del dispositivo e quindi riavviarlo. È come un pulsante RESET automatico per un vecchio computer con un sistema operativo difettoso.))

Porte di I/O, GPIO- si tratta di un insieme di blocchi di porte di ingresso/uscita ai cui pin è possibile collegare una varietà di sensori, dispositivi di esecuzione e circuiti. Il numero di pin di ingresso/uscita che provengono dalle porte del microcontrollore può variare da 3 a 86.

I driver di uscita nelle porte del microcontrollore AVR consentono di collegare direttamente un carico con un consumo di corrente di 20 mA (massimo 40 mA) con una tensione di alimentazione di 5 V. La corrente di carico totale per una porta non deve superare gli 80 mA (ad esempio, appendere un LED con una corrente di 15-20 mA su 4 pin per una delle porte).

Interruzioni- si tratta di un blocco che ha il compito di reagire e lanciare determinate funzioni quando un segnale arriva a determinati ingressi del microcontrollore o a causa di qualche evento interno (ad esempio, il ticchettio di un timer). Per ogni interruzione viene sviluppata e registrata in memoria una subroutine separata.

Perché questo blocco è chiamato blocco di interrupt? - perché quando si verifica un evento specifico dell'interrupt, l'esecuzione del programma principale interrotto e si verifica l'esecuzione prioritaria della subroutine scritta per l'interrupt corrente. Al termine del sottoprogramma l'esecuzione del programma principale riprende dal momento in cui era stata interrotta.

Temporizzatori/Contatori- una serie di timer e contatori. Un microcontrollore contiene tipicamente da uno a quattro timer e contatori. Possono essere utilizzati per contare il numero di eventi esterni, generare segnali di una certa durata, generare richieste di interruzione, ecc. La larghezza dei timer e dei contatori è di 8 e 16 bit (cercare il chip nella scheda tecnica).

Conclusione

Questo è sostanzialmente tutto ciò che è utile sapere inizialmente sulla struttura del microcontrollore AVR. Inoltre, nel processo di lavoro e programmazione, avrai l'opportunità di studiare nella pratica le schede tecniche di diversi modelli di chip AVR, apprendere più in dettaglio i principi di funzionamento di ciascuno dei cubi strutturali MK e studiare come funzionano, giocare con il debug , eccetera.

Nel prossimo articolo cercheremo di comprendere l'etichettatura dei microcontrollori e penseremo ai chip più accessibili e adatti per lo studio iniziale.