Anda di halaman 1dari 5

En computación, una interrupción es una señal asincrónica desde el hardware que

indica la necesidad de atención, o un evento sincrónico en software que indica la


necesidad de un cambio en ejecución.

Una interrupción de hardware (hardware interrupt) provoca que el procesador salve su


estado de ejecución a través de una conmutación de contexto (context switch) y
comience la ejecución de un manejador de interrupción (interrupt handler).

La interrupción de software es generalmente implementada como una instrucción en


un conjunto de instrucciones, que causa una conmutación de contexto (context switch)
a un manejador de interrupción similar a una interrupción de hardware.

Las interrupciones son una técnica comúnmente usada en la multitarea, especialmente


en la computación en tiempo real. El acto de interrupción es usualmente llamado IRQ
(o interrupt request).

Crear una nueva carpeta en el directorio de trabajo.


Volcar al directorio de trabajo los ficheros la p´agina web
http:// www.iit.upco.es/˜cesar/servoi
Hacer doble click sobre el icono:
servoi.Uv2
Ejecutar en tarjeta.
3. Ejemplo de generaci´on de onda
El siguiente programa genera una se˜nal peri´odica de periodo 2 ms y 50%de “duty-
cycle” utilizando la interrupci´on
del timer 0.

/* Funci´on de manejo de servo en lenguaje C,


usando interrupciones de timer0
Departamento de Electr´onica y Autom´atica DEA-ICAI
Prof. Ces´areo Fern´andez Mart´ınez
*/
#include <reg167.h>
#include <stdio.h>
#define CUENTA -2500
void timer0(void) interrupt 0x20 {
P7 = P7 ˆ 0x0001;
}
void main(void) {
DP7 = 0x0001;
P7 = 0x0000;
T01CON = 0x0;
T0 = CUENTA;
T0REL = CUENTA;
T0R = 1; // arranca timer
T0IC = 0x44;
IEN = 1;
while(1) ;
}
Tipos de interrupciones
En este subapartado vamos a hacer una clasificación de las distintas clases de
interrupciones que nos podemos encontrar atendiendo a la fuente que las produce. Por
un lado distinguiremos si se producen por causas internas o externas al procesador y
remarcaremos que este hecho está íntimamente ligado con que las interrupciones sean
síncronas o asíncronas:

• Interrupciones hardware: Estas son asíncronas a la ejecución del procesador, es


decir, se pueden producir en cualquier momento independientemente de lo que
esté haciendo la CPU en ese momento. Las causas que lo producen son externas
al procesador y a menudo suelen estar ligadas con distintos dispositivos de E/S.

• Interrupciones software o excepciones : Son aquellas que se producen de forma


síncrona a la ejecución del procesador y por tanto podrían predecirse si se
analiza con detenimiento la traza del programa que en ese momento estaba
siendo ejecutado en la CPU. Normalmente las causas de estas interrupciones
suelen ser realizaciones de operaciones no permitidas tales como la división por
0, el desbordamiento, el acceso a una posición de memoria no permitida, etc.

• Trampas: A menudo se tiende a confundir las interrupciones software y las


trampas, ya que su naturaleza es bastante similar. Sin embargo las excepciones
se producen al realizar una operación no permitida por lo que de algún modo
podemos decir que no es controlada directamente por el programador si no que,
por un fallo al programar, se producen. No obstante las trampas si que son
provocadas por el programador, para provocar una trampa existen distintas
instrucciones en el repertorio máquina que permiten al programador producir
una interrupción al ejecutar dicha instrucción. Suelen tener nemotécnicos tales
como INT. Suelen ser de vital importancia ya que a partir de las trampas se
pueden pedir al SO que realice determinadas funciones, para ello, en DOS se
realiza la instrucción INT 0x21 y en Unix se utiliza INT 0x80.

INTERRUPCIONES IRQs

Que es una interrupcion?


Una interrupción es una señal de hardware, esta dice al procesador
que pare temporalmente lo que esta haciendo y que haga alguna
otra cosa. Sin interrupciones el procesador tendría que hacer un
chequeo constante de eventos externos; con interrupciones el
procesador puede trabajar sobre alguna otra cosa y responder a un
evento tan pronto como este ocurra.

Invocacion de Interrupciones
Las interrupciones del procesador, hardware y software son
invocadas de diferente manera:

• Procesador: Las interrupciones del procesador o


interrupciones lógicas son invocadas por el procesador
como consecuencia de un resultado inusual del programa,
tal como un intento de división por cero.
• Hardware: Las interrupciones de hardware son invocadas
por mecanismos periféricos estos fijan sus respectivas
líneas de petición de interrupción (IRQ). Cada vez que
una tecla es presionada, por ejemplo, el teclado genera
una interrupción. Las interrupciones de hardware son
vectoreadas a rutinas de servicio de interrupción (ISRs) estas
generalmente residen en el BIOS.
• Software: Las interrupciones de software son invocadas a
través de la instrucción INT del 8086. La mayoría de las
interrupciones de software son vectoreadas a (DSRs)
localizado en el BIOS, o en programas de aplicación.

Niveles de IRQ ( Lineas de interrupcion )


Para ganar la atención de la CPU, se utilizan líneas de solicitud de
interrupción (IRQ-Interrupt Request). El bus de la PC ofrece las
líneas 2 a 7. Respetan prioridades, siendo la línea 2 más importante
que la línea 7. Cuando se activa una línea, el procesador deja todo
lo demás y carga una subrutina especial para encargarse de (dar
servicio a ) esa línea de interrupción en particular.

Algunas veces los dispositivos periféricos necesitan obtener la


atención de la CPU en sincronía critica. Citamos un ejemplo: El
controlador del teclado es bastante tonto. No tiene memoria
prácticamente, así que cada vez que un tecleo llega al controlador,
este necesita entregárselo a la CPU antes de que llegue otro tecleo.
Básicamente, cada vez que el controlador del teclado recibe un
tecleo, quiere decir a la CPU. “¡HEY! ¡DETEN TODO! ¡VEN A
DARME SERVICIO AHORA ANTES DE QUE EL USUARIO
OPRIMA OTRA TECLA! “ , así que “suena la alarma” - activa su
línea de interrupción . La CPU se detiene y ejecuta el programa que
pasa el tecleo a la memoria temporal (buffer) del teclado.

Si se esta instalando una tarjeta que necesita una IRQ, vea primero
la línea de interrupción 2 en las computadoras PC o la 5 en las AT.
Si esas no están disponibles pruebe la 3; si no se tiene COM2, no
habrá conflicto. Algunos textos afirma que se puede robar la IRQ 7
del puerto paralelo. Ello es verdad únicamente si no se utiliza
WINDOWS ni OS/2.

Al igual que con DMA, las maquinas de 16 bit's tienen líneas de


interrupción adicionales. Se pueden usar únicamente si se esta
insertando una tarjeta de 16 bit's en una ranura de 16 bit's. Uselas si
es posible, a manera de dejar lugar en las ocho IRQ inferiores para
otras tarjetas. Las PC y las XT únicamente tienen las IRQ de 0 a 7.

Repetimos lo dicho en la explicación de las direcciones I/O: Algunas


tarjetas no tiene puentes ni interruptores DIP. Esto significa que no
hay modo de hacerlas trabajar cuando otras tarjetas tienen conflictos
con ellas. Por ejemplo, un cliente que visitaba regularmente había
instalado una tarjeta IBM 5251 (Emulador de terminal de sistema 36)
y una vieja Quadram Quadboard en una PC. El puerto de impresora
en la Quadboard y la emuladora de terminal querían el mismo
recurso - no recuerdo cual. De cualquier modo, ninguna tenía
puentes, una tarjeta tuvo que ser tirada a la basura.

Moraleja: averigüe si las tarjetas de expansión que compra tienen


ajustables sus DMA, IRQ y direcciones I/O.

Usos mas comunes de las IRQ en la PC

IRQ 0=Timer

IRQ 1=Teclado

IRQ 2=Interrupción del 8259 esclavo

IRQ 3=Puerto serial 2 ( COM2 )

IRQ 4=Puerto serial 1 ( COM1 )

IRQ 5=Puerto paralelo 2 ( LPT2 )

IRQ 6=Controlador de disco flexible

IRQ 7=Puerto paralelo 1 ( LPT1 )

IRQ 8=Timer

IRQ 9=Adaptador de LAN

IRQ 10=Reservada
IRQ 11=Reservada

IRQ 12=Reservada

IRQ 13=Cooprocesador 80287

IRQ 14=Controlador de disco duro

IRQ 15=Reservada

Anda mungkin juga menyukai