Introduzione ai Microcontrollori Workshop 08/06/2011 Dott.Ing.Marco Frosini Qprel srl Dott.Ing.Lorenzo Giardina Qprel srl Slide 1 di 27
L'elettronica digitale PRIMA dei microcontrollori Elemento base: Transistor EPROM Logic Family CPLD Slide 2 di 27
L'elettronica digitale PRIMA dei microcontrollori Scheda RAM 64KB Fibre-optic ring network Olivetti Centralina auto: ECU Slide 3 di 27
Esigenze tecniche e di mercato Le richieste di flessibilità e integrazione hanno generato la necessità di dover raggruppare: Parallelismo delle operazioni Numero delle variabili di controllo Velocità di risposta Modularità del sistema Affidabilità del controllo Flessibilità dei componenti Reti logiche Logiche programmabili Controlli digitali e analogici Riduzione dimensioni, riduzione costi, flessibilità, programmabilità Slide 4 di 27
Esigenze tecniche e di mercato Il microprocessore diventa indispensabile quando il numero delle variabili da controllare diventa elevato Comunica con l'esterno solo mediante porte di input/output Esegue esclusivamente operazioni logiche, aritmetiche e di controllo Elabora sia dati prodotti internamente che provenienti da dispositivi esterni Totalmente dipendente da elementi periferici Non presenta elementi per la memorizzazione permanente dei dati Slide 5 di 27
Esigenze tecniche e di mercato Il microcontrollore racchiude tutte le caratteristiche del microprocessore aggiungendo le possibilità di: Comunicazione diretta con dispositivi esterni integrando periferiche interne Memorizzazione di dati o programmi Effettuare operazioni di controllo, ricezione ed elaborazione segnali In generale non necessitano ulteriori aggiunte di memoria RAM oltre a quella integrata Eseguono esclusivamente le operazioni legate al firmware con il quale sono stati programmati Slide 6 di 27
Microcontrollore e microprocessore Microcontrollore: Microprocessore: Microprocessore Unità di calcolo Linee I/O Unità di controllo Memoria Flash Memoria istruzioni e calcolo Convertirore A/D Timer USART SPI PWM... Slide 7 di 27
Microcontrollore e microprocessore Il microcontrollore è un'estensione del microprocessore, le sue caratteristiche lo avvicinano molto ad un computer completo Microcontrollore: Microprocessore: Frequenza clock: oltre 1 GHz Frequenza clock: oltre 3 GHz Numero bit: 8/16/32 Numero bit: 32/64 Ridotto set di istruzioni Elevati set di istruzioni Watt minimi dissipati: 0,001 Watt minimi dissipati: 50 Pezzi venduti annui: 11000*106 Pezzi venduti annui: 1000*106 Prezzo USD: 0,5 Prezzo USD: 50 Slide 8 di 27
Microcontrollore: vantaggi L'integrazione delle periferiche su un singolo chip porta vantaggi legati a: Minor numero di dispositivi discreti per la realizzazione di un sistema Dimensioni ridotte del sistema Costi inferiori Sistema nel complesso più affidabile Protezione dalle copiature Risparmio energetico Riprogrammabilità del sistema Comunicazione diretta con altri sistemi Slide 9 di 27
Microcontrollore: svantaggi Gli svantaggi legati all'integrazione su singolo chip sono: Potenza di calcolo limitata Assenza di FPU (Floating Point Unit) nella maggioranza dei dispositivi Gestione dati limitata NECESSITA' di utilizzare più microcontrollori simultaneamente per la realizzazione dello stesso progetto Slide 10 di 27
Microcontrollore In definitiva il microcontrollore è un sistema a microprocessore realizzato con una logica di ottimizzazione del rapporto prezzo/prestazioni. A differenza del microprocessore ha un esteso campo di impiego che può spaziare dai più semplici oggetti di utilizzo quotidiano a complesse architetture in ambito medicale e industriale. Ha una capacità di calcolo relativamente limitata ed esegue esclusivamente una serie di operazioni contenuta all'interno del programma o firmware caricato nella memoria Slide 11 di 27
Microcontrollore: architetture I microcontrollori si distinguono tra loro per: Set di istruzioni: CISC/RISC Organizzazione della memoria: Van Neumann/Harward Frequenza di clock Numero di dispositivi di I/O e di periferiche intergrate Consumo Numero di bit: 4/8/16/32 Il numero di bit rappresenta la dimensione massima del dato gestibile in un unico ciclo macchina. Rappresenta inoltre solitamente la dimensione dei singoli registri e del bus dati Slide 12 di 27
Microcontrollore: Architettura Architettura Van Neumann Architettura Harvard Non è raro trovare architetture miste e/o evoluzioni delle due Slide 13 di 27
Caratteristiche: Van Neumann vs Harvard Van Neumann Adottata in microcontrollori di fascia bassa Svantaggi legati all'utilizzo di un'unica memoria sia per le variabili volatili sia per il codice del programma Harvard Separazione dei bus per i dati e gli indirizzi Vantaggi legati all'accesso contemporaneo a codice e dati o a più dati, diminuendo i tempi di esecuzione Slide 14 di 27
Microcontrollore: Architettura Slide 15 di 27
Microcontrollore: periferiche Periferiche bidirezionali di I/O Convertitori ADC e DAC multicanale Slide 16 di 27 UART Asynchronous Receiver Transmitter Bus (SPI, I2C, CAN, LIN, USB) interfacciamento protocolli standard Timer, Contatori, Comparatori PWM modulazione segnale di uscita
Microcontrollore: periferiche La gestione delle periferiche è regolata mediante i registri interni del microcontrollore. Ogni locazione di memoria del registro è associata ad un significato specifico per la periferica. Esempio: Ogni PIN di una porta può essere configurato sia come ingresso che come uscita mediante il registro DDRx Di conseguenza e possibile assegnare un valore alto o basso allo stesso pin mediante il registro PORTx Slide 17 di 27
Confronto famiglie microcontrollori Atmel ATtiny (ATtiny13A) Arch. 8 bit 1 Kbyte flash 64 byte EEPROM 8 pin Max Freq. 9MHz 10 bit ADC / DAC 1 timer/counters (8 bit) Max Current: 5mA Prezzo unitario: 0,3 Atmel AT91 (ATxmega256A3B) (AT91SAM9263) Arch. 8 bit Arch. 32 bit 256Kbyte flash External flash 4 Mbyte EEPROM 324 pin 64 pin Max Freq. 240MHz Max Freq. 32MHz TFT/STN LCD controller 12 bit ADC / DAC Audio controller 7 timer/counters (16 bit) USB host e device 6 USART 10/100Mbit Ethernet SD/MMC interface Max Current: 70mA Prezzo unitario: 12 Slide 18 di 27 Atmel Xmega Max Current: 15mA Prezzo unitario: 5
Applicazioni quotidiane ATtiny13a (avr 8 bit low cost) ATxmega (avr 8 bit Hi-end) AT91SAM (arm9 32bit) Slide 19 di 27
Scheda di esempio Slide 20 di 27
Programmazione La programmazione del microcontrollore può avvenire mediante scheda di programmazione come: AVRProg, AVRDragon, STK,... SPI: Serial Peripheral Interface MOSI: Master Out Slave In SCLK: Serial Clock MISO: Master In Slave Out SS: Slave Select JTAG: protocollo standard di test funzionale che permette di effettuare debug sul firmware Slide 21 di 27
Programmazione La programmazione può avvenire anche tramite una normale interfaccia seriale (es: RS-232). Il programma viene memorizzato in una specifica area di memoria del microcontrollore definita bootloader. Il microcontrollore all'avvio esegue le istruzioni contenute in questa area di memoria Slide 22 di 27
Linguaggi di programmazione - Tutti i microcontrollori/microprocessori per poter funzionare eseguono del codice macchina ASSEMBLER - Scrivere direttamente in ASSEMBLER è molto faticoso e poco conveniente, oggi ci sono strumenti molto efficienti che permettono di tradurre codice di alto livello in codice macchina COMPILATORI Slide 23 di 27
Linguaggi di programmazione - I linguaggi di programmazione oggi più usati sono: 1) C/C++ 2) Pascal 3) Basic Esempio tipico della struttura di un ambiente di sviluppo: - Su microcontrollori capaci di integrare un sistema operativo e possibile utilizzare qualsiasi tipo di linguaggio di programmazione. Slide 24 di 27
Ambiente di sviluppo Per lo sviluppo di un primo esempio di firmware utilizzeremo il software AVR Studio 5. L'esempio in linguaggio C mostra come utilizzare le periferiche di GPIO di un microcontrollore ATxmega. 1. Avviare AVRStudio 5 ed aprire il progetto gpio_example Slide 25 di 27
Esempio GPIO 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 2. Aggiungere alla funzione main il codice per settare PC0, PC1 e PC2 come PIN di uscita: PORTC.DIR = 1 << PORTC.PIN0CTRL 1 << PORTC.PIN1CTRL 1 << PORTC.PIN2CTR 3. Aggiungere il livello logico di PC0, PC1 e PC2: PORTC.OUTSET = 1 << PORTC.PIN0CTRL; //Scrive 1 su PC0 PORTC.OUTSET &= ~(1 << PORTC.PIN0CTRL); //Scrive 0 su PC0 Slide 26 di 27
Esempio GPIO 4. Aggiungere un lampeggio del led su PC1 5. Impostare PA2 come PIN di ingresso con PULLUP 6. Accendere il led su PC2 quando il tasto su PA2 viene premuto Slide 27 di 27