Sorgenti di interrupt "periferici" sono quelle che
sono collegate alle periferiche integrate nel chip.
I loro bit di controllo si trovano nei registri PIE/PIR.
Nei chip della famiglia PIC18F43xx le periferiche sono assai
numerose e di conseguenza lo è anche il numero delle sorgenti di interrupt
e dei registri e bit di controllo.
Le principali periferiche sono:
-
Timer 1
-
Timer 2
-
Timer 3
-
Modulo AD
-
Modulo USART/EUSART (2 interrupt)
-
Modulo MSSP (2 interrupt)
-
Pararllel Slave Port PSP
-
Modulo CCP1
-
Modulo CCP2
-
Comparatori
-
Oscillator Fail
-
High/Low Voltage Detection HLVD
-
Data EEPRO/Flash Write
Tutte queste sorgenti di interrupt dipendono dai registri
PIE1 o PIE2 per i bit IE di abilitazione , dai registri PIR1 o PIR2 per i
bit di flag e dai registri IPIR1 o IPIR2 per la programmazione della
priorità.
Per attivare gli interrupt periferici, oltre a GIE, sarà
necessario attivare anche PEIE, in modalità senza priorità, e GIEH / GIEL
in modalità con priorità.
Alcune sorgenti possono attivare più di un interrupt ed in questo caso i
singoli interrupt sono programmabili separatamente, sia come abilitazione
che come priorità.
La tabella seguente raccoglie questi registri :
Registro
|
Bit
7
|
Bit
6
|
Bit
5
|
Bit
4
|
Bit
3
|
Bit
2
|
Bit
1
|
Bit
0
|
PIR1
|
PSPIF
|
ADIF
|
RCIF
|
TXIF
|
SSPIF
|
CCP1IF
|
TMR2IF
|
TMR1IF
|
PIR2
|
-
|
CMIF
|
-
|
EEIF
|
BCLIF
|
LVDIF
|
TMR3IF
|
ECCP1IF
|
PIR3
|
IRXIF
|
WAKIF
|
ERRIF
|
TXB2IF
|
TXB1IF
|
TXB0IF
|
RXB1IF
|
RXB0IF
|
PIE1
|
PSPIE
|
ADIE
|
RCIE
|
TXIE
|
SSPIE
|
CCP1IE
|
TMR2IE
|
TMR1IE
|
PIE2
|
-
|
CMIE
|
-
|
EEIE
|
BCLIE
|
LVDIE
|
TMR3IE
|
ECCP1IE
|
PIE3
|
IRXIE
|
WAKIE
|
ERRIE
|
TXB2IE
|
TXB1IE
|
TXB0IE
|
RXB1IE
|
RXB0IE
|
IPR1
|
PSPIP
|
ADIP
|
RCIP
|
TXIP
|
SSPIP
|
CCP1IP
|
TMR2IP
|
TMR1IP
|
IPR2
|
-
|
CMPIP
|
-
|
EEIP
|
BCLIP
|
LVDIP
|
TMR3IP
|
ECCP1IP
|
IPR3
|
IRXIP
|
WAKIP
|
ERRIP
|
TXB2IP
|
TXB1IP
|
TXB0IP
|
RXB1IP
|
RXB0IP
|
Registri PIR1 e PIR2
I registri PIRx sono adibiti al controllo delle sorgenti di
interrupt, contenendone i flag di stato.
PIR1
|
bit
|
PSPIF
|
ADIF
|
RCIF
|
TXIF
|
SSPIF
|
CCP1IF
|
TMR2IF
|
TMR1IF
|
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 PSPIF
: Pararllel Slave Port R/W Interrupt Flag
Questo bit è disponibile solo per chip dotato di PORTD (40/44pin)
1 = è stata effettuata una operazione di read o di write
0 = nessuna operazione di read o write
-
bit 6 ADIF
: Analog to Digital Converter Interrupt Flag
1 = conversione AD completata
0 = conversione AD non completata
-
bit
5 RCIF :
EUSART Receive Interrupt Flag
1 = Registro di ricezione seriale RCREG pieno (ricezione
completata)
0 = RCREG vuoto
-
bit 4 TXIF
: EUSART Transmit Interrupt
1 = Registro di trasmissione TXREG vuoto (trasmissione completata)
0 = TXREG pieno
**
Questo flag viene azzerato leggendo il registro TXREG
-
bit 3 SSPIF
: MSSP Port Interrupt Flag
1 = Trasmissione o ricezione completata
0 = Trasmissione o ricezione in corso
-
bit 2 CCP1IF
: CCP1 Interrupt Flag
In
modo Capture
1 = Avvenuta cattura
0 = cattura non avvenuta
in
modo Compare
1 = Avvenuta comparazione
0 = comparazione non avvenuta
bit
non utilizzato in modo PWM
-
bit 1