Interrupciones
Técnica Polling: La CPU del microcontrolador consulta constantemente el
componente/dispositivo de hardware que emite una señal para ser atendida. Por lo
general esta técnica degrada el rendimiento del sistema.
Interrupciones: La CPU del microcontrolador no necesita consultar constantemente
el componente/dispositivo de hardware ya que el sistema de interrupción le avisará
cuando éste tenga una señal para ser atendida por la CPU y atender la petición.
Instructor: Godo Sánchez Heredia
Interrupciones
Exepciones
Las excepciones son eventos asincrónicos impulsados por hardware
que hacen que la MCU se desvíe de la ejecución normal del código.
Instructor: Godo Sánchez Heredia
Interrupciones
La Arquitectura de 16 bits que poseen los dsPIC tienen un esquema de excepción
vectorial con soporte para hasta ocho fuentes de trampas no enmascarables y hasta
246 fuentes de interrupción. En ambas familias, cada fuente de interrupción puede
asignarse a uno de los siete niveles de prioridad.
La latencia de interrupción básica es de cuatro ciclos de instrucción al ingresar y tres
ciclos de salida de una Rutina de servicio de interrupción (ISR) .
L
Instructor: Godo Sánchez Heredia
Interrupciones
Esquema de excepción vectorial
Cada fuente de interrupción puede desencadenar la ejecución de una pieza única de código,
denominada rutina de servicio de interrupción.
La dirección de inicio de cada ISR (también llamada vector ) se almacena en la Tabla de vectores
de interrupción primaria (IVT) como se muestra:
Instructor: Godo Sánchez Heredia
Interrupciones
Tipos de excepciones
Trampas no enmascarable:
Las trampas se pueden considerar como interrupciones encajables y no enmascarables que se adhieren a una
estructura de prioridad fija. Están destinados a detectar determinados problemas de hardware y software.
Trampa de falla del oscilador
Trampa de error de pila
Trampa de error de dirección
Trampa de error aritmético
Interrupciones periféricas y externas
Estas son las solicitudes de interrupción regulares y enmascarables que provienen de una variedad de
periféricos MCU implementados:
Pines de interrupción externos
Captura de entrada / Comparación de salida
Interfaces de comunicación (UART / SPI / I²C / USB / Ethernet)
Puerto maestro paralelo (PMP)
E / S analógicas (comparador, ADC / DAC)
etc…
Instructor: Godo Sánchez Heredia
Interrupciones
Prioridad de CPU
La CPU de 16 bits puede funcionar en uno de los 16 niveles de prioridad (0-15). Una fuente de interrupción o trampa
debe tener un nivel de prioridad establecido mayor que la prioridad actual de la CPU para iniciar un proceso de
excepción.
Los niveles de prioridad para las fuentes de interrupciones periféricas y externas se pueden programar en los niveles 0-7,
mientras que los niveles de prioridad de la CPU 8-15 están reservados para fuentes de trampa y son fijos .
Instructor: Godo Sánchez Heredia
Interrupciones
Interrumpir anidamiento
Las interrupciones, por defecto, son encajables . Cualquier ISR que esté en progreso puede ser interrumpido
por otra fuente de interrupción que tenga un nivel de prioridad programado más alto.
La siguiente animación demuestra un escenario específico que involucra el subproceso de ejecución main ()
junto con tres subprocesos ISR preprogramados en diferentes niveles de prioridad con el anidamiento de
interrupciones habilitado.
Instructor: Godo Sánchez Heredia
Interrupciones
Interrumpir anidamiento
Instructor: Godo Sánchez Heredia
Interrupciones
Interrumpir anidamiento
Instructor: Godo Sánchez Heredia
Interrupciones
Esquema de excepción vectorial
Instructor: Godo Sánchez Heredia
Interrupciones
Esquema de excepción vectorial
Instructor: Godo Sánchez Heredia
Interrupciones
Esquema de excepción vectorial
Instructor: Godo Sánchez Heredia
Interrupciones
Esquema de excepción vectorial
Instructor: Godo Sánchez Heredia
Interrupciones
Esquema de excepción vectorial
Instructor: Godo Sánchez Heredia
Interrupciones
Esquema de excepción vectorial
Instructor: Godo Sánchez Heredia
Interrupciones
Resolución de conflictos de interrupción
Instructor: Godo Sánchez Heredia
Interrupciones
Configuración y uso de interrupciones
Hay tres conjuntos de bits de control que deben tenerse en cuenta al trabajar con interrupciones:
IFSX
Indica que se ha producido un evento de interrupción
Establecido por el hardware y aprobado por el programador
IECX
Habilitar o deshabilitar fuentes de interrupción individuales
IPCX
Establecer la prioridad de las fuentes de interrupción individuales
Instructor: Godo Sánchez Heredia
Interrupciones
Ejemplo de Configuracion INT0
Registro IECx
Para habilitar cualquier interrupción en particular, se deben utilizar registros IECx
Registro IPCx
Los registros IPCx se utilizan para establecer la prioridad de cualquier interrupción
Instructor: Godo Sánchez Heredia
Interrupciones
Ejemplo de Configuracion INT0
Registro IFSx
Al ocurrir un evento específico, el bit de bandera de interrupción de la interrupción se establecerá en el registro IFSx.
Declaración de una rutina de servicio de interrupción
El compilador MPLAB ® XC16 define un atributo de función especial para declarar una función de rutina de servicio de
interrupción:
Instructor: Godo Sánchez Heredia
Interrupciones
Extras
Las interrupciones pueden ocurrir en cualquier momento y podrían dañar las variables utilizadas en su programa principal.
Los siguientes registros se guardan y restauran automáticamente desde la pila mediante el hardware de procesamiento de excepciones:
Contador de programas (PCL y PCH)
Byte bajo del registro de estado de la CPU (SRL)
Además, el compilador XC16 generará instrucciones adicionales de ahorro de contexto para guardar y restaurar los siguientes registros de
la pila:
Registro de recuento repetido (RCOUNT)
Registros de trabajo utilizados en el ISR (W0-W13)
Registro de la página de visibilidad del espacio del programa (PSVPAG)
Puntero de fotograma anterior (W14)
Instructor: Godo Sánchez Heredia
Interrupciones
Extras
Para interrupciones rápidas, use Shadow Registers
Los registros W0-W3 y ciertos registros de estado de la CPU están sombreados, lo que significa que
hay un nivel de registros de respaldo dedicados para ellos. El contexto se guarda con una sola
instrucción PUSH.S mientras que POP.S restaurará todos estos registros en una sola operación .
Las instrucciones de registro de sombra se pueden generar opcionalmente para su interrupción de mayor
prioridad a través del atributo de sombra como se muestr
Instructor: Godo Sánchez Heredia
MUCHAS GRACIAS
Instructor: Godo Sánchez Heredia