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

Seminario sui Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

Feb 16, 2019

Download

Documents

doandung
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Seminario sui Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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

PIC 18x: Caratteristiche HW

Page 8: Seminario sui Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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

Schema Elettrico

Page 21: Seminario sui Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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

MPLAB

Page 23: Seminario sui Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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 Microcontrolloriromani/Dida01/lezioni/microcontrollori.pdf · II Facoltà di Ingegneria Elettronica Cesena. Cesena, ... ovvero come faccio convivere la gestione degli

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