Interrupciones en El Pic 18f4550
Interrupciones en El Pic 18f4550
Interrupciones en El Pic 18f4550
INTRODUCCIN
o Una solicitud de interrupcin (comnmente conocida solo como interrupcin) es un evento
externo o interno que cuando es atendida hace que el microcontrolador interrumpa la
ejecucin del programa actual y ejecuta otro programa.
o En general cuando el programa que atiende la solicitud de interrupcin termina, el
microcontrolador continua ejecutando las instrucciones del programa que estaba siendo
ejecutada antes de que ocurriera la interrupcin.
o Las interrupciones son eventos asncronos al programa que es ejecutado por el MCU.
o En un microcontrolador hay varias fuentes de interrupcin, una internas y otras externas.
o Las interrupciones internas tienen su origen en los mdulos de E/S del MCU; la memoria o
la CPU, temporizadores, etc.
o Las interrupciones externas se originan en un perifrico y llegan al microcontrolador por
alguno de sus terminales.
o Los MCUs tienen recursos para recibir y procesar las solicitudes de interrupcin.
INTRODUCCIN
INTRODUCCIN
o Cada dispositivo que es fuente de una posible interrupcin tiene asociados dos bits (Gama
media y baja) y tres bits (Arquitectura PIC 18), estos pueden estar en el mismo registros o
en distintos registros.
1. El primer bit tiene una funcin informativa: Es un indicador que es activado (puesto a 1) por el dispositivo
que solicita la interrupcin.
o Este Bit se puede consultar por el programa con el fin de atender al dispositivo.
o Los bits con esta funcin tiene la terminacin IF (Interrupt Flag).
2. El segundo bit tiene una funcin de control: Se usa para permitir o impedir el paso de la solicitud de
interrupcin hacia la CPU, lo que equivale a habilitar o deshabilitar la interrupcin, tambin son
denominados como mascaras.
o Este bit de control se puede manejar dentro del programa.
o Los Bits que tienen esta funcin llevan la terminacin IE (Interrupt Enable).
3. El tercer bit (exclusivo de la Familia PIC 18), se utiliza para indicar la prioridad de la interrupcin.
o Este bit permite indicar la prioridad de la fuente de interrupcin, se manejan dos niveles alto (Direccin 0008h) y bajo (Direccin
00018h).
o Los Bits que tienen esta funcin llevan la terminacin IP (Interrupt Priority).
INTRODUCCIN
o Los MCU tambin tiene un bit
global de control de
interrupciones.
o Este habilita o deshabilita cualquier solicitud de
interrupcin que llega a la CPU.
o En el caso de los MCUs PIC es el bit GIE (Global
Interrupt Enable).
o Este bit solo puede controlar las interrupciones
enmascarables, a las que no son enmascarables
ocurren aun cuando este bit esta deshabilitado.
o PSPIF Bandera de interrupcin por escritura/lectura de puerto paralelo esclavo (Debe ser limpiada mediante
software).
o ADIF Bandera de interrupcin por el convertidor analgico digital (ADC) (Debe ser limpiada mediante software).
o RCIF Bandera de interrupcin por recepcin en USART (Debe ser limpiada mediante software).
o TXIF Bandera de interrupcin por transmisin en USART (Debe ser limpiada mediante software).
o SSPIF Bandera de interrupcin por el puerto serial sncrono maestro (MSSP) (Debe ser limpiada mediante software).
o CCP1IF Bandera de interrupcin por el modulo CCP1 (Debe ser limpiada mediante software).
o TMR2IF Bandera de interrupcin por comparacin del TIMER 2 con el registro PR2 (Debe ser limpiada mediante
software).
o TMR1IF Bandera de interrupcin por desbordamiento del TIMER 1 (Debe ser limpiada mediante software).
REGISTROS USADOS EN EL PROCESO DE INTERRUPCIN
o Registros de solicitud de interrupciones:
o OSCIF Bandera de interrupcin por falla en el oscilador (Debe ser limpiada mediante software).
o CMIF Bandera de interrupcin por el comparador (Debe ser limpiada mediante software).
o EEIF Bandera de interrupcin por operacin de escritura de datos en memoria EEPROM/Flash (Debe ser limpiada
mediante software).
o BCLIF Bandera de interrupcin por colisin en BUS del MSSP (Debe ser limpiada mediante software).
o HLVDIF Bandera de interrupcin por deteccin de voltaje alto/bajo (Debe ser limpiada mediante software).
o TMR3IF Bandera de interrupcin por desbordamiento del TIMER 3 (Debe ser limpiada mediante software).
o CCP2IF Bandera de interrupcin por el modulo CCP2 (Debe ser limpiada mediante software).
REGISTROS USADOS EN EL PROCESO DE INTERRUPCIN
o Registros de nivel de prioridad de interrupciones:
HABILITANDO UNA INTERRUPCIN.
o Interrupciones primarias:
o Cinco fuentes de interrupcin tienen sus bits de habilitacin localizados en los registros INTCON.
o Estas fuentes de interrupcin son referidas como interrupciones primarias.
o Para habilitar estas interrupciones solo es necesario poner a 1 el bit GIE/GIEH del registro INTCON.
HABILITANDO UNA INTERRUPCIN.
o Interrupciones primarias:
o Limpiar una bandera de interrupcin antes de habilitar las interrupciones, previene de activar solicitudes de interrupcin
pendientes y que esto desencadene una interrupcin de forma inmediata.
HABILITANDO UNA INTERRUPCIN.
o Interrupciones de perifricos:
o El PIC 18F4520 es capaz de generar
solicitudes de interrupcin para cada
una de sus banderas de interrupcin
localizadas en los registros PIE.
o Para habilitar una interrupcin por
perifrico adems de habilitar el
GIE/GIEH se debe poner a 1
tambin el bit PEIE/GIEL ambos en el
registros INTCON.
ATENDIENDO UNA INTERRUPCIN.
o Rutina de servicio de
interrupcin (ISR).
o La ISR es un programa
generado por el usuario el
cual realiza las tareas
necesarias cuando la
interrupcin ocurre.
o El usuario es el responsable La direccin del vector de interrupcin
de programar la ISR y corresponde a un PIC 16f1xxx.
colocarla en el vector de
interrupcin (0008h o
0018h).
o La ultima instruccin
ejecutada debe ser RETFIE
(Return From Interrupt).
o Las ISRs pueden ser escritas
en lenguaje ensamblador o
C.
ATENDIENDO UNA INTERRUPCIN.
o Verificando la fuente de la interrupcin.
o Hay uno o dos ISR (depende si se programan
prioridades) que atienden a todas las fuentes de
interrupcin de la aplicacin.
o Debido a lo anterior la ISR o las ISRs deben ser
capaz de identificar la fuente (bandera) de
interrupcin que solicito la ISR.