Definición

7

Click here to load reader

Transcript of Definición

Page 1: Definición

Definición:

Cuando se producen determinados eventos se hace la llamada a una interrupción. Las

interrupciones permiten que se le notifique cuando se produce un evento inmediatamente sin

consultar ningún estatus permanente, que costaría tiempo de cómputo. 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 interrupción. 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 Descripción

0 0 Nivel bajo en el pin, dispara la alarma

0 1 Cualquier cambio en el pin, activado la alarma

1 0 Un flanco descendente, dispara la alarma

Page 2: Definición

1 1 Un flanco ascendente, dispara la alarma

Los vectores de interrupción

¿Cómo el controlador sabe qué rutina debe ser llamada cuando se produce una interrupción?

Cuando ocurre una interrupción, la ejecución del programa salta a una ubicación específica en la

memoria de programa. Estos puestos son fijos y no pueden ser modificados:

No. Dirección Interruptname Descripción

1 0x000 REINICIO Reinicio o encendido

2 0x001 INT0 0 Interrupción externa

3 0x002 INT1 Interrupción externa 1

4 0x003 TIMER2_COMP Timer/Counter2 Comparar Partido

5 0x004 TIMER2_OVF Desbordamiento Timer/Counter2

6 0x005 TIMER1_CAPT Timer/Counter1 Captura de eventos

7 0x006 TIMER1_COMPA Timer/Counter1 Comparar Partido A

8 0x007 TIMER1_COMPB Timer/Counter1 Comparar coincidencia B

Page 3: Definición

9 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 vacía

14 0x00D USART_TX USART misión completada

15 0x00E ADC Conversión AD terminado

16 0x00F EE_RDY EEPROM listo

17 0x010 ANA_COMP Analógica

18 0x011 TWI Interfaz de dos hilos

19 0x012 SPM_RDY Tienda de memoria de programa Ready

Fin de un manejador de interrupciones

¿Y cómo la rutina de interrupción se termina? Por el comando RETI, el programa se reanuda

normalmente cuando fue interrumpido por la interrupción. Es importante usar comando RETI y no

una RET normal.

Page 4: Definición

GICR - General Registro de control de interrupción

GICR registrar el ATmega8

Bit 7 - INT1: Interrupción externa 1 Active

Cuando el bit se establece INT1 y la I-bit se establece en el registro de estado (SREG) es también, entonces el proceso1 externo se libera. El sentido de interrupción Control1 los bits 1 y 0 (ISC11 y ISC10) en el Registro General de Control (MCUCR) se define, en la que una condición de interrupción 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 interrupción INT1 incluso si está configurado como una salida. El Interruptadresse para la interrupción es el vector de interrupción INT1. 

Bit 6 - INT0: 0 Interrupción externa Activa

Si el bit está establecido INT0 y la I-bit se establece en el registro de estado (SREG) es también, entonces el Interrupt0 externo se libera. El sentido de interrupción Control0 los bits 1 y 0 (ISC01 y ISC00) en el Registro General de Control (MCUCR) se define, en la que una condición de interrupción 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 interrupción INT0 incluso si está configurado como una salida. El Interruptadresse para la interrupción es la INT0 vector de interrupción. 

Bit 5 a 2 - Res: bits reservados

Estos bits están 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

Page 5: Definición

Bit 3, 2 - ISC11, ISC10: Control Sense interrupción 1 Bit 1 y 2

El Interrup1 externa se activa a través INT1 PIN si el bit I en el registro de estado y los bits de máscara de interrupción correspondiente se establecen en GICR registro. El nivel y bordes en el gatillo pin INT1 una interrupción, 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 interrupción de ser seleccionado como el evento desencadenante, estos deben durar más de un ciclo de reloj, de modo que se genera una interrupción. Pulsos más cortos no conduce garantizado para disparar una interrupción. Si el nivel de baja fue seleccionado como el evento de activación, debe estar por lo menos hasta que la instrucción se está ejecutando actualmente se ejecuta por completo. 

ISC11

ISC10 Modo

0 0 Nivel bajo en el pin de interrupción INT1 desencadena

0 1 Cada cambio lógico en el pin INT1 provoca interrupción

1 0 Un flanco descendente en el pin INT1 provoca interrupción

1 1 Un flanco ascendente en el pin INT1 provoca interrupción

Bit 1, 0 - ISC01, ISC00: Control Sense interrupción 0 Bit 1 y 2

El Interrupt0 externo se activa a través del pin INT0 si el bit I en el registro de estado y los bits correspondientes máscara de interrupción se ajustan en GICR registro. El nivel y bordes en el pin INT0 desencadenar una interrupción, 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 interrupción de ser seleccionado como el evento desencadenante, estos deben durar más de un ciclo de reloj, de modo que se genera una interrupción. Pulsos más cortos no conduce garantizado para disparar una interrupción. Si el nivel de baja fue seleccionado como el evento de activación, debe estar por lo menos hasta que la instrucción se está ejecutando actualmente se ejecuta por completo. 

ISC01

ISC00 Modo

0 0 Bajo nivel de interrupción pin INT0 activa

0 1 Cada cambio en la lógica de interrupción pin INT0 activa

1 0 Un flanco de bajada en la interrupción pin INT0 activa

Page 6: Definición

1 1 Un flanco ascendente en el pin INT0 provoca interrupción