Sunteți pe pagina 1din 6

Buses y Perifricos.

99/00
PIC 8259

Controlador de Interrupciones
El controlador de interrupciones es un mdulo que tiene por funcin gestionar las interrupciones de
entrada/salida para el procesador. Esto ahorra disear lgica y aadir patitas al procesador. Tambin
proporciona flexibilidad porque permite idealmente, gestionar un nmero ilimitado seales de
interrupcin (favoreciendo la expansin del sistema de entrada salida).
El controlador recibe el conjunto de seales de interrupcin procedentes de los dispositivos, toma la
decisin de cual es la ms prioritaria, y enva una nica seal al procesador. La respuesta del procesador
es transmitida al dispositivo y el propio controlador se encarga de depositar en el bus el vector de la
interrupcin.
En un sistema basado en la familia de procesadores 8086, esta labor la realiza el chip 8259. Este chip
admite hasta 8 seales de interrupcin, pero tambin admite ser configurado en cascada (sus entradas
proceden a su vez de otro controlador) de modo que un conjunto de controladores 8259 pueden gestionar
hasta un mximo de 8*8 seales de interrupcin procedentes de otros tantos dispositivos de entrada
salida.

Descripcin del patillaje:


CS#: Seleccin del chip. Debe estar activa para que el chip pueda ser programado o leer datos de estado.
WR#: Escritura.
RD#: Lectura
D0-7: bus de datos. Por medio de l se programa el controlador, se leen los registros y el controlador
puede hacer llegar al procesador el vector de interrupcin adecuado.
CAS 0-7: Bus privado cuando hay una configuracin en cascada. Proceden del controlador maestro (el
que se conecta directamente al procesador) y se dirigen a las mismas lneas en el esclavo. Sirven, en
modo cascada, para habilitar al controlador del cual procede la interrupcin original.
Cuando un controlador esclavo recibe una interrupcin, activa su salida INT que a su vez alimenta una IR
del maestro. Entonces el maestro activa las lneas CAS de manera que el controlador esclavo quede
habilitado para colocar en el bus el vector de interrupcin.
SP#/EN#: Estas lneas tienen doble funcin segn la configuracin:
modo no buffered: Indican al controlador si es un maestro (0) o un esclavo (1)
modo buffered: En este modo el controlador puede conectar el bus directamente al procesador o
hacerlo a travs de un buffer. Si se utiliza el buffer, esta seal es de salida y sirve para habilitar el
buffer en la direccin adecuada.
INT: interrupcin: Procedente del controlador se dirige a la entrada INTR del procesador. Procedente de
un esclavo se dirige a una de las entrada IR del maestro.
IR 0-7: Interrupciones: Entradas de interrupcin al controlador procedente de los dispositivos e/s o de
otros controladores (modo cascada).Se pueden configurar como activas por nivel o activas por flanco (de
subida).
INTA#: Interrupt acknowledge: Procede del procesador e indica al controlador que aquel ha entrado en
un ciclo de reconocimiento de interrupcin.
A0: direccin: El controlador tiene dos puertos de lectura/escritura. Esta lnea distingue entre ambos
puertos.

Ciclo de reconocimiento de interrupcin.


Antes de describir la estructura y programacin del controlador resultar interesante conocer en qu
consiste un ciclo de reconocimiento de interrupcin en el 8086.
1.- Tras la activacin de una lnea IR, el controlador activa la salida INTR sealndole a la CPU
la existencia de una interrupcin activada.
2.- Al recibir la seal, el procesador da un pulso en su salida INTA indicando que comienza un
ciclo de reconocimiento de interrupcin. (En el modo mximo la respuesta ser el
cdigo de reconocimiento de interrupcin en las seales S0-2 que ser utilizado por el
controlador de bus para generar la seal INTA)

Buses y Perifricos. 99/00


PIC 8259
3.- Al recibir el controlador el pulso por su entrada INTA comienza a arbitrar las interrupciones
recibidas y selecciona la ms prioritaria.
4.- Se emite un segundo pulso por la lnea INTA del procesador (o controlador de bus) que
utiliza el controlador para depositar en el bus el vector correspondiente a la interrupcin
de mayor prioridad.
5.- El procesador obtiene la direccin de la rutina de interrupcin a partir de este dato y salta a
ella. Almacena el registro de flags y la direccin de retorno, deshabilita las
interrupciones y comienza a ejecutar la rutina.

Estructura del controlador:


El controlador dispone de un conjunto de registros internos para realizar sus funciones:
IRR/ISR: Interrupt request register/Interrupt service register: Cuando se activan una o varias de las
entradas IR, estas quedan reflejadas en los bits correspondientes del IRR. Entonces el controlador usa este
registro para decidir a qu interrupcin atender. De aquellos bits activados en el IRR el ms prioritario
queda reflejado en el bit correspondiente del ISR. Mientras la interrupcin est siendo atendida este bit se
mantiene activo. Este bit se desactiva, bien automticamente o bien despus de recibir el controlador una
orden de EOI (fin de interrupcin, emitido antes del IRET). Cuando se configura para que lo haga
automticamente, el controlador desactiva la interrupcin en el flanco de bajada de la segunda seal INTA
procedente del procesador.
IMR: Interrupt mask register. El programador puede enmascarar algunas interrupciones de manera que si
se activase la IR correspondiente, el controlador la ignorar (nunca alcanzar el ISR).
El mecanismo de arbitraje es programable y admite algunas variantes en la resolucin:
Modo completamente anidado: es el modo de prioridad bsica consistente en asignar mayor prioridad a
la interrupcin 0 y menor prioridad a la interrupcin 7. En este modo, cuando un bit est activo en el ISR
indicando que tal interrupcin est siendo atendida (desactivado, por lo tanto el EOI automtico), ninguna
interrupcin de prioridad igual o inferior va a ser considerada por el controlador. Sin embargo si entrase
una interrupcin de prioridad superior, sta s pasar al registro ISR y se emitir el aviso correspondiente
al procesador. (En el procesador se interrumpir la ejecucin de la rutina de atencin a la interrupcin
anterior para cargar la nueva rutina, ms prioritaria. Al finalizar sta se reanudar la primera).
Modo de rotacin automtica.: en este modo, cada vez que una interrupcin es atendida, como la de
mxima prioridad, queda degradada al rango de menor prioridad para la siguiente ocasin. Ello permite
que ninguna interrupcin pueda acaparar la atencin del procesador.
Rotacin especfica: es un tercer modo en el cual el programador puede indicarle al controlador, por
medio de un comando, cual es el orden de prioridad que desea darle a las interrupciones, concretamente le
indica cual es la interrupcin de mayor prioridad y el resto se ordenarn entorno a ella. (Por ejemplo, si
decide que la IR5 va a ser la de mayor prioridad, la IR6 ser la siguiente, despus IR7 y a continuacin
IR0, etc.)

Programacin
Para programar este controlador existen dos puertos de lectura/escritura en el chip. La lnea de direccin,
A0, decide a qu puerto se accede. La programacin se realiza enviando una secuencia de palabras de
control denominadas ICW. Hay 4 palabras de control diferentes y caso de enviarlas todas hay que hacerlo
siempre en secuencia:
ICW1: Es la primera escritura que se hace sobre el 8259 y marca su reinicio. Se escribe sobre el A0=0.
Siempre que se escriba en este puerto un byte con el bit 4 a 1, se interpretar como un comando de
inicializacin. Otra informacin de configuracin que aporta esta palabra de inicializacin es:

Buses y Perifricos. 99/00


PIC 8259
a)
b)
c)
d)

las interrupciones se activarn por flanco o por nivel


el controlador funcionar slo o en modo cascada
el controlador trabaja con el 8086 o con el 8085
se enviar o no la palabra de inicializacin ICW4

ICW2: Se enva por el puerto A0=1, y ha de seguir inmediatamente al envo de ICW1. Contiene el ndice
en el vector de interrupciones correspondiente a la interrupcin 0. El resto de ndices lo calcular el
controlador incrementando correspondientemente este valor para cada una de las dems interrupciones.
ICW3: Esta palabra se enva nicamente si la configuracin es en cascada (indicado en la ICW1). Se
enva por el puerto A0=1 y ha de seguir inmediatamente a ICW2. Al maestro se le enviar una ICW3
indicndole en cuales de sus entradas IR hay colgado un controlador. A cada uno de los controladores
esclavos se le enva una ICW3 indicndoles su nmero de identificacin, el valor que aparecer en las
CAS cuando el dispositivo es seleccionado.
ICW4: Esta es una palabra opcional que se enva tambin por A0=1, siguiendo a ICW3. En ICW1 se ha
indicado en su momento si se enviar o no esta ltima palabra de inicializacin. La opcionalidad de esta
palabra se debe sencillamente a que si no se usa, las caractersticas que configura estn sencillamente
anuladas en su conjunto. Estas caractersticas son:
1. Activar un modo especial de arbitraje anidado (Special fully nested mode), que contemple la
existencia de controladores esclavos. Este modo especial tiene la particularidad, frente al modo
completamente anidado, de que cuando en una IR est pinchado un esclavo, esta entrada no queda
inhabilitada aunque haya pasado a ser atendida (activa en el ISR), de manera que el esclavo puede
volver a enviar por la misma lnea una nueva interrupcin (en su caso procedente de otra IR).
Programar el modo buffered. Lo que redundar en que la lnea SP#/EN# ser utilizada en su funcin EN#.
Esto lleva a la siguiente pregunta: Cmo sabe ahora un controlador si l mismo es un maestro o un
esclavo.?
2. Indicar al controlador, en el modo cascada, si se trata de un maestro o un esclavo.
3. Programar el AEOI. Los bits en el ISR se limpiarn automticamente cuando el controlador reciba el
segundo pulso de la seal INTA
4. Por ltimo se indica si el controlador va a trabajar con el 8085, de 8 bits de palabra y con un
protocolo de reconocimiento de interrupciones diferente al del 8086 (tres pulsos de INTA, durante el
primero hay que facilitarle al procesador el cdigo de la instruccin Call y durante los otros dos
pulsos le enva la direccin de la rutina de atencin) o con el propio 8086.
Una vez que el controlador se ha programado, entra en funcionamiento. A partir de ahora, y hasta una
nueva inicializacin el procesador puede intervenir en el funcionamiento del controlador a travs del
intercambio de Comandos de operacin (OCW)
Hay tres comandos de operacin (OCW1-3). Se pueden enviar en cualquier orden y en cualquier
momento y permitirn al procesador controlar actividades del controlador como el modo de arbitraje que
emplee o el enmascaramiento de determinadas interrupciones.
OCW1: Se enva al puerto A0=1 y el contenido del buffer se cargar directamente en el registro IMR. Lo
que significa que cada bit indicar: (1) la correspondiente IR del controlador quedar inhibida para nuevas
peticiones de interrupcin; (0), la correspondiente IR del controlador queda habilitada para serle
atendidas las nuevas peticiones de interrupcin.
OCW2: Se enva al puerto A0=0. Para evitar que sea interpretada como una ICW1, el bit 4 estar siempre
a cero. Las acciones que se pueden realizar con este comando son:
1. Especificar el tipo de rotacin que se desea dar al registro IRR para resolver las prioridades una vez
se ha atendido a la ltima interrupcin.
2.

Enviar un EOI genrico ( a la ltima interrupcin atendida - de los bits activos en el ISR el ms
prioritario - ) o especfica (en el propio comando se especifica qu interrupcin se desea dar por
atendida).

OCW3: Igualmente se enva al puerto A0=0, con el bit 4 a cero siempre. Este comando programa el
modo especial de enmascaramiento. Durante este modo no funcionan las prioridades y toda interrupcin
que no tenga una marca en el IMR est habilitada aunque en determinado instante haya activo un bit del

Buses y Perifricos. 99/00


PIC 8259
ISR (est siendo atendida ya una interrupcin de determinada prioridad. Recurdese que en el modo
normal ocurrira que todas las interrupciones de niveles inferiores a la que est actualmente siendo
atendida quedaran automticamente inhibidas).
Lectura.
OCW3 permite tambin programar la lectura de los registros ISR e IRR para que el procesador pueda
consultar en cualquier momento las interrupciones pendientes o las que estn en servicio. Asimismo
permite configurar el controlador para que funcione en modo de consulta. En este modo el controlador se
comporta exactamente como se ha explicado, pero es el procesador el que no lo hace. En lugar de generar
un ciclo de reconocimiento de interrupciones al activarse su entrada INT, el procesador genera un ciclo de
lectura dirigido al controlador, el cual le responde con un registro que le indica cual de las entradas IRQ
activadas en ese momento es la ms prioritaria. El procesador utilizar esta informacin para invocar a la
rutina de interrupcin correspondiente. Al generarse un ciclo de lectura simple nunca se activa la seal
INTA y por lo tanto el controlador no acta de la forma habitual. Este modo est previsto para que el
controlador pueda trabajar con otros procesadores no x86 ya que estos generan el ciclo de reconocimiento
de interrupcin de forma automtica al recibir la INT. No obstante, naturalmente, pueden aprovechar este
recurso para obtener informacin del controlador
Igualmente el procesador puede consultar en cualquier momento el estado del registro IMR haciendo una
lectura a la misma direccin a la que envi el OCW1.

Interrupciones en PC basados en 8086.


En estos computadores se implantaron 16 interrupciones hardware. Para poder hacerlo se hubo encadenar
dos controladores. El controlador esclavo cuelga de la IR2 del controlador maestro.
La configuracin del maestro es la siguiente:
ICW1
1) Interrupciones activadas por flanco.
2) Controlador en modo cascada
3) Procesador 8086
4) Se utilizar la palabra de iniciacin ICW4
ICW2
Se le asocia a la interrupcin 0 el vector 8. Por lo tanto los vectores del resto de interrupciones son
IR0:8h
IR1:9h
IR2:Ah
IR3:Bh
IR4:Ch
IR5:Dh
IR6:Eh
IR7:Fh
ICW3
Aqu se le indica al maestro que el esclavo cuelga de IR2
ICW4
Se sealar que el modo es no bufferizado, que se trabaja con el 8086, que el EOI no es automtico y que
se emplea el modo anidado simple.
Para el esclavo la configuracin es:
ICW1
1) Interrupciones activadas por flanco.
2) Controlador en modo cascada
3) Procesador 8086
4) Se utilizar la palabra de iniciacin ICW4

Buses y Perifricos. 99/00


PIC 8259
ICW2
Se le asocia a la interrupcin 0 el vector 70H. Por lo tanto los vectores del resto de interrupciones son
IR0:70h
IR1:71h
IR2:72h
IR3:73h
IR4:74h
IR5:75h
IR6:76h
IR7:77h
ICW3
Aqu se le indica al esclavo que el maestro lo identifica con el valor 2.
ICW4
Se sealar que el modo es no bufferizado, que se trabaja con el 8086, que el EOI no es automtico y que
se emplea el modo anidado simple.

Consideraciones
En el PC la denominacin de las interrupciones es la siguiente:
IRQ0: Corresponde a la IR0 del controlador maestro
IRQ1:
IRQ2:
IRQ3:
IRQ4:
IRQ5:
IRQ6:
IRQ7:Corresponde a la IR7 del controlador maestro
IRQ8:Corresponde a la IR0 del controlador esclavo
IRQ9:
IRQA:
IRQB:
IRQC:
IRQD:
IRQE:
IRQF: Corresponde a la IR7 del controlador esclavo
Como se podr adivinar, el ndice asociado a la interrupcin IR2 del controlador maestro nunca se
utilizar porque en su lugar ser el controlador esclavo el que deposite el ndice adecuado en el bus. Esta
configuracin se adopt a partir del 286, porque en el 8086 slo se implantaron 8 interrupciones externas
y bastaba con un controlador. En estos sistemas, el ndice correspondiente a la interrupcin IRQ2 tena
asociado una TSR que en PC de generaciones posteriores nunca sera invocada. Para evitar este conflicto
con e l concepto de compatibilidad se asoci la IRQ9 con la IRQ2. Esta asociacin se hace mediante
software, haciendo que la TSR asociada a la IRQ9 invoque directamente a la IRQ2.

Informacin adjunta:
Descripcin completa del chip 8259A

Cuestiones:
Dada la configuracin de los controladores, ordene las interrupciones hardware del sistema por orden
prioridades.
Suponiendo que las direcciones de los puertos de los controladores son: 20H,21H para el maestro y A0H
y A1H para el esclavo (el bit menos significativo del bus de direcciones pinchado en A0 del controlador.
Escriba las instrucciones en ensamblador para programar a los dos controladores en modo cascada, AEOI

Buses y Perifricos. 99/00


PIC 8259
automtico, modo bufferizado y poltica de arbitraje de rotacin automtica. Suponga el esclavo pinchado
en la IR7 del maestro.
Si no se usa la opcin AEOI. Escriba las instrucciones finales necesarias de una rutina de atencin a la
IRQ 0AH

Bibliografa:
The 8086 IBM PC and Compatible computers.
Muhammad Ali Mazidi, Janice Gillispie Mazidi
Prentice Hall 1998
Libro de componentes perifricos de Intel
inf 681.31 PER per

S-ar putea să vă placă și