Sei sulla pagina 1di 6

Vectored Interrupt Controller

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

1/6

Microcontrollori e Microprocessori
Corso di progettazione su SoC ARM Prof. N. Masarone Lab.: St. 132 (S2DEL Solid State and Diamond Electronics Lab.) e.mail: info@engsistemi.com

Esercitazione 14 novembre 2008

S2DEL Solid State and Diamond Electronics Lab.

ROMA
Universit degli Studi

TRE

Vectored Interrupt Controller

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

2/6

Obiettivi della lezione


External interrupts: descrizione dei registri Utilizzo del Vectored Interrupt Controller Routine di servizio interrupt (ISR) Uso di un tasto per accensione/spegnimento LED con GPIO in modalit polling Uso di un tasto per accensione/spegnimento LED con EINT0 in modalit interrupt Gestione del debouncing Modifica del codice per nuove funzionalit

user.manual.lpc2101.lpc2102.lpc2103.pdf
S2DEL Solid State and Diamond Electronics Lab.
ROMA
Universit degli Studi

TRE

Vectored Interrupt Controller

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

3/6

Utilizzo di P0.16
Il pin P0.16 viene utilizzato come input del tasto in modalit polling; il pin P0.8 utilizzato come output per il pilotaggio del LED. Montare il LED collegando l'anodo a P0.8 ed il catodo alla resistenza di limitazione da 1 k, con l'altro capo di questa connesso a massa (GND). Montare una resistenza di pullup da 10 k su P0.16 e collegare un tasto normalmente aperto tra P0.16 e la massa della scheda (per il montaggio vedere l'ultima pagina). Scrivere il codice in C che permetta al tasto di comandare l'accensione e lo spegnimento del LED in funzionamento toggle : ad ogni pressione del tasto il LED deve cambiare stato (acceso/spento). Inserire nel ciclo principale una pausa di circa 2 secondi ed analizzare la capacit del programma di catturare correttamente lo stato del tasto. Una soluzione riportata nel progetto polling_vs_interrupt sul sito eNGSistemi all'indirizzo: http://www.engsistemi.com/documents/polling_vs_interrupt.zip
S2DEL Solid State and Diamond Electronics Lab.
ROMA
Universit degli Studi

TRE

Vectored Interrupt Controller

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

4/6

Utilizzo di EINT0
Con lo stesso montaggio precedente utilizzare il pin P0.16 come EINT0; abilitare l'interrupt di EINT0 scrivendo una funzione ISR che gestisca la commutazione della variabile per il funzionamento toggle del LED: ad ogni pressione del tasto il LED deve cambiare stato (acceso/spento). Inserire nel ciclo principale una pausa di circa 2 secondi ed analizzare la capacit del programma di catturare correttamente lo stato del tasto. Una soluzione (modificare opportunamente i commenti) riportata nel progetto polling_vs_interrupt sul sito eNGSistemi all'indirizzo: http://www.engsistemi.com/documents/polling_vs_interrupt.zip Verificare l'importanza del ciclo di ritardo nella ISR per evitare che ci siano rientri a catena nella stessa routine di gestione dell'interrupt, dovuti ai rimbalzi del segnale sul tasto. Modificare il codice scritto nelle esperienze precedenti per l'utilizzo delle periferiche in modalit interrupt (timer, ADC).
ROMA
Universit degli Studi

S2DEL Solid State and Diamond Electronics Lab.

TRE

Vectored Interrupt Controller

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

5/6

polling su P0.16
leggi tasto

interrupt su EINT0
v
toggle

f
led OFF

tasto premuto

led ON

inverti toggle pausa 2s

v
led ON

toggle

f
led OFF

ISR di EINT0
inverti toggle pausa debouncing

pausa 2s

S2DEL Solid State and Diamond Electronics Lab.

ROMA
Universit degli Studi

TRE

Vectored Interrupt Controller

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

6/6

Collegamento tra BBENG4ARM e breadboard EINT0 VDD P0.16 Vss P0.8 (3.3V) (input) (gnd)(output)

S2DEL Solid State and Diamond Electronics Lab.

ROMA
Universit degli Studi

TRE