Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo...

27
Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II Facoltà di Ingegneria Elettronica Cesena

Transcript of Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo...

Page 1: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini

Seminario sui

Microcontrollori

Davide Gennaretti, Matteo Nicolini

AA 2003-04 II Facoltà di Ingegneria Elettronica

Cesena

Page 2: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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– …

Page 3: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 4: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 5: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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.

Page 6: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 7: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini

PIC 18x: Caratteristiche HW

Page 8: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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– …

Page 9: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 10: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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)

Page 11: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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.

Page 12: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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;

Page 13: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 14: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 15: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 16: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 17: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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)

Page 18: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 19: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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…

Page 20: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini

Schema Elettrico

Page 21: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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.

Page 22: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini

MPLAB

Page 23: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 24: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 25: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 26: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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

Page 27: Seminario sui Microcontrollori - ita.ovh · Cesena, 15/03/2004 Davide Gennaretti – Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II

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