Tutorials - PIC18 by Data Sheet

 

INTERRUPT


INTERRUPT periferici

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    TMR2IF : Timer2 to PR2 Match Interrupt Flag
                 1 = TMR2 e PR2 match
                 0 = nessuna equivalenza tra TMR2 e PR2

  • bit0     TMR1IF  : Tiemr1 Interrupt Flag
                 1 = overflow di Tmr1
                 0 = nessun overflow 

  •  


NOTE:
  1. Tutti i flag (ad eccezione di TXIF) devono essere azzerati da programma. La mancanza di azzeramento da parte del programma, dopo aver analizzato il flag, riporta immediatamente al vettore di interrupt non appena si esce con il retfie.

  2. PSPIF è presente solo su chip dotati di PORTD, ovvero in package da 40/44 pin; per chip a 28 pin è sempre letto come 0

  3. Alcune periferiche hanno più di una sorgente di interrupt disponibile (ad esempio USART e MSSP)

E per quanto riguarda PIR2

PIR2

bit

OSCFIF

CMIF

-

EEIF

BCLIF

HLVDIF

TMR3IF

CCP21F

funzione

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     OSCFIF : Oscillator Fail Interrupt Flag bit
                1 =
    Oscillatore difettoso, sorgente del clock cambiata su INTOSC
                0 =
    clock regolarmente funzionante

  • bit 6    CMIF : Comparator Interrupt Flag bit
               
    1 = ingresso del comparatore è cambiato
                0 =
    nessun cambio

  • bit 5    non utilizzato - 0 in lettura

  • bit 4     EEIF:Data EEPROM/Flash Write Operation Interrupt Flag bit
                 1 =  operazione di scrittura in EEPROM completata
                 0 =  nessuna operazione o operazione in corso

  • bit 3     BCLIF : Bus Collision Interrupt Flag bit
                 1 = 
    collisione sul bus seriale
                 0 = nessuna collisone sul bus seriale

  • bit 2    HLVDIF  : High/Low-Voltage Detect Interrupt Flag bit
                1 =  avvenuta condizione di tensione alta/bassa
                 0 =  nessuna condizione 

                La direzione del rilevamento della tensione dipende dal bit VDIRMAG (HLVDCON<7>)

  • bit 1    TMR3IF : TMR3 Overflow Interrupt Flag bit
                 1 = a
    vvenuto overflow di Timer3
                 0 =
    nessun overflow

  • bit0     CCP21F  : CCP2 Interrupt Flag bit             
                Modo Capture
                 1 =  TMR
    1 capture completata
                 0 = 
    nessuna capture su TMR1
                Modo Compare
                 1 =  compare match su TMR1
                 0 =  nessun compare match
                Modo PWM
                 bit non usato in questa modalità

     

I valori di default al POR sono indicati nella tabella.


I registri PIE1 e PIE2

In corrispondenza dei registri PIR esistono i registri PIE, che contengono i bit di abilitazione delle sorgenti di interrupt

 

PIE1

bit

PSPIE

ADIE

RCIE

TXIE

SSPIE

CCP1IE

TMR2IE

TMR1E

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     PSPIE : Parallel Slave Port Read/Write Interrupt Enable bit
                1 =
    PSP ( PORTD) interrupt abilitato
                0 =
    PSP interrupt disabilitato
                Questo bit riguarda PORTD e non è disponibile nei chip a 28 pin

  • bit 6    ADIE :A/D Converter Interrupt Flag bit
               
    1 =
    interrupt di fine conversione A/D abilitato
                0 = 
    interrupt  A/D disabilitato

  • bit 5    RCIE : EUSART Receive Interrupt Enable bit
                 1 = 
    interrupt dato ricevuto (RCREG full) abilitato
                 0 = 
    interrupt disabilitato

  • bit 4     TXIE : EUSART Transmit Interrupt  Enable bit
                 1 = 
    interrupt
    dato trasmesso (TXREG vuoto) abilitato
                 0 = 
    interrupt disabilitato

  • bit 3     SSPIE : Master Synchronous Serial Port Interrupt Enable bit
                 1 = Interrupt MSSP abilitato

                 0 = 
    interrupt disabilitato

  • bit 2    CCP1IE CCP1 Interrupt  Enable bit
                 1 = 
    interrupt CCCP1 abilitato
                 0 = 
    interrupt disabilitato

  • bit 1    TMR2IE : TMR2-to-PR2 Match Interrupt  Enable bit
                 1 = interrupt per match
    Timer2-PR2
                 0 =
    interrupt disabilitato

  • bit0     TMR1IE  : TMR1 Overflow Interrupt Enable bit
                 1 = interrupt
    avvenuto overflow di Timer1 abilitato
                 0 =
    interrupt disabilitato 

  •   

I valori di default al POR sono indicati nella tabella.

Per quanto riguarda PIE2 :

PIR2

bit

OSCFIE

CMIE

-

EEIE

BCLIE

HLVDIE

TMR3IE

CCP21E

funzione

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     OSCFIE : Oscillator Fail Interrupt Enable bit
               
    1 =  abilitato
                 0 =  disabilitato

  • bit 6    CMIE : Comparator Interrupt Enable bit
               
    1 =  abilitato
                 0 =  disabilitato

  • bit 5     non utilizzato - 0 in lettura

  • bit 4     EEIE :Data EEPROM/Flash Write Operation Interrupt Enable bit
                
    1 =  abilitato
                 0 =  disabilitato

  • bit 3     BCLIE : Bus Collision Interrupt Enable bit
                
    1 =  abilitato
                 0 =  disabilitato

  • bit 2    HLVDIE  :  High/Low-Voltage Detect Interrupt Enable bit
               
    1 =  abilitato
                 0 =  disabilitato

                La direzione del rilevamento della tensione dipende dal bit VDIRMAG (HLVDCON<7>)

  • bit 1    TMR3IE : TMR3 Overflow Interrupt Enable bit
                
    1 =  abilitato
                 0 =  disabilitato

  • bit0     CCP21E  : CCP2 Interrupt Enable bit              
                
    1 =  abilitato
                 0 =  disabilitato
                

I valori di default al POR sono indicati nella tabella.


Il registro IPIR1 e IPIR2

Siccome la struttura dell' interrupt dei PIC18F prevede un doppio livello di priorità programmabile, ecco che si rendono necessari due registri addizionali, IPIR1 e IPIR2, che hanno la funzione di assegnare la priorità voluta a ciascuna delle sorgenti di interrupt periferico.

 

IPIR1

bit

PSPIP

ADIP

RCIP

TXIP

SSPIP

CCP1IP

TMR2IP

TMR1P

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     PSPIP : Parallel Slave Port Read/Write Interrupt Priority bit
               
    1 = priorità alta
                 0 =
    priorità bassa  
                Questo bit riguarda PORTD e non è disponibile nei chip a 28 pin

  • bit 6    ADIP :A/D Converter Interrupt Priority bit
               
    1 = priorità alta
                 0 =
    priorità bassa  

  • bit 5    RCIP : EUSART Receive Interrupt Priority bit
                
    1 = priorità alta
                 0 =
    priorità bassa

  • bit 4     TXIP : EUSART Transmit Interrupt  Priority bit
                
    1 = priorità alta
                 0 =
    priorità bassa 

  • bit 3     SSPIP : Master Synchronous Serial Port Interrupt Priority bit
                
    1 = priorità alta
                 0 =
    priorità bassa 

  • bit 2    CCP1IP CCP1 Interrupt  Prioritye bit
                
    1 = priorità alta
                 0 =
    priorità bassa 

  • bit 1    TMR2IP : TMR2-to-PR2 Match Interrupt  Priority bit
                
    1 = priorità alta
                 0 =
    priorità bassa  

  • bit0     TMR1IP  : TMR1 Overflow Interrupt Priority bit
                 1 =
    priorità alta
                 0 =
    priorità bassa

I valori di default al POR sono indicati nella tabella.

Per quanto riguarda IPIR2 :

IPIR2

bit

OSCFIP

CMIP

-

EEIP

BCLIP

HLVDIP

TMR3IP

CCP21P

funzione

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     OSCFIP : Oscillator Fail Interrupt Priority bit
               
    1 = priorità alta
                 0 =
    priorità bassa   

  • bit 6    CMIP : Comparator Interrupt Priority bit
               
    1 = priorità alta
                 0 =
    priorità bassa   

  • bit 5     non utilizzato - 0 in lettura

  • bit 4     EEIP :Data EEPROM/Flash Write Operation Interrupt Priority bit
                
    1 = priorità alta
                 0 =
    priorità bassa   

  • bit 3     BCLIP : Bus Collision Interrupt Priority bit
                
    1 = priorità alta
                 0 =
    priorità bassa 

  • bit 2    HLVDIP  :  High/Low-Voltage Detect Interrupt Priority bit
               
    1 = priorità alta
                 0 =
    priorità bassa 

  • bit 1    TMR3IP : TMR3 Overflow Interrupt Priority bit
                
    1 = priorità alta
                 0 =
    priorità bassa   

  • bit0     CCP2IP  : CCP2 Interrupt Priority bit            
                
    1 =  abilitato
                 0 =  disabilitato

  •          

I valori di default al POR sono indicati nella tabella.

 


Altri dettagli sull' interrupt delle periferiche sono disponibili più avanti nei capitoli che le riguardano direttamente.

 


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 08/12/10.