Interrupt non periferici
Sono interrupt non-periferici dipendono da sorgenti a cui
solitamente si fa riferimento per eventi di principale importanza. Esse sono
le seguenti :
I bit di controllo relativi (IE, IF, IP) sono interamente
contenuti nei registri INTCON
/ INTCON2 / INTCON3.
NOTA:
Gli interrupt non periferici sui PORTB dipendono da
segnali esterni applicati a pin del chip. Anche nel caso di Timer0
esiste la possibilità di utilizzare un ingresso di conteggio
esterno.
Ora, sono da considerare approfonditamente due questioni :
-
Tra un segnale ideale ed uno reale possono
esserci differenze sensibili sia per quanto riguarda i tempi di
salita e discesa, sia per la purezza : ad esempio, nel caso di
contatti meccanici, la presenza di rimbalzi tende a creare
numerosi falsi trigger sugli ingressi. Occorre , dove possibile,
operare con la scrittura di debounce software o, dove non
possibile, come ad esempio agli ingressi di conteggio dei Timer/Counter,
inserendo un pre trattamento hardware del segnale per ripulirlo
dai rimbalzi e formare delle transizioni con rampe di salita e
discesa e livelli all' interno delle specifiche del PIC .
-
Il processore può operare a frequenze molto
elevate : ad esempio, con 20MHz di clock il ciclo di istruzione
è 200 ns , con 40MHz di clock si riduce a 100 ns. Questi tempi
possono essere molto brevi se paragonati con i tempi di risposta
di segnali esterni. Se questo è buona cosa in quanto permette
al processore di seguire ottimamente il segnale di ingresso, in
alcune situazioni, se non adeguatamente considerato, si
trasforma , come nel caso d i
impulsi esterni sui pin di interrupt, in
difficoltà a identificare la corretta gestione dell'
evento e in gravose perdite di tempo durante il debug.
La considerazione di questi fattori è fondamentale
quando si voglia interfacciare il processore con l' esterno.
Inoltre, trattandosi di funzioni di ingresso di
segnali esterni, i pin utilizzati come sorgenti di interrupt devono
essere configurati come ingressi digitali. I pin configurati come
uscite sono esclusi.
|
I registri relativi agli interrupt
"non-periferici" - INTCON
Vediamo più nel dettaglio i registri di controllo delle
sorgenti di interrupt non periferici.
Il registro INTCON contiene:
-
le principali funzioni di
controllo generale dell' interrupt
-
i bit di abilitazione e flag di TMR0, INT0 e PORTB
Change
INTCON
|
bit
|
GIE
GIEH
|
PEIE
GIEL
|
TMR0IE
|
INT0IE
|
RBIE
|
TMR0IF
|
INT0IF
|
RBIF
|
funzione
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
default
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
-
bit 7 GIE/GIEH
: Global Interrupt Enable/ GIE High priority
con
IPEN = 0
1 = Abilita tutti gli interrupt
0 = Disabilita tutti gli interrupt
con
IPEN = 1
1 = Abilita tutti gli interrupt ad alta priorità
0 = Disabilita tutti gli interrupt ad alta priorità
-
bit 6 PEIE/GIEL
: Peripheral Interrupt Enable/ GIE Low priority
con
IPEN = 0
1 = Abilita tutti gli interrupt periferici
0 = Disabilita tutti gli interrupt periferici
con
IPEN = 1
1 = Abilita tutti gli interrupt a bassa priorità
0 = Disabilita tutti gli interrupt a bassa priorità
-
bit
5 TMR0IE :
Timer 0 Interrupt Enable
1 = abilita l' interrupt per overflow di Timer 0
0 = disabilita l' interrupt per overflow di Timer 0
-
bit 4 INT0IE
: INT0 External Interrup Enable
1 = INT0 abilitato
0 = INT0 disabilitato
-
bit 3 RBIE
: RB Port Change Interrupt Enable
1 = RB on change abilitato
0 = RB on change abilitato
-
bit 2 TMR0IF
: Timer 0 Interrupt Flag
1 = Overflow di TMR0
0 = TMR0 non in overflow
-
bit 1 INT0IF
: INT0 External Interrupt Flag
1
= evento su INT0 avvenuto
0
= nessun evento su INT0
bit 0
RBIF
: RB On Change Interrupt
Flag
1
= avvenuto cambio
di livello sui pin RB7:4
0
= nesun cambio di livbello
I valori di default al POR sono indicati nella tabella.
I bit 2:0 sono flag e vanno riportati a zero nell'
esecuzione della gestione del relativo interrupt. In particolare il bit 0
se, in caso problemi, continua ad esser a 1 anche dopo la scrittura richiede
la lettura del PORTB, dopo di che sarà possibile la cancellazione.
Il registro INTCON2
Il registro INTCON2 contiene:
-
i bit di programmazione del fronte di commutazione per
gli interrupt INT
-
i bit di prioritò di PORTB Change e TIMER0 (INT0 è
sempre ad alta priorità)
-
e, singolarmente, il bit di disabilitazione dei weak
pull-up di PORTB
INTCON
|
bit
|
RBPU
|
INTEDG0
|
INTEDG1
|
INEDG2
|
-
|
TMR0IP
|
-
|
RBIP
|
funzione
|
R/W
|
R/W
|
R/W
|
R/W
|
-
|
R/W
|
-
|
R/W
|
default
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
-
bit 7 !RBPU
: PORTB Pull UP Enable
1 =
disabilita tutti i pull up di PORTB
0 = abilita tutti i pull up di PORTB
-
bit 6 INTEDG0
: External Interrupt 0 Edge Select bit
1
= Risng edge
0 =
Fallinf edge
-
bit
5 INTEDG1
: External Interrupt 1 Edge Select bit
1
= Risng edge
0 =
Fallinf edge
-
bit 4 INTEDG2
: External
Interrupt 2 Edge Select bit
1
= Risng edge
0 =
Fallinf edge
-
bit 3 non utlizzato - 0 in
lettura
-
bit 2 TMR0IP
: Timer 0 Interrupt Priority bit
1 = priorità
alta
0 = priorità bassa
-
bit 1 non utlizzato - 0 in
lettura
-
bit
0
RBIP
: RB Port Change
Interrupt Priority bit
1
= priorità alta
0
= priorità bassa
I valori di default al POR sono indicati nella tabella.
ll registro INTCON3
Il registro INTCON3 contiene:
In pratica è riservato alle funzioni INT1 e INT2 che non
sono presenti nei mid-range e che quindi hanno richiesto un ulteriore
registro negli enhanced.
INTCON
|
bit
|
INT2IP
|
INT1IP
|
-
|
INT2IE
|
INT1IE
|
-
|
INT2IF
|
INT1IF
|
funzione
|
R/W
|
R/W
|
-
|
R/W
|
R/W
|
-
|
R/W
|
R/W
|
default
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
-
bit 7 INT2IP
: INT2 External Interrupt Priority bit
1 = priorità
alta
0 = priorità
bassa
-
bit 6 INT1IP
: INT1 External Interrupt Priority bit
1 = priorità
alta
0 = priorità
bassa
-
bit 5
non
utilizzato - 0 in lettura
-
bit 4 INT2IE:
INT2 External Interrupt
Enable bit
1
= abilitato
0 = disabilitato
-
bit 3 INT1IE
: INT1 External
Interrupt Enable bit
1
= abilitato
0 =
disabilitato
-
bit 2
non
utilizzato - 0 in lettura
bit 1 INT2IF
: INT2 External
Interrupt
Flag bit
1
= evento
avvenuto sul pin INT2
0 = evento
non avvenuto
bit
0
INT1IF
: INT1 External
Interrupt
Flag bit
1
= evento avvenuto
sul pin INT1
0 = evento
non avvenuto
I valori di default al POR sono indicati nella tabella.
Gli interrupt gestiti dai registri INTCON sono da
considerarsi interrupt non-periferici, ovvero il loro controllo avviene
senza l' intervento dei registri PIE/PIR. L' abilitazione di questi
interrupt dipenderà dunque dal solo registro GIE (o GIEH/GIEL).
|
|
Copyright © afg. Tutti i diritti riservati.
Aggiornato il 09/12/10.
|