Você está na página 1de 16

Interrupciones

Interrupciones

Cap.3.1 Interrupciones

Definicin

Definicin:
Es una peticin provocada generalmente por
parte
de
un
perifrico
hacia
el
microprocesador.
En el momento en se origina una interrupcin
se provoca la desviacin del flujo de control
del p, que abandona el programa principal y
pasa a ejecutar una rutina de cdigo llamada
ISR (Interrupt Service Routine), que atiende
la causa que la ha originado.

Cap.3.1 Interrupciones

Interrupciones

El cdigo que se encuentra dentro de la ISR


es el que programa el usuario.
Generalmente existen varias ISR's en un
microcontrolador y cada una de ellas esta
ligada a un perifrico.
Si el microcontrolador tiene un TIMER,
UART, SPI, etc, entonces existir una ISR
para cada uno de esos perifricos.

Cap.3.1 Interrupciones

Interrupciones

Cada ISR se encuentra codificada dentro de


la memoria de programa.
La direccin de inicio de cada ISR se
encuentra dentro de una seccin de
memoria llamada Tabla de Vectores de
Interrupcin (IVT).
La tabla se encuentra a partir de la direccin
0x000004 de la memoria de programa y
establece niveles de prioridad para la
ejecucin de cada ISR.

Cap.3.1 Interrupciones

Interrupciones

Interrupciones en el dsPIC30F

Los 8 primeros vectores de la IVT estn


reservados
para
excepciones
o
interrupciones no mascarables (no puede
ser deshabilitada por software).
Los restantes para interrupciones
mascarables.
La familia dsPIC30F sensor:

Tiene hasta 21 fuentes de interrupcin


Tiene 4 excepciones (trampas) de
procesador, las cuales estn basadas en un
esquema de prioridad.

Excepciones: 0-7
Software: Fallo de pila y error
aritmtico.
Hardware:Fallo del oscilador y
Error en direccionamiento.
Interrupciones: 8

Interrupciones

Cuando un perifrico manda una seal de


interrupcin se activa su correspondiente
bandera de interrupcin, esta bandera es
verificada durante cada ciclo de instruccin.
Con la bandera activada, si su nivel de
prioridad es mayor que el del procesador, el
procesador salva la siguiente informacin
en la pila:

El valor actual del PC


El byte bajo del registro de estado
El bit IPL3

Interrupciones

Despus de esto, la ISR es ejecutada, es


responsabilidad del programador apagar la
bandera de interrupcin. Al final se ejecuta la
instruccin retfie quien restaura los valores
introducidos en la pila.

Interrupciones

Las excepciones e interrupciones admiten


16 niveles de prioridad.
El CPU tiene el nivel ms bajo (0), pero
puede ser modificado de forma manual,
escribiendo sobre los bits IPL.
Los 16 niveles se dividen en 2 grupos:

0 al 7: Interrupciones externas (perifricos)


8 al 15: Excepciones internas, no mascarables,
que se tienen que atender en el momento que se
producen.

Las excepciones tienen niveles de prioridad


superior a las interrupciones.

Interrupciones

Los niveles de prioridad se indican en los


bits de estado: IPL<2:0>, del registro SR
<7:5>, y el IPL3 del registro CORCON<3>.
Los bits IPL se pueden leer y escribir.
Todas las interrupciones externas que sean
inferiores al nivel 7 se pueden deshabilitar,
poniendo los bits IPL=111.
Si el bit IPL3 esta activo, indica que una
excepcin esta en proceso.

Interrupciones

Los registros asociados que ayudan a


habilitar, controlar y establecer los niveles
de prioridad de las interrupciones y
excepciones son:

INTCON1
INTCON2
SR
CORCON
IFS0<15:0>, IFS1<15:0>, IFS2<15:0>
IEC0<15:0>, IEC1<15:0>, IEC2<15:0>
IPC0<15:0>, IPC1<15:0>,...,IPC10<7:0>
IPL<3:0>

Cap.3.1 Interrupciones

Interrupciones

INTCON1
Contiene la banderas y bits de cntrolde
las excepciones y el bit NSTDIS que
habilita/deshabilita el anidamiento de
interrupciones.

INTCON2
Contiene los bits para el control de las
interrupciones externas, el bit que activa
la AIVT y de la instruccin DISI.

Cap.3.1 Interrupciones

Interrupciones

SR
Registro de estado de la CPU. Contiene
el registro IPL<2:0> que indica el nivel
de prioridad de la CPU.

CORCON
Contiene los bits de estado IPL3 con el
que se identifica el nivel de prioridad de
la CPU.

Cap.3.1 Interrupciones

Interrupciones

Los registros IFSX contienen las


banderas de interrupcin.
Estas banderas son activadas (se ponen
en uno) por los perifricos, cuando
emiten una seal de interrupcin.
El programador tiene la responsabilidad
de limpiarlas por software dentro de la
ISR.

Cap.3.1 Interrupciones

Interrupciones

Los registros IECX contienen todos los bits


para la habilitacin de las interrupciones de
cada perifrico.
Los registros IPCX contienen todos los bits
para establecer la prioridad de cada una de
las interrupciones.
Los niveles de prioridad son de 0 a 7 donde
0 es el nivel ms bajo y 7 el nivel ms alto.
Por default todas las interrupciones tiene el
nivel 4 de prioridad.

Cap.3.1 Interrupciones

Los bits IPL establecen el nivel de prioridad


del CPU.

Interrupciones

Por default el nivel de prioridad del CPU es


cero.

Las
interrupciones
pueden
deshabilitadas en los siguientes casos:

ser

Cuando una interrupcin tiene un nivel de


prioridad menor o igual que el nivel de
prioridad del CPU.
Cuando el nivel de prioridad de la interrupcin
es cero.
Cuando el nivel de prioridad del CPU es 7.

Você também pode gostar