Alessandro Grazioli
Alessandro Grazioli Alessandro Grazioli

Alessandro Grazioli



Username
                 

                  Password(dimenticata?)
                 
                       
                         Registrazione
 
 

    Microcontrollori    

Nella prima parte di questo articolo saranno descritti i microcontrollori in generale: definizione, caratteristiche e principali campi di utilizzo. Nella seconda parte sarà descritto, come esempio di approfondimento, il microcontrollore PIC16F876 prodotto dalla Microchip. Ho scelto questo microcontrollore in quanto, tra quelli che ho utilizzato, è quello che conosco meglio e che rappresenta, a mio parere, un'ottima scelta sia per realizzare applicazioni semplici, che per applicazioni più complesse. Per maggiore completezza dell'articolo, nella terza parte, sarà anche descritto un semplicissimo circuito dimostrativo, basato su microntrollore PIC16F84A, prodotto ancora dalla Microchip, che accende in sequenza sette LEDs rossi, uno per volta (come quelli che si trovavano sul cofano di K.I.T.T. nel telefilm Supercar   ).

I due microcontrollori sono illustrati dalla seguente figura:



In generale un microcontrollore è un single - chip computer, cioè un sistema completo basato su microprocessore ed integrato su un singolo chip. In questo modo è ottenuta la massima autosufficienza funzionale ad un prezzo decisamente basso. Enfatizzano l'integrazione (al contrario dei microprocessori che contengono solo la CPU) e sono molto diffusi in una grande varietà di sistemi (televisori, videoregistartori, lavatrici, lavastoviglie, videocamere, macchine fotografiche digitali, forni a microonde, lettori CD e DVD, frogoriferi, nelle centraline elettroniche di automobili e motociclette, nei sistemi di controllo industriale, negli antifurto, nei registratori di cassa, negli sportelli Bancomat, nelle centraline dei semafori, e in molte altri). Come i microprocessori contengono la CPU e gli elementi aritmetico - logici usuali dei processori general - purpose ma, in aggiunta, integrano componenti addizionali come un certo quantitativo di memoria RAM per i dati, di memoria ROM (può essere di vari tipi: PROM, EPROM, EEPROM) per i programmi, di memoria FLASH per mantenere dati permamnenti, periferiche ed interfacce di I/O (input/output), convertitori analogico/digitale ADC e DAC, timer e contatori, USART, PWM (Pulse Width Modulation: modulazione digitale in cui l'informazione è codificata nella forma della durata nel tempo di impulsi, utilizzata ampiamanete per modulare la potenza elettrica inviata ad un carico, come ad esempio ai motori in corrente continua e agli inverter), comparatori e porte esterne.
I microcontrollori operano generalmente ad una velocità decisamente bassa se paragonata ai microprocessori (il clock è circa 32 KHz), ma che però è adeguata ai compiti che sono chiamati ad eseguire. Spesso eseguono lo stesso programma, detto firmware, per tutta la durata del loro impiego. Consumano poco (milliwatts o anche microwatts) e possono anche restare inattivi in attesa del verificarsi di eventi particolari gestiti tramite interrupt. Durante l'inattività il consumo si riduce all'ordine dei nanowatt, rendendoli quindi ideali per applicazioni di bassa potenza o per le quali è necessario che le baterie durino molto a lungo. I microcontrollori sono generalmente impiegati nei sistemi embedded cioè sistemi che sono incorporati in altri sistemi (come quelli descritti in precedenza) e, mentre alcuni di essi possono essere molto sofisticati, la maggior parte di essi hanno richieste minime in termini di memoria e di complessità software, non hanno sistema operativo, non dispongono di una tastiera, di uno schermo, di una stampante, di un disco, ed utilizzano come sistemi di I/O switches, relays, displays LCD, LEDs, dispositivi a radio - frequenza, sensori di temperatura, umidità, luce, etc. I microntrollori offrono risposte real - time ad eventi che occorrono nei sistemi embedded che stanno controllando. Questi eventi sono gestiti tramite interrupt: quando si verifica un evento, un'interruzione informa di ciò il processore che sospende la sequenza corrente di istruzioni ed esegue una routine di servizio dell'interruzione (ISR) che farà tutto ciò che è necessario in base alla sorgente dell'interruzione e, alla fine, il processore riprenderà l'esecuzione della sequenza di istruzioni. Esempi di sorgenti, che dipendono dai dispositivi di I/O del sistema, sono il verificarsi di un buffer overflow, la modifica di un livello logico in seguito alla pressione di un pulsante da parte di un utente, il completamento di una coversione analogico - digitale, dati ricevuti su un canale di comunicazione, ... Le interruzioni possono anche essere utilizzate, nei casi in cui è necessario risparmiare energia, per risvegliare il microcontrollore da uno stato di sleep per cui è bloccato in attesa del verificarsi di un evento.
I programmi dei microcontrollori devono poter risiedere sulla memoria interna in quanto l'aggiunta di memorie esterne sarebbe costoso, e si utilizzano compilatori e linguaggi assemblativi per convertire programmi scritti in linguaggi di alto livello, in un codice macchina compatto che stia sulla memoria interna. Ogni produttore di microcontrollori utilizza un certo linguaggio assemblativo e l'instruction set è fornito nel data - sheet del dispositivo.
Generalmente un microntrollore comprende:

- Una CPU che può andare da un semplice processore a 4 bit, fino a complessi processori a 32 o 64 bit

- Memoria ROM, EPROM, EEPROM o Flash per i programmi e la memorizzazione di dati operativi

- Memoria RAM per i dati temporanei

- Generatore di clock

- Bit di ingresso e uscita discreti che consentono il controllo o la verifica di stati logici

- Interfacce di comunicazione seriale (ad es. Controller Area Network, Inter - Integrated Circuit, ...)

- Ingresso e uscita seriale (ad es. porte seriali UART: Universal Asynchronous Receiver/Transmitter, che consentono di inviare e ricevere dati attraverso una linea seriale con pochissimo carico per la CPU)

- Convertitori analogico - digitale

- Altre periferiche: generatori PWM, timers (come il Programmable Interval Timer che semplicemente conta da un certo valore decrementandolo fino a 0 e poi lancia un'interruzione, e il Watchdog, che resetta il sistema nel caso si verifichino condizioni particolari nel programma, come cicli infiniti; il programma deve infatti inviare un impulso al watchdog ogni x unità di tempo, per dimostrare che tutto sta funzionando correttamente; se l'impulso non viene ricevuto in tempo, il watchdog resetta il sistema; x viene scelto in base al sistema da realizzare), contatori, ...

La forte integrazione dei microcontrollori riduce drasticamente il numero di chips, il cablaggio e la dimensione delle schede circuitali all'interno del sistema, rispetto a quanto sarebbe necessario per realizzare sistemi equivalenti utilizzando chips separati. È anche possibile connettere un singolo pin del microcontrollore a più periferiche interne diverse e selezionare la funzione del pin via software. Ciò è particolarmente utilie quando si usano microcontrolori che dispongono di pochi pins e consente di utilizzare una certa parte per una varietà maggiore di applicazioni.

Molti microcontrollori utilizzazno l'architettura Harvard, utilizzano cioè memorie e bus separati per le istruzioni e i dati, consentendo quindi accessi contemporanei; è inoltre possibile che le parole delle istruzioni abbiano lunghezza diversa (ad esempio 12 bit) rispetto alla lunghezza dei registri e della memoria interna (ad esempio 8 bit).

Le architetture possono variare molto da un produttore all'altro e anche in base allo scopo per cui i microcontrollori vengono progettati.

In origine i microcontrollori erano programmati utilizzando linguaggi Assembly, ma attualmente sono disponibili linguaggi di alto livello che possono essere stati definiti da un certo produttore per una propria linea di prodotti, oppure possono essere linguaggi già esistenti adattati allo scopo (come il C). I compilatori per i linguaggi di questo tipo sono generalmente modificati con aggiunte e limitazioni rispetto alle versioni "standard", in modo da sfruttare al meglio le caratteristiche dei dispositivi da programmare. Per alcuni microcontrollori vengono anche offerti degli ambienti di sviluppo per semplificare il progetto di certe tipologie di applicazioni; i produttori offrono gratuitamente questi ambienti per favorire la diffusione dei loro prodotti. Per alcuni dispositivi sono anche disponibili interpreti (ad esempio per il linguaggio BASIC) e simulatori (come MPLab, offerto dalla precedentemente citata Microchip) che consentono agli sviluppatori di analizzare il comportamento dei microcontrollori quando eseguono il loro programma, prima di programmarli effettivamente. I simulatori mostrano lo stato interno del dispositivo, lo stato dell'output e consentono la definizione di segnali di input per analizzare la reazione corrispondente.



Pagine totali: 6   -   1   2   3   4   5   6




Inserisci un commento

(solo il nome è obbligatorio; tutti gli altri campi sono facoltativi)

Non compilare questo campo 
Nome:    

E-mail:   

Sito web:

Città:       





   1            2009-12-08 10:45:00

Commento di:  luxxx  
finalmente della documentazione in italiano, grazie!!!




Pagine di commenti: 1



 
Alessandro Grazioli