You are on page 1of 22

INTERRUPCIONES

Tres tipos de interrupciones:


• Internas (TRAPS)
• Externas (HARDWARE)
• Software

Existen 256 interrupciones


En el modo real cada una tiene un vector asociado
Vectores de 4 bytes: segmento + offset

....
Memoria
0000:0008
principal
0000:0006
0000:0004
32 F0 Segmento
0000:0002
50 8A Offset
0000:0000

Vector INT 0 = F032:8A50


(dirección donde comienza la rutina de atención)

Número de interrupción:
Internas : implícito
Externas : Enviado por el periférico solicitante
Software : indicado en la propia instrucción
INTERRUPCIONES

INT 0 Error de división por 0

INT 1 Ejecución paso a paso

INT 2 NMI (No enmascarable)

INT 3 Instrucción INT

INT 4 Desbordamiento (INTO)

Reservadas por INTEL (modo protegido)

INT 32

INT 33

INT 34
Utilizables por el usuario

INT 255

Cada vector: 4 bytes


La tabla ocupa 256x4 = 1024 bytes (1 Kbyte)
Dirección del vector: 0: INT x 4
INTERRUPCIONES

Proceso de una interrupción:

1. Guarda registro F en la pila


2. IF=0, TF=0
3. Guarda CS en la pila
4. CS = NUM_INT x 4 + 2
5. Guarda IP en la pila
6. IP = NUM_INT x 4

Retorno de interrupción:

IRET

Realiza el proceso inverso


INTERRUPCIONES
Internas

0 Error de división por 0 El cociente no cabe en el registro destino


Se produce una interrupción cada vez que se
1 Ejecución paso a paso
ejecuta una instrucción si el flag T está activado

2 NMI (No enmascarable) Interrupción hardware (NMI)


Produce una interrupción cuando se ejecuta
3 Instrucción INT
la instrucción INT (1 byte) - BREAKPOINTS
Si el flag O está activado se dispara al ejecutar
4 Desbordamiento (INTO)
la instrucción INTO

Reservadas
Son necesarias en el modo protegido

Fallos de página
Nivel de privilegio insuficiente
Violación de límite de segmento

No deben utilizarse en el modo real


IBM las utilizó en el PC

Software
Cualquier interrupción se puede disparar mediante la instrucción

INT n
INTERRUPCIONES

Hardware

NMI
NMI activa en flanco de subida
INTR
CPU
INTR activa a nivel alto

La CPU genera dos impulsos de reconocimiento de interrupción

REQ0
INTA
.... Lógica
REQ4

INTR

INTA
Reconocimiento Petición vector

D0 .. D7 Nº de vector
INTERRUPCIONES

Interconexión de varios dispositivos a la línea de interrupción

El PIC 8259 (“Programmable Interrupt Controller”)

ESQUEMA INTERNO DE BLOQUES

INT INTA

BUFFER
D0..D7 LÓGICA DE CONTROL
BUS DE
DATOS

RD# Bus interno (8 bits)


WR#
LÓGICA
LECTURA/
ESCRITURA
A0
IRQ0
CS# ISR IRR IRQ1
PRIORIDADES

IRQ2
INTERRUPCIONES

ÁRBITRO

INTERRUPCIÓN
EN SERVICIO

IRQ3
REGISTRO DE
PETICIÓN DE
REGISTRO

DE

IRQ4
CAS0 IRQ5
CAS1 CONTROL IRQ6
CAS2 DE IRQ7
CASCADA
SP/EN

IMR
REGISTRO DE MÁSCARA
INTERRUPCIONES
Proceso de una interrupción en el PIC
1. Un periférico solicita interrupción
IRR
0 0 0 1 0 0 0 0
IRQ0
IRR IRQ1 Se activa el bit
IRQ2 INT correspondiente en ISR
INTERRUPCIÓN

IRQ3
REGISTRO DE
PETICIÓN DE

IRQ4
IRQ5
IRQ6
IRQ7

2. El PIC solicita interrupción a la CPU (INT)

3. La CPU reconoce la petición con un primer pulso de INTA

4. Se activa el bit correspondiente de ISR y se desactiva en IRR

IRR ISR
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0

5. La CPU envía el segundo pulso de INTA

6. El PIC coloca un puntero de 8 bits en el bus de datos

El valor del puntero es distinto para cada entrada IRQ

Es programable

7. A partir de entonces comienza a ejecutarse la rutina de atención


INTERRUPCIONES

Fin de interrupción (EOI)


Los bits activos de ISR bloquean futuras peticiones por esa línea

ISR
0 0 0 1 0 1 0 0

Líneas Líneas
activas bloqueadas

Deben ponerse a 0 al terminar la rutina de servicio: (EOI)

Formas de poner a 0 el bit de ISR:

1. Programar el modo automático (AEOI)

El bit se pone a 0 automáticamente al colocar el puntero


en el bus de datos

2. Enviar al PIC el comando EOI:

No específico : pone a 0 el de más prioridad

Específico: pone a 0 el que se le indica

Generalmente se envía el EOI justo antes del IRET


INTERRUPCIONES
RUTINA SERV. RUTINA SERV.
PROGRAMA A IRQ3 A IRQ1
PRINCIPAL

STI

STI
PERMITIDAS
STI IRQ2
IRQ1
PERMITIDAS IRQ0
TODAS LAS
INTERR.

IRQ3

IRQ1

EOI EOI

IRET IRET

PONE
A 0 PONE
A 0

0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0
ISR ISR ISR
INTERRUPCIONES
Gestión de prioridades

1. Modo ANIDADO
• IR0 prioridad más alta
• IR7 prioridad más baja
• Peticiones de menor prioridad que la que está
siendo atendida se ignoran

2. Modo de ROTACIÓN AUTOMÁTICA

• Útil cuando todos los dispositivos tienen idéntica prioridad


• Cuando se atiende una IRQ se le asigna la prioridad menor
• En el caso peor se espera que se atiendan a los otros 7

ISR ISR
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0

menor mayor mayor menor


7 6 5 4 3 2 1 0 2 1 0 7 6 5 4 3

Prioridad Prioridad

3. Modo de ROTACIÓN ESPECÍFICA

• Se le indica en el EOI cuál es el dispositivo que adquiere la


menor prioridad
INTERRUPCIONES

PIC IRQ0
MAESTRO IRQ1 IRQ2
INTA# IRQ3
A0 IRQ4 IRQ5
CS#
INT IRQ6
CAS0 CAS1 CAS2
IRQ7
DIRECCIONES

SP/EN
CONTROL

DATOS

Vcc

PIC IRQ0
ESCLAVO 1 IRQ1
IRQ2
INTA# IRQ3
A0 IRQ4
CS# IRQ5
INT IRQ6
IRQ7
CAS0 CAS1 CAS2

SP/EN

PIC IRQ0
ESCLAVO 2 IRQ1
IRQ2
INTA# IRQ3
A0 IRQ4
CS# IRQ5
INT IRQ6
IRQ7
CAS0 CAS1 CAS2

SP/EN
Lógica de
selección

MODO CASCADA
INTERRUPCIONES
Gestión de prioridades
Modo ANIDADO ESPECIAL
Cuando se conectan varios PIC en cascada
Permite gestionar las prioridades de forma correcta

PIC IRQ0
PIC IRQ0 ESCLAVO IRQ1
MAESTRO IRQ1 IRQ2
IRQ2 IRQ3 INT
IRQ3 IRQ4
IRQ4 IRQ5 IRQ5
INT IRQ6
IRQ6 IRQ7
CAS0 CAS1 CAS2
IRQ7
CAS0 CAS1 CAS2
SP/EN
ISR esclavo
SP/EN 0 0 0 1 0 0 0 0
Vcc

ISR Maestro
0 0 1 0 0 0 0 0

PIC IRQ0 INT


PIC IRQ0 ESCLAVO IRQ1
MAESTRO IRQ1 IRQ2
IRQ2 IRQ3
IRQ3 IRQ4
IRQ4 IRQ5 IRQ5
INT IRQ6
IRQ6 IRQ7
CAS0 CAS1 CAS2
IRQ7
CAS0 CAS1 CAS2
SP/EN
ISR esclavo
SP/EN 0 0 0 1 0 0 1 0
Vcc

ISR Maestro
0 0 1 0 0 0 0 0 ?
INTERRUPCIONES
Gestión de prioridades
Comando de sondeo (“POLL”)

1. Cuando se activa no se pasan las peticiones


de interrupción a la CPU

2. El procesador debe interrogar al PIC para


saber si se ha producido petición de
interrupción

3. La gestión de las interrupciones, y las


prioridades se lleva a cabo mediante software.

PIC IRQ0
MAESTRO IRQ1
INT
IRQ3 IRQ2
IRQ4
IRQ5
INT INT
CAS0 CAS1 CAS2
IRQ7 IRQ6

SP/EN

ISR Maestro
0 1 0 0 0 1 0 0

No se envían las peticiones


INTERRUPCIONES
El registro de máscara

IRQ0
ISR IRR IRQ1

PRIORIDADES
IRQ2
INTERRUPCIONES

ÁRBITRO

INTERRUPCIÓN
EN SERVICIO

IRQ3

REGISTRO DE
PETICIÓN DE
REGISTRO

DE
IRQ4
IRQ5
IRQ6
IRQ7

IMR
REGISTRO DE MÁSCARA

Permite enmascarar individualmente cada entrada:

1 Prohibe interrupciones por esa línea

0 Permite interrupciones por esa línea


INTERRUPCIONES
La programación del PIC 8259

Solamente 2 puertos de E/S disponibles

(A0=0, A0=1) Posición par e impar respectivamente

Existen un total de 7 comandos

4 ICW Palabras de inicialización


3 OCW Palabras de operación

COMANDO DIRECCIÓN Se distingue por


ICW1 PAR Bit 4 = 1
ICW2 IMPAR Sigue a ICW1
ICW3 IMPAR Sigue a ICW2
ICW4 IMPAR Sigue a ICW3

OCW1 IMPAR -
OCW2 PAR Bit 3 = 0 , Bit 4 = 0
OCW3 PAR Bit 3 = 1 , Bit 4 = 0

Palabra que se escribe (8 bits)


INTERRUPCIONES
La programación del PIC 8259
Palabras de inicialización (ICW)

Se utilizan en el reinicio del sistema para configurar el PIC

ICW1 da comienzo a la secuencia de inicialización

ICW1 ⇒ A0 = 0 D4 = 1

Automáticamente, al recibirlo, el PIC:

• Pone a 0 el registro de máscara

• Asigna prioridad 7 a IRQ7

• Pone a 0 los registros IRR e ISR

• Espera por las siguientes palabras de inicialización

Generalmente se utilizan cuando el sistema arranca


INTERRUPCIONES
La programación del PIC 8259
Secuencia de inicialización

Escribir ICW1 ICW1 se escribe en la dirección PAR


con A0 = 0 y D4 = 1

Escribir ICW2 ICW1, ICW2 e ICW3 se escriben en


la dirección IMPAR

¿Modo
cascada?

Si hay varios PIC en cascada es


Escribir ICW3 necesario escribir ICW3, en caso
contrario puede omitirse

Es
necesaria
ICW4
En sistemas basados en procesadores
Intel XX86 siempre es necesaria ICW4

Escribir ICW4

FIN
INTERRUPCIONES
ICW1 1 LTIM SINGL ICW4

1 = Se necesita ICW4
0 = No se necesita ICW4

1 = Modo SINGLE
0 = Modo CASCADA

1 = Entradas activas al NIVEL


0 = Entradas activas al FLANCO

ICW2 T7 T6 T5 T4 T3
Número INT de interrupción que
se asigna a IRQ0

ICW3 S7 S6 S5 S4 S3 S2 S1 S0
(Maestro)

1 = Esta entrada tiene PIC esclavo


0 = Esta entrada no tiene esclavo
ICW3 0 0 0 0 0 ID2 ID1 ID0
(Esclavo)

Entrada IRQ del maestro a la que


se encuentra conectado

ICW4 0 0 0 SFNM BUF M/S AEOI 86

Debe estar a “1” para indicar


funcionamiento en modo 8086

1 = fin de interrupción automático


0 = fin de interrupción normal

Control del modo BUFFER

Control de anidamiento especial


INTERRUPCIONES
La programación del PIC 8259
Palabras de operación (OCW)

Se pueden enviar en cualquier momento

Son tres : OCW1, OCW2 y OCW3

OCW1 ⇒ se corresponde con el registro IMR

Se detecta porque:

A0 = 1 (escritura o lectura en posición IMPAR)

Mediante OCW1 se pueden activar o desactivar los bits de


la máscara de interrupción

IMR
M7 M6 M5 M4 M3 M2 M1 M0 A0 = 1

1 = Activar máscara
0 = Desactivar máscara
INTERRUPCIONES
La programación del PIC 8259
Palabra de operación OCW2

Se detecta cuando:

Se escribe en posición PAR (A0 = 0)


El byte que se escribe tiene D4 = 0 y D3 = 0

Controla los modos de:

Específico
Fin de interrupción
No específico

Rotación automática
Gestión de prioridades
Rotación específica

H SL EOI 0 0 L2 L1 L0

Número de IRQ al que se refiere

001 EOI no específico


011 EOI específico
101 No válido
100
000
111 Rotación
110
010 No válido
INTERRUPCIONES
La programación del PIC 8259
Palabra de operación OCW3

Se detecta cuando:
Se escribe en posición PAR (A0 = 0)
El byte que se escribe tiene D4 = 0 y D3 = 1

Permite el sondeo y la lectura de STATUS

1. Primero se escribe en posición PAR

0 0 1 P RR RIS

RR RIS Acción

1 0 Lee IRR
1 1 Lee ISR

1 = Comando Poll

2. A continuación se lee en posición PAR


En comando POLL

I W2 W1 W0

En otros:

Lectura de IRR o ISR directamente


INTERRUPCIONES
Las interrupciones en el PC

Desde la arquitectura AT hay dos PIC

PIC IRQ8
PIC IRQ0 ESCLAVO IRQ9
MAESTRO IRQ1 IRQ2 IRQ10
IRQ11
IRQ3 IRQ12
IRQ4 IRQ13
IRQ5 INT IRQ14
IRQ6 IRQ15
CAS0 CAS1 CAS2
CAS0 CAS1 CAS2
IRQ7
SP/EN
SP/EN
Vcc

PIC MAESTRO Dir E/S = 20h, 21h


PIC ESCLAVO Dir E/S = A0h, A1h

Interrupciones reservadas:

IRQ0 Temporizador (Timer)


IRQ1 Teclado
IRQ8 Reloj de tiempo real
IRQ13 Errores del coprocesador
IRQ14 Controlador de disco duro
IRQ3 Puerto serie COM1
IRQ4 Puerto serie COM2
IRQ6 Controlador de diskette
IRQ7 Puerto paralelo

Al inicio del sistema se especifica:

PIC MAESTRO INT = IRQ + 8


PIC ESCLAVO INT = IRQ + 70h

You might also like