Sie sind auf Seite 1von 46

Ing.

Juan Vega Martinez Interrupciones


Unidad de aprendizaje 1
Arquitectura de los dsPICs

Unidad 1

Al finalizar la unidad los


estudiantes comprenden e
45% identifican las principales
características de la arquitectura
de los microcontroladores dsPIC
de MICROCHIP.

Ing. Juan Vega Martinez Interrupciones 2


Logro de la sesión

Semana 5

Comprender y entender el funcionamiento


21% del manejo de las interrupciones en los
microcontroladores dsPICs.

Ing. Juan Vega Martinez Interrupciones 3


INTERRUPCIONES

Ing. Juan Vega Martinez Interrupciones 4


¿Qué es una Interrupción?

Una interrupción es una suspensión temporal de la


ejecución de un proceso, con la finalidad de atender a un
dispositivo que requiere con urgencia la atención y esto
se realiza mediante una subrutina de servicio de
interrupción.

Ing. Juan Vega Martinez Interrupciones 5


INTERRUPCIONES

Introducción

Los dispositivos de MCU y DSC de 16 bits tienen un esquema de


excepción vectorizada con soporte para hasta 8 fuentes de trampas no
enmascarables y hasta 246 fuentes de interrupción. En ambas familias,
cada fuente de interrupción se puede asignar a uno de los siete niveles
de prioridad.

La latencia de interrupción básica es de 4 ciclos de instrucciones para


ingreso a la rutina y 3 ciclos salen de una rutina de servicio de
interrupción (ISR).

La combinación de determinar, el procesamiento de excepciones de


baja latencia con prioridad de interrupción seleccionable por el usuario
hacen que el sistema de gestión de interrupciones de 16 bits, sea
superior a la mayoría de las otras arquitecturas

Ing. Juan Vega Martinez Interrupciones 6


INTERRUPCIONES

Esquema del Vector de Interrupción

Cada fuente de interrupción puede provocar la ejecución de una pieza


única de código, llamado rutina de servicio de interrupción (ISR).
Ing. Juan Vega Martinez Interrupciones 7
INTERRUPCIONES

Esquema del Vector de Interrupción

Se usa cuando
se realiza debug
Ing. Juan Vega Martinez Interrupciones 8
INTERRUPCIONES

Proceso simplificado de la interrupción

Cuando un evento de excepción ocurre:


1. Hardware (central o periférico) detecta eso.
2. Si la prioridad programada del evento excepción es mayor
que la actual prioridad de la CPU, se detiene la ejecución
actual del programa.
3. Se inicia la ISR(Rutina de servicio de Interrupción)

Ing. Juan Vega Martinez Interrupciones 9


INTERRUPCIONES

Proceso simplificado de la interrupción

Cuando la ISR(Rutina de servicio de Interrupción) finaliza


El Hardware restaura la ejecución del programa que había sido
previamente detenido y devuelve en la instrucción exacta que
habría sido ejecutado de no haber ocurrido el evento de
excepción.

Ing. Juan Vega Martinez Interrupciones 10


INTERRUPCIONES

Tipos de Interrupciones

• No-Maskables Traps

• Peripheral & external Interrupt

Ing. Juan Vega Martinez Interrupciones 11


INTERRUPCIONES

Tipos de Interrupción

 Non-Maskables Traps

Estan diseñados para detectar ciertos problemas de hardware y


software. El dsPIC30F tiene 4 fuentes de non-maskable traps:

 Oscillator Failure Trap


 Stack Error Trap
 Address Error Trap
 Arithmetic Error Trap

Ing. Juan Vega Martinez Interrupciones 12


INTERRUPCIONES

Tipos de Interrupción

 Peripheral & external Interrupt

Estas son las regulares, solicitudes de interrupción enmascarables


que provienen de una variedad de periféricos MCU
implementadas:

 External Interrupt Pins


 Input Capture/Output Compare
 Communication Interfaces (UART/SPI/I2C/USB/Ethernet)
 Analog I/O (Comparator, ADC/DAC)
 etc…

Ing. Juan Vega Martinez Interrupciones 13


INTERRUPCIONES

Prioridad del CPU

Una de las características fundamentales del sistema de


procesamiento de excepciones de 16 bits, es la implementación
de un establecimiento de prioridades programable por el
usuario para fuentes de interrupción periféricos y externos.
Esto requiere una comprensión del concepto de prioridad de la
CPU.

Ing. Juan Vega Martinez Interrupciones 14


INTERRUPCIONES

Prioridad del CPU

El CPU que es de 16 bits, puede operar en 16 niveles de


prioridad, desde 0 a15.

Una fuente de interrupción o traps(trampa) debe tener un nivel


de prioridad conjunto mayor que la actual prioridad de la CPU
con el fin de iniciar un proceso de atención a la Interrupción.

Ing. Juan Vega Martinez Interrupciones 15


INTERRUPCIONES

Prioridad del CPU

Los niveles de prioridad de las fuentes de los periféricos y


interrupciones externas pueden ser programados desde el nivel
0 al nivel 7, mientras que los niveles de Prioridad del CPU del 8 al
15 son reservados para las fuentes Non-Maskables Traps.

La prioridad de la CPU para el hilo de ejecución actual se indica


con los bits "IPL" en el estado de la CPU.

Ing. Juan Vega Martinez Interrupciones 16


INTERRUPCIONES

Prioridad del CPU

La prioridad del CPU para el hilo de ejecución actual, se indica


con los bits "IPL" en el registro de estado de la CPU (Status
Register) y el registro de control del núcleo (Core Control
register)

Ing. Juan Vega Martinez Interrupciones 17


INTERRUPCIONES

Prioridad del CPU

La prioridad del CPU para el hilo de ejecución actual, se indica


con los bits "IPL" en el registro de estado de la CPU (Status
Register) y el registro de control del núcleo (Core Control
register)

Cuando el dispositivo se resetea, el estado la


prioridad del CPU = 000

Ing. Juan Vega Martinez Interrupciones 18


INTERRUPCIONES

Configuración de prioridad de la CPU

Los Bits de IPL son controlados automáticamente por la lógica


de procesamiento excepción basada en la fuente de
interrupción.

El programador puede establecer manualmente los bits de


prioridad de la CPU de usuario (IPL <2: 0>) en cualquier
momento. Esto es útil para enmascarar temporalmente todas las
otras interrupciones para realizar una tarea intensivo de la CPU.

IPL3 sólo se establece internamente e indica un evento de Traps.

Ing. Juan Vega Martinez Interrupciones 19


INTERRUPCIONES

Jerarquización de la interrupción

Las interrupciones por defecto son anidables. Cualquier ISR que


está en curso puede ser interrumpida por otra fuente de
interrupción que tiene un nivel de prioridad programada más
alta.

La siguiente animación muestra un escenario específico que


implica el main () hilo de ejecución, junto con 3 ISR hilos pre-
programados en diferentes niveles de prioridad con anidación de
interrupción habilitado.

Ing. Juan Vega Martinez Interrupciones 20


INTERRUPCIONES

Jerarquización de la interrupción

Ing. Juan Vega Martinez Interrupciones 21


INTERRUPCIONES

Jerarquización de la interrupción

Ing. Juan Vega Martinez Interrupciones 22


INTERRUPCIONES

Jerarquización de la interrupción

Ing. Juan Vega Martinez Interrupciones 23


INTERRUPCIONES

Jerarquización de la interrupción

Ing. Juan Vega Martinez Interrupciones 24


INTERRUPCIONES

Jerarquización de la interrupción

Ing. Juan Vega Martinez Interrupciones 25


INTERRUPCIONES

Jerarquización de la interrupción

Ing. Juan Vega Martinez Interrupciones 26


INTERRUPCIONES

Jerarquización de la interrupción

Tenga en cuenta que la latencia para el re-ingreso de


las interrupciones anidadas es de 7 ciclos de
instrucción (3 para salir de hilo anterior + 4 para volver
a entrar en el siguiente hilo

Ing. Juan Vega Martinez Interrupciones 27


INTERRUPCIONES

Jerarquización de la interrupción

Anidación de interrupción se puede desactivar


opcionalmente, ajustando el bit de control NSTDIS
(INTCON1 <15>).

Cuando se establece el bit NSTDIS, todas las


interrupciones en curso fuerzan la CPU prioridad a nivel
7 , ajustando IPL <2: 0> = 111.

Esto efectivamente máscaras todas las demás fuentes de


interrupción hasta un RETFIE (regreso de interrupción) de
instrucciones se ejecuta.

Ing. Juan Vega Martinez Interrupciones 28


INTERRUPCIONES

Jerarquización de la interrupción

Cuando anidación de interrupción está desactivada, los


niveles de prioridad asignado por el usuario no tendrán
ningún efecto, salvo para resolver los conflictos entre las
solicitudes de interrupción simultáneamente pendientes.

Ing. Juan Vega Martinez Interrupciones 29


INTERRUPCIONES

Resolviendo conflicto de interrupciones

Por ejemplo, en el reinicio del sistema, los registros IPCx, se


inicializan de tal forma que todas las fuentes de interrupción de
usuario, tengan un nivel de prioridad 4.

¿Cómo funciona el sistema a resolver este


tipo de conflictos?

Ing. Juan Vega Martinez Interrupciones 30


INTERRUPCIONES

Resolviendo conflicto de interrupciones

Primero, por la prioridad asignada por el usuario de esa fuente


en el registro IPCx.

Ing. Juan Vega Martinez Interrupciones 31


INTERRUPCIONES

Resolviendo conflicto de interrupciones

Luego, por la prioridad


orden natural dentro de la
tabla de vectores de
interrupción

Ing. Juan Vega Martinez Interrupciones 32


INTERRUPCIONES

Configurando las Interrupciones

Hay tres conjuntos de bits de control que deben tenerse en


cuenta cuando se trabaja con interrupciones:
• Banderas de interrupción
Indica que se ha producido un evento de interrupción.
Fijado por el hardware y borrado por el programador.
• Habilitadores de Interrupción
Activar o desactivar fuentes de interrupción de forma individual.
• Bits de prioridad de interrupción
Establecer la prioridad de las fuentes de interrupción individuales.

Ing. Juan Vega Martinez Interrupciones 33


INTERRUPCIONES

Configurando las Interrupciones


La bandera(Flag), habilitador(enable) y bits de control de prioridad(IP) son
utilizados por el controlador de interrupciones para recibir y dar prioridad a
todas las solicitudes de excepción y enviar un único vector y IPL
correspondiente al núcleo de la CPU como se muestra:

Ing. Juan Vega Martinez Interrupciones 34


INTERRUPCIONES

Registros

INTERRUPCIONES

IFSx

IECx

IPCx

IPL(3..0)
INTCONx

Ing. Juan Vega Martinez Interrupciones 35


INTERRUPCIONES

Registros

INTERRUPCIONES

IFSx
Registros:
ISF0, ISF1, ISF2
IECx

Contienen el
IPCx estado de todas
las banderas de
IPL(3..0) interrupción
INTCONx

Ing. Juan Vega Martinez Interrupciones 36


INTERRUPCIONES

Registros

INTERRUPCIONES

IFSx
Registros
IEC0, IEC1, IEC2
IECx

Habilitan las
IPCx interrupciones en
el dispositivo.
IPL(3..0)
INTCONx

Ing. Juan Vega Martinez Interrupciones 37


INTERRUPCIONES

Registros

INTERRUPCIONES

IFSx
Registros
IPC0, IPC1 ….
IECx IPC10

Configura la
IPCx prioridad de las
interrupciones
IPL(3..0)
INTCONx

Ing. Juan Vega Martinez Interrupciones 38


INTERRUPCIONES

Registros

INTERRUPCIONES

IFSx
Nivel de Prioridad
del CPU
IECx

IPCx

IPL(3..0)
INTCONx

Ing. Juan Vega Martinez Interrupciones 39


INTERRUPCIONES

Registros

INTERRUPCIONES

IFSx

Registros INTCON1 ,
IECx INTCON2

Contienen la
IPCx configuración global
de las interrupciones

IPL(3..0)
INTCONx

Ing. Juan Vega Martinez Interrupciones 40


INTERRUPCIONES

Ejemplo:
Interrupción Externa INT0.

Registro IECx

Ing. Juan Vega Martinez Interrupciones 41


INTERRUPCIONES

Ejemplo:
Interrupción Externa INT0.

Registro IFSx

Ing. Juan Vega Martinez Interrupciones 42


INTERRUPCIONES

Ejemplo:
Interrupción Externa INT0.

Registro IPCx

Ing. Juan Vega Martinez Interrupciones 43


INTERRUPCIONES

Declarando una interrupción en MPLABx

Ing. Juan Vega Martinez Interrupciones 44


Semana 5

Se ha logrado, comprender y entender el


funcionamiento simplificado de las
interrupciones en el dsPIC

Ing. Juan Vega Martinez 45


Juan Vega Martinez
Ing. Electrónico
Twitter: @JuanVegaMart
Facebook: https://www.facebook.com/microElectronica

Ing. Juan Vega Martinez 46

Das könnte Ihnen auch gefallen