Está en la página 1de 11

INTERRUPCIONES EN LA PC

OBJETIVOS:

GENERAL:

Describir el funcionamiento del controlador de interrupciones 8259 y la interaccin con el 8086 para la
atencin de interrupciones.

ESPECIFICOS:

Tener muy en claro la estructura del controlador de interrupciones y saber qu es lo que realiza cada pin
del mismo.
Comprender la manera adecuada de usar las palabras de control en este controlador.
Determinar la manera en la que se lleva a cabo una rutina de interrupcin.

MARCO TEORICO
INTERRUPCION: Es una instruccin que detiene la ejecucin de un programa para permitir el uso de la
CPU a un proceso prioritario. Una vez concluido este ltimo proceso se devuelve el control a la
aplicacin anterior.

NO ENMASCARABLES: la CPU no las puede ignorar.


ENMASCARABLES: el procesador puede aceptar o ignorar la interrupcin.

CONTROLADOR DE INTERRUPCIONES 8259


Es utilizado para controlar las interrupciones enmascarables (INTR). Este controlador permite que se
generen hasta 8 seales de interrupcin (numeradas de 0 a 7).

DESCRIPCION DEL INTEGRADO

IRQ 0: Reloj en tiempo real.


IRQ 1: Scan del teclado
IRQ 2: Libre
IRQ 3: Puerto serial secundario (COM2)
IRQ 4: Puerto serial primario (COM1)
IRQ 5: Disco duro
IRQ 6: Controlador de Diskette
IRQ 7: Puerto paralelo (impresora)

Pueden conectarse en cascada en configuracin maestro-esclavo para manejar hasta 64 niveles de


interrupciones.

La estructura del controlador est formada por un conjunto de registros internos:

IRR (Interrupt Request Register/ Registro de peticiones de interrupcin): almacenan todas las
peticiones de interrupcin pendientes.
ISR (In-Service Register/Registro de servicio de interrupcin):
almacena todas las
interrupciones que se est siendo atendidas en un momento dado.
IMR (Interrupt Mask Register/Registro de enmascaramiento de interrupciones): Se delega la
responsabilidad en el programador para enmascarar algunas interrupciones que ayuden al
controlador a ignorar dichas interrupciones, aqu cada bit corresponde a una lnea IRQ, e indica si
esta permitida un interrupcin de ese nivel en ese momento.

DESCRIPCIN FUNCIONAL
El diagrama funcional del 8259, con la estructura interna de las diversas partes que lo componen, es el
siguiente:

La lgica de gestin de prioridad determina qu interrupcin, de las solicitadas en el IRR, debe ser
atendida primero: cuando lleguen las seales INTA dicha interrupcin ser la primera procesada y su bit
correspondiente se activar en el ISR. El buffer del bus de datos conecta el 8259 con el bus de datos de la
placa principal del ordenador: su diseo en 3 estados permite desconectarlo cuando sea necesario; a travs
de este bus circulan las palabras de control y la informacin de estado. La lgica de lectura y
escritura acepta los comandos que enva la CPU: aqu hay registros para almacenar las palabras de
inicializacin y operacin que enva el procesador; tambin sirve para transferir el estado del 8259 hacia
el bus de datos. El buffer de cascada/comparador almacena y compara las identificaciones de todos los
8259 que posea el sistema: el 8259 maestro enva la identificacin del 8259 esclavo en las lneas CAS, los
8259 esclavos la leen y el implicado en la operacin coloca en el bus de datos la direccin (vector) de la
rutina que atender la interrupcin en los 2 prximos (o el prximo) ciclos INTA.

CUIDADOS PARA LA RUTINA DE INTERRUPCION


Antes de que una rutina de servicio a la interrupcin sea ejecutada, algunos cuidados deben ser tomados.

Primero La rutina debe guardar en la pila el contenido de los registros que sern usados esto
permite que se restauren los registros al terminar la rutina.
Segundo se puede apagar el pedido de interrupcin a travs de EIO (fin de interrupcin) Esto
permite que el 8259 reciba nuevas interrupciones.

SECUENCIA DE EVENTOS DE UNA INTERRUPCION


1)
2)
3)
4)

5)

6)

Una o ms lneas IR son activadas por los perifricos, lo que pone a 1 el correspondiente bit
del IRR.
El 8259 evala la prioridad de estas interrupciones y solicita la interrupcin a la CPU (lnea
INT) si es necesario.
Cuando la CPU reconoce la interrupcin, enva la seal -INTA.
Nada ms recibida la seal -INTA de la CPU, el 8259 activa el bit correspondiente a la
interrupcin de mayor prioridad (la que va a ser procesada) en el ISR y lo borra en el IRR.
En este ciclo, el 8259 an no controla el bus de datos.
Cuando la CPU enva un segundo ciclo -INTA, el 8259 deposita en el bus de datos un valor
de 8 bits que indica el nmero de vector de interrupcin del 8086, para que la CPU lo pueda
leer.
En el modo AEOI del 8259, el bit de la interrupcin en el ISR es borrado nada ms acabar
el segundo pulso -INTA; en caso contrario, ese bit permanece activo hasta que la CPU
enve el comando EOI al final de la rutina que trata la interrupcin (caso ms normal).

INICIALIZACION DEL SISTEMA PARA ATENCION A LAS INTERRUPCIONES


En las descripciones a continuacin se abordaron secuencias de interrupcin, incluyendo las etapas de
inicializacin.
a) Inicializacin del puntero pila (SP) para el rea donde sern guardados los estados de los registros
b) Inicializar la direccin de la tabla de interrupciones que sern usadas.
c) Inicializar el 8259 a travs de sus registros ICW (Interrupt Command Word) y OCW (Operation
Control Word).
d) Activar la bandera del 8088 que habilita las interrupciones
e) Una interface genera un pedido de interrupcin
f) El 8259 recibe el pedido y lo enva al latch de peticiones
g) El 8259 activa el pedido INTR para el 8088
h) El 8088 responde con un pulso INTA, que prioriza el pedido lo enva hacia el ISR
i) El 8088 enva un 2do pulso de INTA. El 8259 responde al pulso con un valor que indica el nivel
de interrupcin. Este valor es usado por el 8088 para indexar la tabla donde estn las direcciones
de las rutinas de interrupcin.
j) El 8088 deshabilita las interrupciones, coloca en la pila PSW (Program status Word/ Registro de
palabra del estado del programa), PC y CS; usando el indexador busca los nuevos valores de PC y
CS y desva para esa direccin.

k) La rutina de interrupcin guarda en la pila el contenido de los registros que van a usar.
l) Para permitir nuevas interrupciones la rutina de interrupcin enva un EOI(End of interrupt) para
el 8259
m) La rutina de interrupcin es ejecutada
n) Al completar la rutina, se restauran los contenidos de los registros usados y del PSW
o) La rutina de interrupcin ejecuta una interrupcin de retorno de interrupcin, que habilita las
prximas interrupciones y restaura los valores de PC y CS, regresando el proceso al punto donde
fue interrumpido.
INICIALIZACIN DE LA TABLA DE VECTORES DE INTERRUPCIN
Los primeros 1024 bytes de memoria son reservados para las funciones de interrupcin del sistema. La
arquitectura 8088 atiende a 256 interrupciones. Esta memoria es usada para especificar las direcciones de
las rutinas de servicio para esas 256 interrupciones. Cada direccin est formada por dos valores de 16
bits: un contador de programa (PC) y un segmento de cdigo (CS).
Cuando ocurre una interrupcin, la tabla es accesada por los valores de PC y CS correspondientes y son
usados para especificar la direccin hacia donde ser enviada la ejecucin. Las interrupciones en un 8088
pueden ser generadas de diversas formas: internamente, por software y externamente.

El controlador de interrupciones 8259 envia un puntero de 8 bits, al recibir el segundo INTA. Este
puntero es usado para generar una direccin de 10 bits que ser utilizada para accesar a la tabla de los
vectores de interrupcin. Este puntero de 10 bits es formado de acuerdo a la figura 6.5.

Notar que el BIOS inicializa los bits A9-A5 en 00001, as la interrupcin IRQ0 accesar a la direccin:
00001 000 00 = 20H.
INICIALIZACIN DEL CONTROLADOR 8259
El controlador de interrupciones es accesado por las direcciones 20Hy 21H. Este controlador posee 7
registros y existen diversos registros compartiendo la misma direccin. El 8259 suele usar la primera
direccin para el modo inicializacin y entonces usa la misma direccin para el modo de operacin, que
es accesado automticamente despus de que el modo inicializacin es completado.
El 8259 posee dos modos de operacin:
Inicializacin: se escriben las palabras ICW1, ICW2, ICW3 e ICW4.
Operacin: se escriben las palabras OCW1, OCW2 y OCW3.

Modo inicializacin:
Se ingresa en ese modo al escribir, en la direccin 20H, un byte con bit 4=1. Este dato es usado
como ICW1.
Los datos ICW2, ICW3, ICW4 y OCW1 deben ser enviados en secuencia, usando la direccin
21H. Cuando se enva el ICW4, el 8259 entra en modo de operacin y recibe el OCW1.
Modo de operacin:
El 8259 est normalmente en este modo, si se escribe OCW2 y OCW3 de acuerdo con lo que est
especificado en la fig. El registro OCW1 no puede ser accesado si antes no entra al modo de
inicializacin.

Palabras de comando para inicializacin (ICW)


Secuencia de inicializacin:
a) Modo de activacin por flanco desactivado.
b) Mascara de interrupcin encerada. (Todas activadas).
c) La interrupcin 7 recibe la menor prioridad.
d) La direccin para el modo esclavo es especificado como 7.
e) Si el bit IC4 = 0, todas las funciones seleccionadas a travs de ICW4 son seteadas a cero.

MODO OPERACIN
Introduccin.
En modo de operacin la interpretacin cambia, adems de que las escrituras hacia las direcciones 20h y
21h es cambiado a las palabras de control de operacin (OCW).
Los OCW podrn ser enviados en cualquier momento luego de la inicializacin.
Existen 3 registros:

OCW1
Los bits de OCW1, sern usados para activar o desactivar las mscaras de interrupcin, donde existe una
mscara para cada interrupcin.

Mscara de interrupciones: (Controla las interrupciones), Sirve precisamente para permitir


inhibir el paso de las interrupciones; donde si el bit=1 -> se impide la que la interrupcin
correspondiente ocurra; y por el contrario si el bit=0 -> la interrupcin correspondiente puede
ocurrir.

OCW2
Este registro es usado para rotar y cambiar la prioridad de los pedidos de interrupcin y tambin para
seleccionar el modo fin-de-interrupcin (EOI) a ser usado.

Donde:
- D0-D2: Indica la interrupcin de ms baja prioridad.
- D3-D4: Deben estar encerados.
- D5-D7: La combinacin de estos 3 bits especifican diversos comandos.

OCW3

Donde:

D0-D1: Permiten seleccionar el modo de lectura del status.


D2: Enva un comando al controlador que congela el pedido de interrupcin de ms alta
prioridad.
D3-D4: Deben ser 1 y 0 respectivamente.
D5-D6: Permiten el modo de mscara especial.

Rendimiento de las interrupciones


En muchas aplicaciones el tiempo que el procesador lleva para comenzar una rutina de interrupcin es
crtico.
A continuacin se explicar los parmetros que se encuentran inmersos en ste tiempo:
a) Tiempo de procesamiento de Hardware. Es el tiempo que el procesador tarda a partir de la llegada
del pedido del 8259:
Recibe el puntero del 8286
Guarda en pila las banderas y la direccin actual
Procesa la rutina de interrupcin
Esto lleva 61 perodos de reloj con 210ns de perodo, y el tiempo consumido es de 12,81useg.

b) Las interrupciones slo pueden ser atendidas al final de una instruccin. Es as que si un pedido
de interrupcin llega durante el inicio de una instruccin, ste tendr que esperar que la CPU termine la
ejecucin de la instruccin iniciada; donde ste lapso de tiempo dura alrededor de 1 a 5 useg.
c) Nivel de Prioridad. Si la interrupcin fuese de bajo nivel de prioridad, sta tendr que aguardar que las
de ms alta prioridad sean ejecutadas
d) Si las rutinas de interrupcin usa registros del 8086, stos deben ser guardados en la pila. Es
recomendable guardarlos a penas stos sean alterados, ya que guardar todos los registros en pila puede
tardar mucho tiempo.
CONCLUSIONES:
El manejo de interrupciones es fundamental en la programacin de los microprocesadores, en este
caso con respecto al 8086 y el 8088, requieren de pasos especificados para su manejo correcto.
En algunas partes de este material se hace referencia al 8088, en vez del 8086. Esto no es mayor
problema, ya que la nica diferencia entre ambos es el tamao del bus de datos externo, ambos
microprocesadores son internamente iguales en su unidad de ejecucin.
El manejo adecuado de interrupciones nos permite optimizar el uso de memoria y
direccionamiento de elementos externos.
BIBLIOGRAFIA:
Zelenovsky, Ricardo. IBM PC para Ingenieros. Pag 6-1 a 6-16
http://atc.ugr.es/docencia/udigital/1204.html
http://www.mitecnologico.com/Main/ControladorInterrupcionesEnsambleComponentes
http://icaro.eii.us.es/descargas/Transparencias8259.pdf