Microcontrollori
Introduzione
I microcontrollori (MCU) sono componenti che fanno parte dell'elettronica programmabile. Grazie ai microcontrollori possiamo gestire un circuito attraverso un programma scritto appositamente. Ci sono varie architetture di microcontrollori e vari linguaggi di programmazione.
A differenza dei microprocessori, i microcontrollori possiedono tutto cio' di cui hanno bisogno al loro interno (RAM, ROM, EEPROM, ecc.) pero' hanno una potenza di calcolo molto piu' ridotta.
A differenza dei microprocessori, i microcontrollori possiedono tutto cio' di cui hanno bisogno al loro interno (RAM, ROM, EEPROM, ecc.) pero' hanno una potenza di calcolo molto piu' ridotta.
Componenti Interne
All'interno di un microcontrollore troviamo:
- Unita' di elaborazione dati (CPU): la CPU sara' il cuore del microcontrollore, essa gestisce tutte le periferiche interne e le risorse del microcontrollore basandosi sul programma che viene scritto in memoria.
- Memorie: EEPROM, FLASH, ROM, RAM, utilizzate per il salvataggio del programma, esecuzione delle istruzioni ed il salvataggio di variabili importanti ad alimentazione assente.
- Oscillatore: L'oscillatore si occupa di generare delle forme d'onda dalla frequenza, forma e ampiezza variabili a seconda del microcontrollore. Quindi fornisce il clock al microcontrollore per funzionare.
- Timer per gestione interrupt: il flusso del programma e' di tipo sequenziale, ci sono delle istruzioni per deviare il flusso e generare ritardi nell'esecuzione. Gli interrupt invece congelano il flusso se vengono attivati da un particolare evento (per esempio un pulsante viene premuto) e al termine ripristinano il programma come se nulla fosse accaduto.
- Porte di Input/Output: le porte I/O servono a gestire i dispositivi collegati al microcontrollore, ogni porta e' gestita da dei registri, piu' avanti approfondiamo.
- Interfacce di comunicazione (I2C, UART, SPI, ecc.): le interfacce vengono utilizzate per comunicare con il microcontrollore (caricare un programma, interagire con un modulo), ce ne sono di diverse.
- Dispositivi aggiuntivi: non sono compresi nel microcontrollore ma possono essere collegati ad esso per espandere le sue funzionalita'. (Display, Bluetooth, e altri moduli).
CPU
La Central Processing Unit e' divisa in due unita':
- ALU: Arithmetic Logic Unit, questa unita' di occupa dello svolgimento delle operazioni matematiche e logiche.
- CU: Control Unit, si occupa della lettura delle istruzioni dalla memoria, esegue l'istruzione e memorizza il risultato se c'è, scrivendolo in memoria o in un registro della CPU.
Porte I/O
I microcontrollori operano con due stati logici: 0 e 1 con le tensioni 5V/3.3V (High) e 0V (Low). Tramite le porte è possibile inviare e ricevere informazioni, prendendo in considerazione un ATMega 328 (montato su molte schede Arduino) le porte in totale sono 3:
In ogni porta ci sono 3 registri che la gestiscono:
- Porta B: PB0-PB7 (pin digitali da 8 a 13 e i pin del quarzo)
- Porta C: PC0-PC6 (pin analogici da 0 a 5)
- Porta D: PD0-PD7 (pin digitali da da 0 a 7)
In ogni porta ci sono 3 registri che la gestiscono:
- DDR: questo registro (lettura/scrittura) contiene la direzione dei pin, un bit a 0 rappresenta un pin impostato come INPUT mentre un bit a 1 rappresenta un pin impostato come OUTPUT
- PORT: questo registro (lettura/scrittura) contiene lo stato dei pin che cambia a seconda della direzione del pin, se il pin è impostato come INPUT un bit a 1 attiva la resistenza di PULL-UP mentre un bit a 0 la disattiva. Invece se il pin è impostato come OUTPUT un bit a 1 attiva lo stato logico HIGH, un bit a 0 attiva lo stato logico LOW.
- PIN: questo registro (sola lettura) contiene la lettura del segnale collegato al pin nel caso in cui sia impostato come INPUT mentre contiene un segnale alto o basso nel caso in cui il pin sia impostato come OUTPUT.
Memorie
- RAM: Random Access Memory, e' una memoria volatile nella quale vengono copiati i programmi che la CPU deve eseguire
- ROM: Read Only Memory, e' una memoria di sola lettura ed e' una memoria non volatile. Il suo contenuto non e' modificabile se non in fase di costruzione, di solito nella ROM e' contenuto un microcodice, cioe' una serie di istruzioni elementari a basso livello che controllano direttamente il microcontrollore.
- EEPROM: Electrical Erasable Programmable Read Only Memory, e' una memoria di tipo non volatile utilizzata per memorizzare una piccola quantita' di dati necessari quando l'alimentazione viene tolta. (Per esempio delle impostazioni, variabili modificate).
- FLASH: e' una memoria di tipo non volatile, che ospita il programma scritto dall'utente. Quindi e' una memoria riscrivibile (ha anche un ciclo di vita).
Altre Componenti
- ADC: l'Analog Digital Converter permette l'acquisizione di segnali analogici che trasforma successivamente in segnali digitali per essere interpretati dal microcontrollore.
- WatchDog: Il watchdog (letteralmente guardia cani), se attivato genera un reset ad un intervallo prestabilito durante la programmazione. Questo riavvio ciclico e' molto utile nel caso in cui il microcontrollore si trovi in una situazione di stallo o si sia bloccato.
- PWM: Pulse Width Modulation, questo componente e' utilizzato per generare segnali modulati in ampiezza.