Definición
Click here to load reader
-
Upload
adarleen-arevalo-valle -
Category
Documents
-
view
4 -
download
0
Transcript of 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
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
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.
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
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
1 1 Un flanco ascendente en el pin INT0 provoca interrupción