Vous êtes sur la page 1sur 12

INTERRUPCIONES

Acceso de dispositivos de I/O

Disp
I/O 1

Perif.
1

Disp
I/O 2

Perif.
2

Disp
I/O 3

Perif.
3

Disp
I/O n

Perif.
n

CPU

Comunicacin por encuesta (Polling)


En este caso el CPU se comunica con cada dispositivo de I/O para averiguar si alguno de ellos desea o
est dispuesto a transferir un dato hacia o desde el exterior. El CPU comienza con el dispositivo1, y si
este no requiere transferir datos, sigue con el prximo hasta encontrar algn dispositivo que requiera o
est dispuesto a comunicarse con l, en cuyo caso transmitir un dato hacia el exterior a travs de un
dispositivo de salida, o leer un dato desde el exterior a travs de un dispositivo de entrada.
El inconveniente que presenta este mtodo es que el CPU pierde mucho tiempo en encuestar a todos los
dispositivos de I/O que estn conectados con l, quienes en gran parte de los casos no requieren o no
estn en condiciones de transmitir un dato. Este tiempo adicional que pierde el CPU en preguntar a un
dispositivo dado recibe el nombre de overhead.
Este tipo de transferencia tambin reciben el nombre de transferencias iniciadas por el CPU.
Comunicacin por interrupciones
En este caso el CPU no encuesta a los dispositivos de I/O, sino que el dispositivo que en un momento
dado requiera o est dispuesto a transferir un dato, le avisa al CPU a travs de una lnea de interrupcin
(realiza una solicitud de servicio) para que suspenda la actividad que est realizando y completar as la
transferencia requerida. Esto implica que el CPU debe ejecutar automticamente un llamado a rutina
que sirva exclusivamente al dispositivo que interrumpi.
Bajo este esquema el CPU tiene una mejor utilizacin de su tiempo, el cual puede utilizar para ejecutar
varios procedimientos en una manera concurrente, es decir atender varios procedimientos
simultneamente. Pero para que este esquema sea efectivo, el CPU debe resolver varias cosas:
- Al recibir una solicitud de servicio debe identificar cual de todos los dispositivos conectados con
l, origin dicha peticin
- Si ms de un dispositivo hacen una solicitud al mismo tiempo, l debe elegir a quien atiende
primero y a quien deja pendiente para atenderlo luego de terminar con el primero.

Si en un momento dado, l est atendiendo la solicitud de un dispositivo y se genera una nueva


solicitud, debe decidir si suspende su actividad en curso o ignora la nueva solicitud.
Los dos ltimos puntos se refieren a una estructura de prioridad, que debe ser establecida en cualquier
sistema basado en microprocesador y que use interrupciones. Dicha estructura debe seguir los
siguientes principios:
- si dos dispositivos interrumpen simultneamente se atiende primero al de ms alta prioridad.
- Si un dispositivo esta siendo atendido por el CPU, y se produce la interrupcin de un dispositivo
de mayor prioridad, se suspende esta actividad para atender al dispositivo de mayor prioridad, y
al concluir su servicio, se contina con el servicio al dispositivo de menor prioridad.
- Si un dispositivo est siendo servido y se produce la interrupcin de un dispositivo de menor
prioridad, esta solicitud debe ser ignorada hasta tanto se concluya con el servicio que se est
ejecutando.
El nivel de prioridad debe ser asignado de acuerdo a la importancia y a la velocidad de respuesta de
cada dispositivo.
La mayor prioridad se asigna al evento o dispositivo ms importante, o al dispositivo ms rpido.

INTERRUPCIONES DE LA FAMILIA
PIC16F88X

Fuentes de Interrupcin
Existen 17 fuentes de interrupcin para esta familia:

Interrupcin externa (RB0/INT)


Overflow del Timer 0
Cambios en el Puerto B (RBI)
2 Comparadores
El convertidor A/D
Overflow del Timer 1
Overflow del Timer 2
Escritura de datos en la EEPROM
Monitoreo de la operacin segura de la seal de reloj
Mdulo Mejorado CCP (Captura, Comparacin y PWM)
Transmisin y recepcin a travs del puerto serial EUSART
Despertar del modo de Ultra bajo consumo
MSSP (Puerto Serial Sncrono Maestro)

Banderas de Interrupcin y de Habilitacin


Cada fuente de interrupcin posee dos banderas asociadas una que
permite habilitarla y otra para indicar que ha solicitado una
interrupcin. Ejemplo para la la lnea interrupcin externa INT
(ubicada en el pin 0 del puerto B) se tiene la INTE (bandera de
habilitacin) y la INTF (bandera de solicitud de interrupcin).
Para que una fuente pueda interrumpir al procesador debe tener
activada (puesta en 1) su bandera de habilitacin. Cuando se cumple
la condicin necesaria dicha fuente activar su bandera de
interrupcin con lo cual se ejecutar la rutina de servicio si dicha
fuente est habilitada.
Se puede manejar los distintos perifricos sin que produzcan
interrupciones monitoreando por programa sus banderas de
interrupcin.

Registros (SFR) Asociados

INTCON posee las banderas de interrupcin y habilitacin de la INT,


RBI y el Timer 0. Adems posee el bit PEIE que permite habilitar
(cuando se pone en 1) la interrupcin que provenga de cualquiera de
las catorce fuentes adicionales de interrupcin. Tambin posee el bit
GIE que se usa para habilitar o no, todas las interrupciones. Si est en
0 ninguna fuente de interrupcin ser reconocida.

Registros (SFR) Asociados


PIE1 contiene las banderas de habilitacin para el convertidor A/D, la
recepcin y transmisin del EUSART, el puerto serial sncrono, el
mdulo CCP1 (Captura, Comparacin y PWM 1), el timer 1 y el timer
2.
PIR1 contiene las banderas de interrupcin de las fuentes que se
habilitan en el PIE1.
PIE2 contiene las banderas de habilitacin para la operacin segura
de la seal de reloj, los mdulos de comparacin analgica (C1 y C2),
la escritura en la memoria EEPROM, la salida del modo de ultra bajo
consumo, el mdulo CCP2 (Captura, Comparacin y PWM 2) y
colisin del bus I2C.
PIR2 contiene las banderas de interrupcin de las fuentes que se
habilitan en el PIE2.

Respuesta a una peticin de interrupcin


El procesador ejecuta las siguientes pasos al reconocer una
interrupcin, los cuales tardan de 3 a 4 ciclos de instruccin en total.
1. Pone en cero el bit GIE, para deshabilitar las interrupciones
2. Coloca en el Stack la direccin de la instruccin que qued
pendiente, es decir coloca en el Stack el valor del actual PC,
similar a cuando se llama a una rutina.
3. Va a ejecutar la instruccin que est en la direccin 0004H.
Normalmente en esta direccin se ejecuta un GOTO a la direccin
donde realmente est la rutina de servicio. Lo primero que bebe hacer
la rutina de servicio es identificar las fuente que interrumpi, lo cual
se hace, monitoreando las banderas de interrupcin de las fuentes que
estn habilitadas. La bandera de interrupcin que est activada debe
ser reseteada para evitar que vuelva a interrumpir por la misma causa
al momento de rehabilitar las interrupciones antes de finalizar la rutina
de servicio. Esta rutina debe finalizar con la instruccin RETFIE.

SALVANDO EL CONTEXTO
Cuando el procesador reconoce una interrupcin slo salva el PC
en el STACK, de tal forma que el programador puede requerir
salvar otros registros que pueden ser alterados por la rutina de
servicio y esto afecte la ejecucin del programa que fue
interrumpido. Se sugiere salvar al menos el registro W y el
registro STATUS.

Interrupcin externa por el pin RB0/INT


La interrupcin por esta lnea es reconocida por flanco, lo cual se
programa con el bit INTEDG (bit 6 del registro OPTION_REG). Si
este bit es cero, se reconoce el flanco de cada, y si est en uno se
reconoce el flanco de alza. Se habilita con el bit INTE (bit 4 del
registro INTCON) y cuando un flanco vlido aparece en ella su
bandera INTF (bit 1 del registro INTCON) se pone en 1. Esta bandera
debe ser reseteada dentro de la rutina de servicio antes de que se
rehabiliten las interrupciones.
Esta lnea puede sacar al procesador del modo Sleep si ella fue
habilitada antes de que el procesador ejecutara la instruccin SLEEP.

Interrupcin por cambios en las lneas del Puerto B (RBI)


Esta interrupcin se habilita con el bit RBIE (bit 3 del registro
INTCON) . Un cambio en las lneas del puerto B pone en 1 el bit
RBIF (bit 3 del registro INTCON). Esta bandera debe ser reseteada
dentro de la rutina de servicio antes de que se rehabiliten las
interrupciones. El registro IOCB define cuales lneas del puerto B
intervendrn en la generacin de esta interrupcin.

Vous aimerez peut-être aussi