Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
tutorial<br />
progetti tutorial<br />
Port Expander<br />
Gestirlo con<br />
un PIC<br />
Android<br />
Google<br />
“App Inventor”<br />
Raspberry Pi<br />
Acquisizione dei<br />
segnali digitali<br />
Prima di illustrare alcune<br />
applicazioni pratiche degli interrupt<br />
e dei timer è opportuno fornire<br />
le basi teoriche su queste<br />
importantissime risorse<br />
e funzionalità<br />
Figura 1–Schema logico-funzionale degli<br />
interrupt del PIC 16F877. Il suffisso E indica il<br />
bit di enable dell’interrupt mentre il suffisso F<br />
(Flag) indica lo stato dell’interrupt [1]. Si<br />
analizzi attentamente il contenuto della<br />
Tabella 2 per maggiori dettagli.<br />
Il concetto di interrupt è utilizzato soprattutto<br />
in informatica e nasce come risposta<br />
a problematiche legate alla gestione<br />
delle periferiche da parte di un processore.<br />
In questo senso, un interrupt (o interruzione)<br />
è un segnale che indica il bisogno di attenzione<br />
da parte di una periferica. Con un tale<br />
segnale la periferica invia sostanzialmente<br />
una richiesta di servizio al sistema operativo<br />
ma la stessa richiesta può venire anche<br />
da un processo in esecuzione qualora si ve-<br />
rubriche<br />
rifichino determinate condizioni. Per questo<br />
motivo, gli interrupt possono essere sia hardware<br />
che software. Gli interrupt hardware<br />
sono normalmente generati da dispositivi<br />
esterni alla CPU (generalmente dispositivi di<br />
I/O). Gli interrupt software sono invece originati<br />
da eventi di natura software legati ai<br />
processi in esecuzione.<br />
Un interrupt comporta, in ogni caso, che il<br />
processore debba prontamente memorizzare<br />
lo stato del processo in esecuzione ed<br />
iniziare l’esecuzione di una routine che<br />
di ANTONIO GIANNICO<br />
CORSO MIKROPASCAL PER PIC<br />
INTERRUPT E TIMER<br />
(parte ottava)<br />
esegue il compito richiesto dall’interrupt.<br />
Servito l’interrupt, terminato cioè il servizio<br />
che ne ha portato alla risoluzione, il processore<br />
riprende l’esecuzione del processo<br />
interrotto precedentemente. Le situazioni<br />
in cui in un calcolatore possono verificarsi<br />
degli interrupt sono molteplici; si verifica<br />
un interrupt, per esempio, se:<br />
•un processo tenta di eseguire operazioni<br />
non valide come una divisione per zero;<br />
•un dispositivo di I/O informa la CPU che<br />
è disponibile ad inviare o ricevere dati;<br />
•in occasione del debugging di un codice.<br />
Questi tre esempi possono essere compresi<br />
in maniera intuitiva; in realtà gli interrupt<br />
che possono interessare una CPU sono<br />
molto più numerosi di quanto si possa<br />
pensare, sia per tipologia che per la frequenza<br />
con la quale si manifestano.<br />
L’integrazione, nell’architettura di una CPU,<br />
di interrupt apre infatti le porte ad una gestione<br />
particolarmente efficiente e dinamica<br />
di eventi sia interni che esterni, sia hardware<br />
che software che necessitano, per<br />
loro natura, di urgente attenzione. In genere<br />
si tratta di eventi la cui gestione perderebbe<br />
di efficacia nel caso in cui fosse ba-