INTERRUPT Latency
Con questo termine si definisce il tempo che intercorre tra
l' evento di interrupt (il momento in cui il flag relativo va a 1) e il
momento in cui si avvia la prima istruzione all' indirizzo del vettore.
Per interrupt sincroni, ovvero sorgenti interne come i
Timer, il tempo di latenza è 3Tcy.
Per interrupt esterni (asincroni), come gli ingressi INTn o
il cambio di livello sul PORTB, il tempo di latenza varia tra 3 e 4 Tcy; il
tempo esatto dipende dal momento in cui accade l' evento rispetto al ciclo
delle istruzioni.
-
Il flag INTF è campionato qui (ogni Q1)
-
Interrupt latency= 3-4 Tcy
-
CLOCKOUT è disponibile per l' oscillatore interno
-
Per la durata minima dell' impulso INT, consultare le
specifiche AC
-
INTF è abilitato ad essere settato durante ogni momento
del ciclo Q4-Q1
Gli interrupt esterni sono edge triggered, ovvero sono catturati sulla
variazione di stato del pin, programmabile dai registri di controllo della
periferica.
Quando il fronte selezionato appare sul pin, il flag INTF viene posto a 1.
Quando viene eseguita una istruzione che disabilita GIE,
ogni interrupt che era in attesa di esecuzione nel ciclo successivo viene
ignorato. La CPU esegue un NOP nel ciclo immediatamente seguente l'
istruzione che disabilita GIE. L' interrupt resta però in attesa di essere
servito non appena GIE sarà riabilitato. La sua esclusione avviene solo
alla cancellazione del suo flag IF.
Va sempre ricordato che i flag IF vengono settati all'
accadere dell' evento relativo, indipendentemente dal fatto che sia
abilitato l' interrupt corrispondente e/o quello generale.
Questa caratteristica consente di verificare eventi in polling, senza
attivare interrupt, ma, per contro, richiede che il programma provveda alla
cancellazione dei flag quando sono stati gestiti.
Ed è necessario
cancellarli anche prima di abilitare l' interrupt relativo, se c'è la
possibilità che un evento li abbia già portati a 1.