introduzione ai microcontrollori - poloprato.unifi.it · microcontrollori workshop 08/06/2011...
TRANSCRIPT
Introduzione ai Microcontrollori
Workshop 08/06/2011
Dott.Ing.Marco Frosini – Qprel srlDott.Ing.Lorenzo Giardina – Qprel srl
Slide 1 di 27
L'elettronica digitale PRIMA dei microcontrollori
Logic Family
EPROM
CPLD
Elemento base: Transistor
Slide 2 di 27
L'elettronica digitale PRIMA dei microcontrollori
Scheda RAM 64KB
Centralina auto: ECU
Fibre-optic ring network Olivetti
Slide 3 di 27
Esigenze tecniche e di mercato
Reti logiche Logiche programmabili Controlli digitali e
analogici
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
Riduzione dimensioni, riduzione costi, flessibilità, programmabilità
Slide 4 di 27
Esigenze tecniche e di mercatoIl 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
Linee I/O
Memoria Flash
Convertirore A/D
Timer
USART
SPI
PWM
...
Microprocessore: Unità di calcolo
Unità di controllo
Memoria istruzioni e calcolo
Slide 7 di 27
Microcontrollore e microprocessoreIl microcontrollore è un'estensione del microprocessore, le sue
caratteristiche lo avvicinano molto ad un computer completo
Microcontrollore: Frequenza clock: oltre 1 GHz
Numero bit: 8/16/32
Ridotto set di istruzioni
Watt minimi dissipati: 0,001
Pezzi venduti annui: 11000*106
Prezzo USD: 0,5
Microprocessore: Frequenza clock: oltre 3 GHz
Numero bit: 32/64
Elevati set di istruzioni
Watt minimi dissipati: 50
Pezzi venduti annui: 1000*106
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 Harvard
Architettura Van Neumann
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: periferiche
Periferiche bidirezionali di I/O
Convertitori ADC e DAC multicanale
UART Asynchronous Receiver Transmitter
Bus (SPI, I2C, CAN, LIN, USB) interfacciamento protocolli standard
Timer, Contatori, Comparatori PWM modulazione segnale di
uscita
Slide 16 di 27
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 microcontrolloriAtmel Xmega(ATxmega256A3B)
Arch. 8 bit
256Kbyte flash
4 Mbyte EEPROM
64 pin
Max Freq. 32MHz
12 bit ADC / DAC
7 timer/counters (16 bit)
6 USART
Max Current: 15mA
Prezzo unitario: 5€
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(AT91SAM9263)
Arch. 32 bit
External flash
324 pin
Max Freq. 240MHz
TFT/STN LCD controller
Audio controller
USB host e device
10/100Mbit Ethernet
SD/MMC interface
Max Current: 70mA
Prezzo unitario: 12€
Slide 18 di 27
Applicazioni quotidiane
ATtiny13a(avr 8 bit low cost)
ATxmega(avr 8 bit Hi-end)
AT91SAM(arm9 32bit)
Slide 19 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
MISO: Master In Slave Out
SCLK: Serial Clock
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) Pascal3) Basic
Esempio tipico della struttura di un ambiente di sviluppo:
Slide 24 di 27
- Su microcontrollori capaci di integrare un sistema operativo e possibile utilizzare qualsiasi tipo di linguaggiodi programmazione.
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
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
0 0 0 0 0 1 1 1
0 0 0 0 0 1 0 1
Slide 26 di 27