seminario sui microcontrollori - romani/dida03/lezioni/microcontrollori.pdf · • asm con poche,...
TRANSCRIPT
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Seminario sui
Microcontrollori
Davide Gennaretti, Matteo Nicolini
AA 2003-04 II Facoltà di Ingegneria Elettronica
Cesena
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Cosa sono i microcontrollori?Piccoli computer concentrati in un chip…
• Un Datapath con – Una ALU. – Decoder per POCHE
istruzioni. – Registri generali (e funzione) – Eventuale Interrupt Controller
• RAM x dati. • EPROM (o FLASH) x codice. • Porte di I/O digitale. • Altre periferiche
– Timer interno– AD Converter– USART (seriale)– EEPROM dati– …
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
A cosa servono i “micro”?Tutto quello che è difficile fare a componenti discreti, ma metterci un PC è troppo!
• Applicazioni “stand alone”,semplici e poco costose:– Distributori Automatici– Strumenti ‘intelligenti’– Centraline:
• Macchine automatiche
• Automotive
– Sistemi Distribuiti
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Caratteristiche EssenzialiFacile ed affidabile, basta non chiedere troppo …
• Facilità di lavoro– Semplice montaggio su scheda
• E’ tutto dentro (oggi anche il clock!)• Non serve progettare una MotherBoard!
– Semplice Programmazione • ASM con poche, semplici istruzioni• Disponibili compilatori Asm, C, basic, …• Molte funzionalità Hardware integrate
• Affidabilità e robustezza– Una volta programmato … VA!
• Limiti nelle prestazioni– Flessibilità (c’e’ quello che c’è …) – Potenza di calcolo limitata
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Cosa offre il Mercato …Tutto e di più: attenzione alla scelta.
• Varie Marche – Microchip, Motorola, STM, NEC, etc…
• Vari “tagli” – Processore: RISC, 8 bit e 16 Bit (pochi a 32). – Memorie: 1K-1M (codice), 128-16K (dati).– Pinout: da 8 pin a 80.– Interrupt, Power Saving, – Periferiche:
• Porte digitali• Comunicazione Seriali, Parallela, CAN, USB, etc.• ADC – DAC – driver PWM – comparatori Analogici• Timer, Oscillatori secondari
• Varie tipologie di programmazione– Assembler, Compilatori C, Basic, etc.
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Noi qui oggi parliamo del
Microchip PIC• Caratteristiche Hardware• Architettura Interna• Organizzazione di Memoria
– Istruzioni e Stack– Dati (RAM e EEPROM)
• Instruction Set• Main Code vs Interrupt Routine Service• Programmazione in C … poi vediamo.• Alimentazione e Reset• Oscillatore di Sistema• Porte di Ingresso e Uscita• Porte con funzioni Speciali:
– PortA à ADC– PortB à Interrupt On Change– PortCà USART e SPI-I2C
• Periferiche: Timer 1
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
PIC 18x: Caratteristiche HW
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
PIC 18x: Architettura Interna• Instruction Path:
– PC à Flash
Program Memory
à IstruzioneCorrente:
– Decodifica– Esecuzione
• Data Path:– ALU su
W-Register eMUX-Value
– Porte,Periferiche…
• Configuration:– Oscillatore– WatchDog– …
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Organizzazione della Memoria
• Data Memory (& EEPROM): – 4/16 Banks da 256 byte– SFR nella parte ALTA,
GPR in basso.
• Due blocchi di memoria separati (Harward Architecture):
• Instruction Memory (& Stack): – 21 Bit di Program Counter– 2 Interrupt location (2 Level IRQ)– Single Bank Instruction Memory
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
PIC 18x: Instruction Set
Aritmetiche e Logiche su Byte e “Letterali”
Operazioni su Singolo Bit
Controllo Programma e Stack (Interrupt, Subroutines)
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Main Flow vs Interrupt Routine Service (IRS)Cosa succede quando arriva un interrupt ?
Goto IRS0 (2000H)0008H (IRQ0 Vector)
2000H (IRS Start)
0020H (Main Start)
Goto IRS1 (2000H)0018H (IRQ1 Vector)
Goto Main (0020H)0000H (Reset Vector)
IRS0:Test Interrupt Flag:
Return from Interrupt
Se TMR1IF àSegmento Timer1
Se ADCIF àSegmento ADC
Main Flow:Inizializzazioni, GIE=1
CICLO INFINITO(Macchina
a Stati)
Alla partenza (dopo ogni Reset) si parte dalla locazione 0000H, e si salta al Main, che fa le inizializzazioni, attiva il Global InterruptEnable e parte il suo ciclo infinito.
All’arrivo di un Interrupt (di livello 0) il PIC passa a eseguire la locazione 0008H, che rimanda alla IRS0, dove è eseguito il segmento relativo al Interrupt che si è attivato, poi si ritorna al Main Flow.
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
PIC 18x: Programmazione in ‘C’ovvero come faccio convivere la gestione degli Interrupt con la programmazione in C…
void main () {• Impostazioni iniziali
– Direzione delle PORTE– Valore iniziale delle PORTE– Periferiche di Comunicazione– Timer– Altre Periferiche
• Attivazione del GIE(Global Interrupt Enable)
• Ciclo infinito…while (1){Macchina a Stati, che attiva:
– Comunicazioni– Misure– Temporizzazioni– …
} }
Void isr () {• If ( timer )
{ routine gestione timerAggiorna ‘Time’ }
• If ( RX Seriale ) { Salva il byte ricevuto
nel buffer ‘RX-Seriale’ }• If ( ADC Conversion Finita )
{ Salva il dato letto nel buffer }
• . . . }
BASE DATI = STATOInt Time;Char * RX-Seriale;Int Dato-ADC;
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Alimentazione e Reset
• AlimentazioniDue versioni per ogni Chip– Flash (F)
• Funzionamento a 5V, ± 10%• Velocità anche molto alta
– Flash Low Voltage (LF)• Da 2 Volt a 5,5V• Velocità ridotta
• Rete R-C per il Power On Reset (POR)– Basso costo
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Oscillatore di Sistema
• Diverse soluzioni possibili(mediante il registro di configurazione del PIC)
– Quarzo o Risonatore Ceramico• Altissima Precisione• Velocità di Clock anche molto alta• Consumo elevato• Innesco “lento”• Due pin necessari (osc. IN-OUT)
– Oscillatore Esterno (Quarzo o no)• Solo un pin necessario (osc. IN)• Maggior Costo
– Rete R-C• Bassa precisione (10-20%)• Basso costo• Solo un pin necessario
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Porte di Ingresso/Uscita Digitali
• Organizzate in “PORT” da 8 bit ciascuno:– Registro di Direzione TRIS
(contiene ‘1’ nei bit relativiai pin che saranno USCITE)
– Registro di Valore PORT(contiene ‘1’ nei bit relativiai pin che saranno ALTI)
• Read-Write diretto• Alta corrente di uscita• RINà 8
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Porte con Funzioni Speciali: PortA à ADC
• possibile uso comeingressi analogici:(ADC da 8-10 bit)
– TRIS e PORT– Registri di
Controllo ADC
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Porte con Funzioni Speciali: Port B à IRQ On Change; Port C à RS232
PortB: IRQ On Change PortC: USART & (I2C o SPI)
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Timer 0,1,2: sono CONTATORIPROGRAMMABILIcon ingressoESTERNO oINTERNO (CLK);Prescaler fisso(1,2,4,8) e Conteggio a 8 o 16 bit.
A fine conteggioattivano un INTERRUPT(TMR1IF)
Periferiche: Timer 1
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Demo: MPLAB à ICD2 à PICDEM2+• Software MPLAB (PC)
– Editor– Compilatore C– Debugger
• Interfaccia USB àIn Circuit Debugger 2
– Programmatore – Debugger
• Solo quattro fili àPIC 18F242 su Scheda di Test PICDEM2 Plus:
– Led e Tasti,– Display LCD– Ingressi Analogici– RS232, etc…
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Schema Elettrico
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
MPLAB: esempi di programma• Analisi delle Routine di Basso livello
– Inizializzazione Porte– LCD– Setup e Attivazione ADC– Setup del Timer, IRS– Setup e Utilizzo RS232
• Conteggio di S2 e visualizzazione sui LED– Solo fronte di Salita…– Debounce– Uscita anche sul LCD
• Lettura del ADC– Scrittura sul LCD– Frame Rate? Timer.– Uscita sulla RS232.
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
MPLAB
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
void main () {• Impostazioni iniziali
– Direzione delle PORTE– Valore iniziale delle PORTE– Periferiche di Comunicazione– Timer– Altre Periferiche
• Eventuale attivazione del GIE(Global Interrupt Enable)
• Ciclo infinito…while (1){Macchina a Stati, che attiva:
– LCD– ADC– Temporizzazioni– Seriale
} }
Organizzazione del software
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Organizzazione del software
§Libreria di funzioni chevengono “incluse” nel main flow
§Chiamata diretta ad altolivello
§Implementazione abasso livello trasparente
§Maggior leggibilità delsoftware
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Utilizzo delle porteovvero operazioni di INPUT-OUTPUT su TASTI, LED
§Inizializzazione Porte
§Rilevazione della pressionedi un tasto
§Conteggio del numero dipressioni del tasto
üProblema del bounce
§Scrittura sui LED collegatia PORTB
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Utilizzo delle porteovvero operazioni di INPUT-OUTPUT su TASTI, LED e LCD
§Inizializzazione Porte
§Inzializzazione LCD
§Cancellazione LCD
§Scrittura su LCD (cont=)
§Rilevazione della pressionedi un tasto con debounce SW
§Scrittura del risultato su LCD
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini
Utilizzo del convertitore ADovvero lettura di un segnale analogico e sua visualizzazione a display
§Inizializzazione Porte
§Inzializzazione LCD
§Inizializzazione ADC
§Cancellazione LCD
§Scrittura su LCD (adc=)
§Rilevazione della pressionedi un tasto
§Conversione analogico-digitale
§Conversione dei dati binari inesadecimale
§Scrittura su LCD in esadecimale