Está en la página 1de 18

Interrupciones

Introducción
Aspectos generales y tipos de interrupciones
El proceso de las interrupciones
Niveles de prioridad de las interrupciones
Introducción

La comunicación asíncrona de los sistemas periféricos con la CPU, en


ambos sentidos, se puede establecer de dos maneras fundamentales:
a) Consultas (fig. 10.1) (polling): Se comprueban cíclicamente,
mediante instrucciones del programa, los registros de estado de los
dispositivos de E/S. Unas líneas de diálogo (hands-hake) establecen
el protocolo de comunicación. Las desventajas de este método son:
- En cada ciclo de programa, éste tiene que interrogar los bits de
consulta.
- Al periférico se le atiende después de realizar la consulta y no cuando
solicita la intervención de la CPU.
Introducción
b) Interrupción (fig. 10.2): Servicio directo entre periféricos y CPU,
siempre que ésta desee establecer el diálogo. Este servicio tiene la
característica de la inmediatez, pueden eliminarse total o parcialmente
los ciclos de consulta y permite inhibir la interrupción cuando se
considera que es «inoportuna» y, por tanto, perjudicial para la marcha
del proceso. Esta forma de trabajo es inherente al control de procesos
en tiempo real.
La importancia de las interrupciones nace de la necesidad de ejecutar
un subproceso en el instante preciso, y por tanto se considera su
intervención «urgente».
Introducción
Cuando termina la ejecución de este subproceso, la CPU vuelve al
programa principal, continuando su tarea cíclica justo donde la dejó.
Una interrupción puede ser iniciada:
Por un periférico o ente externo ajeno al microprocesador o
microcontrolador a través de los pines específicos del mismo. En estas
condiciones la interrupción es externa.
Dentro del propio chip microprocesador o microcontrolador. Entonces
la interrupción es interna.
Toda interrupción aceptada conduce a la ejecución de un
subprograma específico cuya dirección de comienzo se indica en las
posiciones de memoria de una tabla, que recibe el nombre de tabla de
vectorización.
Aspectos
generales y tipos
de interrupciones
El Microcontrolador 8952 tiene
seis interrupciones, mientras
que el 8951 tiene cinco.
La Figura 10.3 muestra los
distintos tipos de
interrupciones, señalando la
falta de los flags que activan
TF2 y EXF2 en el 8951 por no
tener implementado el Timer 2.
Aspectos generales y tipos de interrupciones
Los bits de flag que generan las interrupciones pueden ser cancelados,
en algunas interrupciones, por hard, cuando éstas son vectorizadas; no
obstante, todos los bits pueden cancelarse por soft escribiendo ceros
en el registro correspondiente.

Cada una de estas fuentes de interrupción pueden ser individualmente


habilitadas o inhabilitadas poniendo a «uno» o a «cero» el bit
correspondiente del registro IE (Interrupt Enable Register)
perteneciente a SFR (Special Function Register) (Cuadro 10.1).
Aspectos •Nota: Dada la cantidad de mnemónicos para identificar
fuentes de interrupción y los flags que se activan en los
generales y tipos microcontroladores, se propone referenciar, siempre que sea
posible, el elemento que genera la interrupción por su nombre
de interrupciones completo.
Aspectos
generales y tipos
de interrupciones
Las interrupciones, presentan
una tabla, conocida como tabla
de vectorizaciones, en la que se
reservan 8 posmem para cada
una de las interrupciones en la
memoria de programas (Tabla
10.2).
Aspectos generales y
tipos de interrupciones
En estas 8 posmem se puede escribir
el programa de atención a la
interrupción o como es habitual,
mediante un LJMP<dir> se desvía a
una zona de memoria de programas
lo suficientemente extensa para
albergar la rutina de tratamiento de la
interrupción detectada.
EL PROCESO DE INTERRUPCIONEN LOS
MICROCONTROLADORES
Los flags o indicadores de interrupción son muestreados en el estado 5, fase 2 (S5P2) de cada ciclo
máquina. Las muestras son escrutadas durante el siguiente ciclo máquina. El sistema de
interrupciones del microcontrolador genera un LCALL al apropiado vector de interrupciones. Esta
situación se produce salvo que:
- Una interrupción de igual o mayor nivel de prioridad esté en ese momento en proceso.
- No haya finalizado la instrucción que en ese momento está procesándose.
- La instrucción en proceso es una RETI (retorno de interrupción) o se esté produciendo un acceso
a los registros IE o IP; entonces asegura que una instrucción más, al menos, será ejecutada antes
de que la interrupción sea vectorizada.
El ciclo de «escrutinio» se repite con cada ciclo máquina y los valores escrutados son los que
corresponden a la activación de la interrupción presente en el S5P2 del ciclo máquina anterior.
EL PROCESO DE INTERRUPCIONEN LOS
MICROCONTROLADORES
Con relación al borrado de los flags, una vez servida la rutina de interrupción, se ha
de decir que, en algunos casos, el borrado es automático, aspecto denominado
como «borrado por hardware»; en el otro caso, es el programador el que debe
estar pendiente de su borrado modalidad de «borrado por software».
No se produce borrado por hard en las interrupciones del puerto serie y del Timer
2.
Los flags de las interrupciones exteriores (INTO e INT1) son borrados por hard
cuando se activan por flanco. Si están activadas por «nivel», éste debe volver a su
estado de «no activación» para que «salga» de la rutina de interrupción.
Una vez validada la interrupción y producido el salto a la rutina de servicio, la CPU
guarda en la memoria pila (stack) el contenido del contador de programa (PC =
Program Counter) y no salvaguarda el registro de estado (PSW).
EL PROCESO DE INTERRUPCIONEN LOS
MICROCONTROLADORES

La rutina de interrupción debe finalizar con la instrucción RETI, que


informa a la CPU de que la rutina ha finalizado. A renglón seguido se
recuperan de la memoria de pila los dos bytes de dirección del
programa principal, instrucción siguiente a la que en proceso recibió la
interrupción y que concluyó antes de pasar al proceso de tratamiento.
Estos dos bytes recargados en el contador de programa (PC) permiten
que se siga ejecutando el programa principal, sin más que sufrir una
relativa pequeña pérdida de tiempo.
NIVELES DE
PRIORIDAD DE LAS
INTERRUPCIONES
Cada fuente de
interrupción puede
programarse
individualmente en dos
niveles de prioridad,
poniendo a «1» o a «0» su
bit correspondiente en el
registró IP (Cuadro 10.2)
del banco de registros
SFR.
NIVELES DE PRIORIDAD DE LAS
INTERRUPCIONES
Como se puede observar en la figura, un «1» en el bit corres
pondiente a la interrupción la sitúa en el nivel de prioridad más
«alto» y un «0» en el nivel más «bajo».
Los bits b6 y b7 no están asignados, y lo mismo pasa con el b5 para
el Microcontrolador 8951, puesto que no tiene Timer2.
Una interrupción con nivel de prioridad bajo puede ser
interrumpida por otra de nivel de prioridad alto, pero no por otra
de nivel de Prioridad bajo. Una interrupción de prioridad alta no
puede ser interrumpida por otra fuente de interrupción, salvo por
la interrupción externa RESET.
Si dos peticiones de interrupción de distintos niveles de prioridad son recibidas simultáneamente, la
interrupción de nivel de prioridad alto es servida. Si la petición corresponde a interrupciones del
mismo nivel de prioridad y se producen simultáneamente, un escrutinio interno secuencia el servicio
de la forma predeterminada que se muestra en la Tabla 10.3.

Así, dentro del mismo nivel de prioridad, hay una segunda estructura de prioridades
determinada por el orden de escrutinio según la tabla anterior. Esta prioridad, dentro del
mismo nivel, solamente es utilizada para resolver estas peticiones simultáneas.
Bibliografía

• González Vázquez, J. A. (1992). Introducción a Los


microcontroladores. McGraw-Hill Interamericana.

También podría gustarte