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.