Vous êtes sur la page 1sur 6

Definicin:

Cuando se producen determinados eventos se hace la llamada a una interrupcin. Las interrupciones permiten que se le notifique cuando se produce un evento inmediatamente sin consultar ningn estatus permanente, que costara tiempo de cmputo. Aqu, el programa se interrumpe y se llama a una subrutina. Cuando esto se ha completado, el programa principal se ejecuta como normal.

Los posibles factores desencadenan las interrupciones:


Las interrupciones en los microcontroladores son provocados, por ejemplo, si: el voltaje aplicado al pin de una entrada cambia de alta a un valor bajo (o viceversa). Cuando un periodo de tiempo determinado a transcurrido ( temporizador ) Transferencia de datos por el puerto serie( UART )

El ATmega8 tiene 18 diferentes fuentes de interrupcin. De forma predeterminada, se desactivan y deben ser activados individualmente en el registro IO.

INT0, INT1 y el registro asociado:


Hablaremos solo de las interrupciones INT0 y INT1. INT0 se dispara cuando el voltaje aplicado cambia en PD2, INT1 responde a los cambios en PD3. Primero tenemos que configurar las dos interrupciones. En el registro MCUCR se define si las interrupciones son en el flanco ascendente (de menor a mayor) o en un flanco descendente (de mayor a menor). Este registro cuenta con los bits ISC00, ISC01 (encargados del INT0) y ISC10, ISC11 (encargados del INT1). He aqu un resumen de las posibles configuraciones y lo que hacen:

O ISC11 ISC01 O ISC10 ISC00

Descripcin

Nivel bajo en el pin, dispara la alarma

Cualquier cambio en el pin, activado la alarma

Un flanco descendente, dispara la alarma

Un flanco ascendente, dispara la alarma

Los vectores de interrupcin


Cmo el controlador sabe qu rutina debe ser llamada cuando se produce una interrupcin? Cuando ocurre una interrupcin, la ejecucin del programa salta a una ubicacin especfica en la memoria de programa. Estos puestos son fijos y no pueden ser modificados:

No. Direccin

Interruptname

Descripcin

0x000

REINICIO

Reinicio o encendido

0x001

INT0

0 Interrupcin externa

0x002

INT1

Interrupcin externa 1

0x003

TIMER2_COMP Timer/Counter2 Comparar Partido

0x004

TIMER2_OVF

Desbordamiento Timer/Counter2

0x005

TIMER1_CAPT

Timer/Counter1 Captura de eventos

0x006

TIMER1_COMPA Timer/Counter1 Comparar Partido A

0x007

TIMER1_COMPB Timer/Counter1 Comparar coincidencia B

0x008

TIMER1_OVF

Timer/Counter1 Overflow

10

0x009

TIMER0_OVF

Timer/Counter0 Overflow

11

0x00A

SPI_STC

SPI transferencia completa

12

0x00B

USART_RX

USART recibir completado

13

0x00C

USART_UDRE

Datos USART Registro vaca

14

0x00D

USART_TX

USART misin completada

15

0x00E

ADC

Conversin AD terminado

16

0x00F

EE_RDY

EEPROM listo

17

0x010

ANA_COMP

Analgica

18

0x011

TWI

Interfaz de dos hilos

19

0x012

SPM_RDY

Tienda de memoria de programa Ready

Fin de un manejador de interrupciones


Y cmo la rutina de interrupcin se termina? Por el comando RETI, el programa se reanuda normalmente cuando fue interrumpido por la interrupcin. Es importante usar comando RETI y no una RET normal.

GICR - General Registro de control de interrupcin

GICR registrar el ATmega8

Bit 7 - INT1: Interrupcin externa 1 Active Cuando el bit se establece INT1 y la I-bit se establece en el registro de estado (SREG) es tambin, entonces el proceso1 externo se libera. El sentido de interrupcin Control1 los bits 1 y 0 (ISC11 y ISC10) en el Registro General de Control (MCUCR) se define, en la que una condicin de interrupcin externa es detectado. Las opciones son: Flanco ascendente o descendente en el cambio de pin o nivel bajo en el pin INT1. Las condiciones en el pin INT1 causar una solicitud de interrupcin INT1 incluso si est configurado como una salida. El Interruptadresse para la interrupcin es el vector de interrupcin INT1. Bit 6 - INT0: 0 Interrupcin externa Activa Si el bit est establecido INT0 y la I-bit se establece en el registro de estado (SREG) es tambin, entonces el Interrupt0 externo se libera. El sentido de interrupcin Control0 los bits 1 y 0 (ISC01 y ISC00) en el Registro General de Control (MCUCR) se define, en la que una condicin de interrupcin externa es detectado. Las opciones son: Flanco ascendente o descendente en el cambio de pin o el bajo nivel de INT0 pin. Las condiciones en el pin INT0 causar una solicitud de interrupcin INT0 incluso si est configurado como una salida. El Interruptadresse para la interrupcin es la INT0 vector de interrupcin. Bit 5 a 2 - Res: bits reservados Estos bits estn reservados y siempre va a leer como 0. Los bits 1 y 0 - se describe en otro lugar

MCUCR - MCU Registro de Control

MCUCR registrar el ATmega8

Bit 3, 2 - ISC11, ISC10: Control Sense interrupcin 1 Bit 1 y 2 El Interrup1 externa se activa a travs INT1 PIN si el bit I en el registro de estado y los bits de mscara de interrupcin correspondiente se establecen en GICR registro. El nivel y bordes en el gatillo pin INT1 una interrupcin, se describen en la tabla siguiente. El valor del pin INT1 se muestrea antes se detecta un flanco.Si los bordes o cambiar el nivel de interrupcin de ser seleccionado como el evento desencadenante, estos deben durar ms de un ciclo de reloj, de modo que se genera una interrupcin. Pulsos ms cortos no conduce garantizado para disparar una interrupcin. Si el nivel de baja fue seleccionado como el evento de activacin, debe estar por lo menos hasta que la instruccin se est ejecutando actualmente se ejecuta por completo.

ISC11 ISC10 Modo 0 0 1 1 0 1 0 1 Nivel bajo en el pin de interrupcin INT1 desencadena Cada cambio lgico en el pin INT1 provoca interrupcin Un flanco descendente en el pin INT1 provoca interrupcin Un flanco ascendente en el pin INT1 provoca interrupcin

Bit 1, 0 - ISC01, ISC00: Control Sense interrupcin 0 Bit 1 y 2 El Interrupt0 externo se activa a travs del pin INT0 si el bit I en el registro de estado y los bits correspondientes mscara de interrupcin se ajustan en GICR registro. El nivel y bordes en el pin INT0 desencadenar una interrupcin, se describen en la tabla siguiente. El valor del pin INT0 se muestrea antes se detecta un flanco. Si los bordes o cambiar el nivel de interrupcin de ser seleccionado como el evento desencadenante, estos deben durar ms de un ciclo de reloj, de modo que se genera una interrupcin. Pulsos ms cortos no conduce garantizado para disparar una interrupcin. Si el nivel de baja fue seleccionado como el evento de activacin, debe estar por lo menos hasta que la instruccin se est ejecutando actualmente se ejecuta por completo.

ISC01 ISC00 Modo 0 0 1 0 1 0 Bajo nivel de interrupcin pin INT0 activa Cada cambio en la lgica de interrupcin pin INT0 activa Un flanco de bajada en la interrupcin pin INT0 activa

Un flanco ascendente en el pin INT0 provoca interrupcin

Vous aimerez peut-être aussi