Tutorials - PIC18 by Data Sheet

 

INTERRUPT


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 :

  • interrupt generati dal cambio sul PORTB

  • interrupt dalle line esterne INT

  • interrupt di Timer0.

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 :

  1. 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 .

  2. 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 di 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:

  • i bit di priorità degli INT1 e 2

  • i bit di abilitazione di questi interrupt

  • e i loro bit di flag

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.