Departament de Microelectrònica i Sistemes Electrònics

AVR i FONAMENTS DE COMPUTADORS
Enginyeria en Informàtica (ETSE)

Interrupcions externes

El microcontrolador ATmega8 disposa de dues línies d'interrupció externa, EXT1 i EXT0. Les interrupcions externes estan posades com a doble funcionament en els ports PORTD3 i PORTD2. Quan qualsevol de les línies és activada com a interrupció externa aquest funcionament domina sobre el funcionament com a port de sortida (d'activar-se).

Per a què s'activi una interrupció externa primer cal que estigui activat el flag general de capacitació d'interrupcions I del registre de status SREG. Aquest bit s'activa amb la instrucció SEI. En segon lloc, per a què la interrupció externa s'activi, cal habilitar el pin particular de la interrupció (en el registre GICR).

El control de les interrupcions es realitza a través de dos registres; un tercer registre indica l'estat de la interrupció:

· El General Control Interrupt Register - GICR. Conté els pins d'habilitació particular de cada interrupció externa:
- El pin 7 del registre, INT1 -> És el pin d'habilitació de la interrupció externa 1
- El pin 6 del registre, INT0 -> És el pin d'habilitació de la interrupció externa 0
· El MCU Control Register - MCUCR. Conté la configuració d'interrupció de cada pin.

- Els pins 3 i 2 del registre, ISC11 i ISC10, respectivament, configuren el funcionament de la interrupció externa 1
- Els pins 1 i 0 del registre, ISC01 i ISC00, respectivament, configuren el funcionament de la interrupció externa 0

El funcionament de la configuració és el següent:

ISCx1
ISCx0
Funcionament
0
0
El nivell baix en el pin d'interrupció INTx genera la petició d'interrupció
0
1
Qualsevol canvi lògic en el pin d'interrupció INTx genera la petició d'interrupció
1
0
El flanc de baixada en el pin d'interrupció INTx genera la petició d'interrupció
1
1
El flanc de pujada en el pin d'interrupció INTx genera la petició d'interrupció
· El General Interrupt Flag Register - GIFR. Conté els flags d'activació de cada interrupció.

- El pin 7 del registre, INTF1 -> És el flag de la interrupció externa 1. Es posa a 1 en activar-se la interrupció i es desactiva en entrar en la rutina de servei de la interrupció
- El pin 6 del registre, INTF0 -> És el flag de la interrupció externa 0. Es posa a 1 en activar-se la interrupció i es desactiva en entrar en la rutina de servei de la interrupció

Exemple d'ús de la interrupció externa

Es presenta un exemple de configuració d'interrupció per captura d'event en flanc de pujada en el pin d'interrupció externa 1.

.ORG 0x000
rjmp inici
.ORG 0x002
rjmp rsi_EXT0
reti
...
inici: ...
    ldi r16, (1<<INT1)
    out GICR, r16
    ldi r16, (1<<ISC11)|(1<<ISC10)
    out MCUCR, r16
    sei
main:...
    ...
    rjmp main

rsi_EXT0::...
    ....
    reti
; adreça rutina servei d'interrupció de reset
;
; adreça rutina servei d'interrupció externa 1
;
; retorn de seguretat
;
; programa principal
; habilitació interrupció externa 1
;
; interrupció per flanc de pujada

;
; habilitació interrupció general
; bucle principal
;
;

; rutina de servei interrupció externa 1
;
;


WcN - AVR i Fonaments de computadors -> Interrupcions externes