interrupciones externas

6
Interrupciones externas Las interrupciones externas son activadas por los pines INT1 y INT0. Si son habilitadas, las interrupciones se activarán aun cuando los pines INT0/INT1 se configuren como salidas. Esta característica proporciona una manera de generar una interrupción por software. Las interrupciones externas pueden ser activadas por un flanco de bajada, subida o por un nivel bajo. Esto es establecido como se indica en la especificación para el registro de control MCU (MCUCR). Cuando la interrupción externa se habilita y se configura como activo por nivel, la interrupción se activará mientras el pin se mantenga a nivel bajo. Las interrupciones externas se establecen como se describe en la especificación para el registro de control MCU (MCUCR). Tiempo de respuesta de interrupción La respuesta de ejecución de interrupción para todas las interrupciones de AVR habilitadas es de cuatro ciclos de clock como mínimo. Cuatro ciclos de clock después de que el flag de interrupción se ponga a set, se ejecuta la dirección del vector de programa para la rutina de manejo de la interrupción. Durante este 4º periodo de ciclo de clock, el Contador de Programa (2 bytes) es introducido en la pila y el puntero de pila es decrementado en 2. El vector es normalmente un salto relativo a la rutina de interrupción y este salto toma dos ciclos de clock. Si ocurre una interrupción durante la ejecución de una instrucción multi-ciclo, antes de que la interrupción sea servida, se completa esta instrucción. Un retorno de una rutina de manejo de interrupción (el mismo que una rutina de llamada a subrutina) toma cuatro ciclos de clock. Durante estos cuatro ciclos de clock, el Contador de Programa (2 bytes) se extrae de la pila, el puntero de pila es incrementado en 2 y el flag I en SREG está a set. Cuando el AVR termina una interrupción, siempre volverá al programa principal y ejecutará una instrucción

Upload: rolantineoquispe

Post on 09-Dec-2015

1 views

Category:

Documents


0 download

DESCRIPTION

Interrupciones externas

TRANSCRIPT

Page 1: Interrupciones externas

Interrupciones externasLas interrupciones externas son activadas por los pines INT1 y INT0. Si son habilitadas, las interrupciones se activarán aun cuando los pines INT0/INT1 se configuren como salidas.

Esta característica proporciona una manera de generar una interrupción por software. Las interrupciones externas pueden ser activadas por un flanco de bajada, subida o por un nivel bajo. Esto es establecido como se indica en la especificación para el registro de control MCU (MCUCR). Cuando la interrupción externa se habilita y se configura como activo por nivel, la interrupción se activará mientras el pin se mantenga a nivel bajo.

Las interrupciones externas se establecen como se describe en la especificación para el registro de control MCU (MCUCR).Tiempo de respuesta de interrupciónLa respuesta de ejecución de interrupción para todas las interrupciones de AVR habilitadas es de cuatro ciclos de clock como mínimo. Cuatro ciclos de clock después de que el flag de interrupción se ponga a set, se ejecuta la dirección del vector de programa para la rutina de manejo de la interrupción. Durante este 4º periodo de ciclo de clock, el Contador de Programa (2 bytes) es introducido en la pila y el puntero de pila es decrementado en 2. El vector es normalmente un salto relativo a la rutina de interrupción y este salto toma dos ciclos de clock. Si ocurre una interrupción durante la ejecución de una instrucción multi-ciclo, antes de que la interrupción sea servida, se completa esta instrucción.

Un retorno de una rutina de manejo de interrupción (el mismo que una rutina de llamada a subrutina) toma cuatro ciclos de clock. Durante estos cuatro ciclos de clock, el Contador de Programa (2 bytes) se extrae de la pila, el puntero de pila es incrementado en 2 y el flag I en SREG está a set. Cuando el AVR termina una interrupción, siempre volverá al programa principal y ejecutará una instrucción más antes de que cualquier interrupción pendiente se sirva.

Observe que el registro de estado (SREG) no es manejado por el hardware del AVR, para ninguna interrupcion ni subprograma. Para la rutina de manejo de interrupción se requiere un almacenamiento del SREG, esto debe ser realizado por el software del usuario.

Para interrupciones activadas por eventos que pueden permanecer estáticos, cuando el evento ocurre, el flag de interrupción está a set. Si el flag de interrupción es borrado y la condición de interrupción persiste, el flag no se pondrá a set hasta que el evento ocurra la próxima vez. Observe que una interrupción de nivel externo sólo se recordará mientras que la condición de interrupción esté activa.Registro de control MCU–MCUCREl registro de control MCU contiene bits de control para las funciones de MCU generales.Bit 7 6 5 4 3 2 1 0$35 ($55) SRE SRW SE SM ISC11 ISC10 ISC01 ISC00 MCUCR

Page 2: Interrupciones externas

Read/Write R/W R/W R/W R/W R/W R/W R/W R/WInitial Value 0 0 0 0 0 0 0 0

 Bit 7 – SRE: Habilitación de SRAM externa

Cuando el bit SRE está a set (uno), la SRAM de datos externa está habilitada y las funciones del pin AD0 - 7 (Puerto A), A8 - 15 (Puerto C), WR y RD (Puerto D) se activan como las funciones de pin alternativas. Entonces el bit SRE anula cualquier puesta de dirección de pin en los registros de dirección de datos respectivos. Vea la "memoria de datos SRAM Interna y Externa" en el apartado de la Arquitectura para una descripción de las funciones de los pines de la SRAM externa. Cuando el bit SRE es borrado (cero), la SRAM de datos externa está deshabilitada y se usan el pin y las puestas de dirección de datos normales.

 Bit 6 – SRW: Estado de espera de la SRAM externa

Cuando el bit SRW está a set (uno), un estado de espera de un ciclo se inserta en el ciclo de acceso de la SRAM de datos externa. Cuando el bit SRW es borrado (cero), el acceso a la SRAM de datos externa se ejecuta con el esquema de tres ciclos normal.

 Bit 5 – SE: Habilitación de descanso

El bit SE debe ponerse a set (uno) para hacer que los MCU entren en el Modo de descanso cuando la instrucción SLEEP se ejecuta. Para evitar que el MCU entre en el Modo de descanso, a menos que sea el propósito del programador, se recomienda poner a set el bit de habilitación de descanso (SE) justo antes de la ejecución de la instrucción SLEEP.

 Bit 4 – SM: Modo de descanso

Este bit selecciona entre los dos modos de descanso disponibles. Cuando SM es borrado (cero), el modo Idle es seleccionado como Modo de descanso. Cuando SM está a set (uno), el modo Power-down es seleccionado como Modo de descanso. Para ver más detalles, vaya a la sección "Modos de descanso".

 Bits 3, 2 – ISC11, ISC10: Control de percepción de la interrupción 1, Bit 1 y Bit 0

La Interrupción externa 1 es activada por el pin externo INT1 si el flag I de SREG y la máscara de interrupción correspondiente en GIMSK están a set. El nivel y los flancos en el pin externo INT1 que activan la interrupción están definidos en la siguiente tabla.

ISC11 ISC10   Descripción0 0   El nivel bajo en INT1 genera una petición de interrupción0 1   Reservado

1 0  El flanco de bajada en INT1 genera una petición de interrupción

1 1  El flanco de subida en INT1 genera una petición de interrupción

Page 3: Interrupciones externas

Tabla. Control de percepción de interrupción 1 Bits 1, 0 – ISC01, ISC00: Control de percepción de la interrupción 0, Bit 1 y Bit 0

La Interrupción externa 0 es activada por el pin externo INT0 si el flag I de SREG y la máscara de interrupción correspondiente están a set. El nivel y los flancos en el pin externo INT0 que activan la interrupción están definidos en la siguiente tabla.

ISC01 ISC00   Descripción0 0   El nivel bajo en INT0 genera una petición de interrupción0 1   Reservado

1 0  El flanco de bajada en INT0 genera una petición de interrupción

1 1  El flanco de subida en INT0 genera una petición de interrupción

Tabla. Control de percepción de interrupción 0El valor en el pin INTn se comprueba antes de que se detecten flancos. Si se selecciona la interrupción por flanco, los pulsos con una duración mayor que un periodo de clock de la CPU generarán una interrupción. Los pulsos mas cortos no garantizan que genere una interrupción. Si se selecciona la interrupción por nivel bajo, este nivel bajo debe mantenerse hasta la realización de la instrucción que actualmente se está ejecutando para generar una interrupción. Si está habilitada, una interrupcción activa por nivel generará una demanda de interrupción mientras el pin se mantenga a nivel bajo.

MODOS DE DESCANSO

          

Para entrar en los modos de descanso, el bit SE en MCUCR debe ponerse a set (uno) y debe ejecutarse una intruccion de SLEEP. Si una interrupción habilitada ocurre mientras el MCU está en un modo de descanso, el MCU despierta, ejecuta la rutina de interrupción y continua la ejecución de la instrucción siguiente a la de SLEEP. Los contenidos del archivo de registro, SRAM y memoria de I/O están inalteradas. Si ocurre un reset durante el Modo de descanso, el MCU se despierta y ejecuta el vector de Reset.

              Modo Idle

Cuando el bit SM es borrado (cero), la instrucción SLEEP fuerza al MCU al Modo Idle, detiene la CPU pero permite que continuen funcionando los Timer/Contadores, Watchdog y el sistema de interrupciones. Esto le permite al MCU que se despierte por las interrupciones externas activadas así como por las internas como la interrupción por desbordamiento del Timer y Reset del Watchdog. Si no se requiere que se despierte por la interrupción del comparador analógico, el Comparador Analógico puede estar en modo Power Down poniendo a set el bit ACD del control del comparador Analógico y registro de estado (ACSR). Esto reducirá el consumo de energía en Modo Idle. Cuando el MCU se despierta del Modo Idle, la CPU empieza la ejecución del programa inmediatamente.

           Modo de Power Down

Page 4: Interrupciones externas

Cuando el bit SM está a set (uno), la instrucción SLEEP fuerza al MCU al modo de Power down. En este modo, el oscilador externo se detiene, mientras las interrupciones externas y el Watchdog (si está habilitado) continúan operando. Sólo un Reset externo, un Reset del Watchdog (si está habilitado) o una interrupción de nivel externa en INT0 o INT1 pueden despertar el MCU.

Observe que cuando una interrupción activa por nivel se usa para despertar del modo Power Down, el nivel bajo debe mantenerse durante un tiempo más largo que el periodo Time-out de retraso del Reset tTOUT. De otro modo, el MCU no se despertará.