Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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:
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
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
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