Departament de Microelectrònica i Sistemes Electrònics

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

Interrupcions

La interrupció és un recurs pràctic que permet actuar en successos puntuals que es produeixen en el microcontrolador i que requereixen d'una atenció especial en el moment en què es produeixen.

Quan la interrupció es fa servir com a recurs pràctic en aplicacions en temps real convé que aquesta atenció sigui el més ràpida possible per permetre l'activació d'altres interrupcions.

La interrupció normalment afecta a un element determinat del microcontrolador i és tractada per un mòdul genèric que altera l'execució normal del programa.

Els microcontroladors AVR disposen d'un conjunt important d'interrupcions distribuït en els seus components. El propi inici del programa s'efectua tractant la interrupció de RESET que carrega en el comptador de programes l'adreça d'inici del programa. L'ATmega8 disposa de fins a 20 vectors d'interrupció (llistat). L'ATmega128 en té 35.

L'activació d'interrupcions en els ATmega involucra els següents pasos:

- El component que disposa d'interrupció disposa d'un flag d'activació d'interrupció. En el cas dels timers els flags es troben agrupats en el registre TIFR.

- El component també disposa d'un bit d'habilitació de la interrupció. Sense aquesta habilitació la interrupció no s'activa. En els timers, per exemple, el registre TIMSK agrupa els flags d'habilitació d'interrupció.

- Finalment, cal activar el flag genèric d'interrupció I en el registre de Status per a què s'habilitin les interrupcions.

A nivell de programa tota interrupció s'atén en la rutina de servei de la interrupció. Un cop es produeix la interrupció, el vector de servei de la interrupció carrega en el comptador de programes l'adreça d'inici de la rutina de servie de la interrupció.

L'exemple botó mostra una aplicació amb interrupcions.


WcN - AVR->Interrupcions