You are on page 1of 81

INTERRUPCIONES Y MODULOS TIMER

UNIVERSIDAD NACIONAL DE COLOMBIA SEDE BOGOTA FACULTAD DE INGENIERIA INGENIERIA MECATRONICA

CONTENIDO
INTERRUPCIONES INTERRUPCION EXTERNA INTERRUPCION DE PUERTO TIMER0 TIMER1 TIMER2

INTERRUPCIONES

QUE ES INTERRUPCION?, MANEJO DE UNA INTERRUPCION, SALVANDO EL CONTEXTO Y FUENTES DE INTERRUPCION

QUE ES INTERRUPCION?
Es una seal a la CPU para parar el flujo normal del programa y ejecutar otro conjunto de instrucciones llamado Rutina de servicio de interrupcin (ISR) y cuando se termina de ejecutar la ISR regresar al flujo normal del programa. La interrupcin la generan los perifricos de la MCU para indicar el suceso de un evento en estos y que debe ser atendido.

MANEJO DE LA INTERRUPCION
El manejo de la interrupcin es sincrnico, por lo tanto la CPU termina de ejecutar la instruccin que empez su ciclo de execute y luego si interrumpe a la CPU.

MANEJO DE LA INTERRUPCION
Ya en la funcin de interrupcin se colocan las instrucciones pertinentes a la ISR. Como los PIC poseen varias fuentes de interrupcin y sin importar cual suceda se maneja igual, el software debe preguntar cual fuente de interrupcin ocurri lo que se conoce como algoritmo de polling y se debe colocar en la funcin de interrupcin.

MANEJO DE LA INTERRUPCION
El algoritmo de polling se asemeja mucho a un switch case donde se preguntan cual de las interrupciones ocurri para saltar a una determinada subrutina ISR. Cada perifrico para indicar que se genero su interrupcin posee una bandera de interrupcin, la cual se pone en 1. El software debe leer las banderas para buscar cual esta en 1 y determinar la interrupcin que se genero. Seguido se debe colocar manualmente en 0 la bandera.

MANEJO DE LA INTERRUPCION
Las interrupciones se pueden deshabilitar o habilitar en cualquier momento por medio del bit GIE, que finalmente es el que permite el paso de un seal de interrupcin a la CPU. Las interrupciones se dividen en las comunes a todo PIC16 y las caractersticas a cada PIC16. Las segundas tambin tienen un bit que las habilita o deshabilita todas: el bit PEIE.

MANEJO DE LA INTERRUPCION
Cada fuente de interrupcin aparte de las habilitaciones globales posee una habilitacin propia, para que el usuario pueda habilitarlas o deshabilitarlas individualmente (Mascaras). Las banderas y habilitaciones se encuentran en los registros: INTCON, OPTION_REG, PIE1, PIE2, PIR1 Y PIR2.

SALVANDO EL CONTEXTO
El contexto son el estado de los registros de la CPU antes de la interrupcin, los cuales deben ser guardados para que cuando se retorne de la interrupcin por medio de la interrupcin retfie, se regrese a las condiciones anteriores a la interrupcin, principalmente los valores del PC y del W.

SALVANDO EL CONTEXTO
El PIC automticamente solo salva el valor del PC, el cual lo lleva a la PILA con el valor que llevaba mas 1 para que cuando se retorne de la interrupcin se ejecute la siguiente instruccin a la que ejecutaba cuando ocurri la interrupcin. El software debe salvar los valores del STATUS y W si lo requiere.

FUENTES DE INTERRUPCION
MASCARA INTE RBIE TMR0IE TMR1IE TMR2IE ADIE CMIE EEIE BANDERA INTF RBIF TMR0IF TMR1IF TMR2IF ADIF CMIF EEIF FUENTE DE INTERRUPCION Cambio pin externo INT Cambio pines puerto B Sobreflujo Timer0 Sobreflujo Timer1 Sobreflujo Timer2 Conversin AD completada Cambio comparadores Escritura EEPROM

FUENTES DE INTERRUPCION
MASCARA PSPIE CCP1IE CCP2IE TXIE RCIE SSPIE BCLIE BANDERA PSPIF CCP1IF CCP2IF TXIF RCIF SSPIF BCLIF FUENTE DE INTERRUPCION Cambio en Puerto Paralelo Evento en CCP1 Evento en CCP2 Transmisin terminada Recepcin completada Intercambio completado Colisin de Bus

FUENTES DE INTERRUPCION

REGISTROS

Mascara global de todas interrupciones: 0: Deshabilita las interrupciones 1: Habilita las interrupciones

las

REGISTROS

Mascara global de las interrupciones caractersticas del PIC16F877A: 0: Deshabilita las interrupciones 1: Habilita las interrupciones

REGISTROS

Mascara de la interrupcin por Timer0: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

el

REGISTROS

Mascara de la interrupcin por cambio en el pin externo INT: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

REGISTROS

Mascara de la interrupcin por cambio en los pines RB7:RB4 : 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

REGISTROS

Bandera de la interrupcin Timer0: 0: No hay sobreflujo. 1: Sobreflujo del Timer0.

por

el

REGISTROS

Bandera de la interrupcin por cambio en el pin externo INT: 0: No hubo cambio en el pin INT. 1: Hubo cambio en el pin INT.

REGISTROS

Bandera de la interrupcin por cambio en los pines RB7:RB4 : 0: No ha habido cambio en los pines. 1: Hubo cambio en los pines.

REGISTROS

Mascara de la interrupcin por cambio en el Puerto Paralelo : 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

REGISTROS

Mascara de la interrupcin conversin AD: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

por

REGISTROS

Mascara de la interrupcin por receptor serial asincrnico: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

el

REGISTROS

Mascara de la interrupcin por transmisor serial asincrnico: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

el

REGISTROS

Mascara de la interrupcin por el puerto serial sincrnico: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

REGISTROS

Mascara de la interrupcin por evento en el CCP1: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

REGISTROS

Mascara de la interrupcin por Timer2: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

el

REGISTROS

Mascara de la interrupcin por Timer1: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

el

REGISTROS

Bandera de la interrupcin por cambio en los buffer del PSP: 0: No ha habido cambio en los buffer. 1: Hubo cambio en los buffer.

REGISTROS

Bandera de la interrupcin por conversin AD: 0: Conversin AD no terminada o no iniciada. 1: Conversin AD terminada.

REGISTROS

Bandera de la interrupcin por el receptor serial asincrnico: 0: No ha habido o terminado recepcin. 1: Llego dato al receptor.

REGISTROS

Bandera de la interrupcin por el transmisor serial asincrnico: 0: Buffer del Transmisor lleno. 1: Transmisin terminada y buffer del transmisor vaci.

REGISTROS

Bandera de la interrupcin por el puerto serial sincrnico: 0: No ha ocurrido evento de interrupcin. 1: Se intercambio un dato o se genero una condicin en el IIC.

REGISTROS

Bandera de la interrupcin por evento en el CCP1: 0: No ha ocurrido evento de interrupcin. 1: Ocurri un evento de captura o una igualdad en la comparacin.

REGISTROS

Bandera de la interrupcin Timer1: 0: No hay sobreflujo. 1: Sobreflujo del Timer1.

por

el

REGISTROS

Bandera de la interrupcin Timer2: 0: No hay sobreflujo. 1: Sobreflujo del Timer2.

por

el

REGISTROS

Mascara de la interrupcin por comparadores anlogos: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

los

REGISTROS

Mascara de la interrupcin por memoria de datos EEPROM: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

la

REGISTROS

Mascara de la interrupcin por colisin en el bus de datos sincrnico: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

REGISTROS

Mascara de la interrupcin por evento en el CCP2: 0: Deshabilita la interrupcin. 1: Habilita la interrupcin.

REGISTROS

Bandera de la interrupcin por los comparadores anlogos: 0: No ha habido cambios. 1: Ha habido cambio en la salida de alguno de los comparadores.

REGISTROS

Bandera de la interrupcin por la memoria de datos EEPROM: 0: No ha habido cambio en la EEPROM. 1: Escritura en la EEPROM terminada.

REGISTROS

Bandera de la interrupcin por colisin en el bus de datos sincrnico: 0: No ha habido colisin. 1: Ha habido colisin por acceso de mas de un maestro al bus. Importante para usar el IIC como Multi-Master.

REGISTROS

Bandera de la interrupcin por evento en el CCP1: 0: No ha ocurrido evento de interrupcin. 1: Ocurri un evento de captura o una igualdad en la comparacin.

INTERRUPCION EXTERNA
CARACTERISTICAS Y CONFIGURACION

CARACTERISTICAS
Interrupcin externa que usa el pin RB0/INT. Se puede seleccionar el flanco que generara la interrupcin: flanco de subida o de bajada. Puede sacar al PIC del modo sleep ya que no usa el oscilador. La configuracin se hace en los registros INTCON y OPTION_REG.

CONFIGURACION

Configura el flanco que generara la interrupcin: 0: Flanco de bajada en INT. 1: Flanco de subida en INT.

INTERRUPCION DE PUERTO KBI


CARACTERISTICAS Y CONFIGURACION

CARACTERISTICAS
Interrupcin externa que usa los pines RB7:RB4. Cuando ocurre en algunos o todos estos pines se genera la interrupcin. Puede sacar al PIC del modo sleep ya que no usa el oscilador. Para saber cual pin o cambio genero la interrupcin se debe leer el PORTB ya que funciona en paralelo al modulo. La configuracin se hace en los registros INTCON y OPTION_REG.

CONFIGURACION

Configura las resistencias de Pull-Up en los pines del PORTB: 0: Activa una resistencia de Pull-Up individual para cada pin del PORTB. 1: Desactiva las resistencias.

TIMER0
CARACTERISTICAS Y CONFIGURACION

CARACTERISTICAS
Temporizador/Contador de 8 bits. Se puede leer y escribir. Prescaler programable de 8 bits. Se puede seleccionar entre el oscilador interno y el externo. Genera interrupcin por sobreflujo de FFh a 00h. Se puede seleccionar el flanco de conteo.

ESQUEMA INTERNO

CONFIGURACION
Para la opcin de contador o temporizador con oscilador externo, el Timer0 usa el pin RA4/T0CKI. El Prescaler se configura con valores de potencias de dos desde 2 hasta 256. La configuracin del Timer0 se hace en el registro OPTION_REG.

CONFIGURACION

Configura la fuente de reloj a usar: 0: Oscilador interno. FOSC 1: Oscilador externo. Conectado en T0CKI.

CONFIGURACION

Configura el flanco de conteo: 0: Flanco de bajada. 1: Flanco de subida. Solo sirve cuando la fuente de reloj es oscilador externo.

CONFIGURACION

Configura la asignacin del Prescaler: 0: Asignado al Timer0. 1: Asignado al WDT. Se puede cambiar en cualquier momento.

CONFIGURACION

Configura el valor del Prescaler: 0,0,0: 1:2. 0,0,1: 1:4. 0,1,0: 1:8. 0,1,1: 1:16. Nota: Valores cuando el Prescaler esta asignado al Timer0 o al WDT son diferentes.

CONFIGURACION

Configura el valor del Prescaler: 1,0,0: 1:32. 1,0,1: 1:64. 1,1,0: 1:128. 1,1,1: 1:256. Nota: Valores cuando el Prescaler esta asignado al Timer0 o al WDT son diferentes.

TIMER1
CARACTERISTICAS Y CONFIGURACION

CARACTERISTICAS
Temporizador/Contador de 16 bits. Se puede leer y escribir. Prescaler programable de 3 bits. Se puede seleccionar entre el oscilador interno y el externo. Genera interrupcin por sobreflujo de FFFFh a 00h. Se puede habilitar y deshabilitar. Se puede usar para reloj de tiempo real RTC.

ESQUEMA INTERNO

CONFIGURACION
Para la opcin de contador o temporizador con oscilador externo, el Timer1 usa los pines RC1/T1OSI y RC0/T1OSO/T1CKI. El Prescaler se configura con valores de potencias de dos desde 1 hasta 8. La configuracin del Timer1 se hace en el registro T1CON.

RELOJ EXTERNO
En modo de reloj externo se incrementa en un flanco de subida pero previamente verifica que haya un flanco de bajada.

OSCILADOR EXTERNO
Cuando se habilita el oscilador para reloj externo el esquema de conexin es el siguiente:

SINCRONIZACION
Cuando se usa oscilador externo este se sincroniza cada dos ciclos de reloj mas un pequeo retardo RC de 20 ns. Cuando se usa el prescaler la sincronizacin se hace cada cuatro ciclos de reloj mas un pequeo retardo RC de 40 ns. La sincronizacin se puede deshabilitar.

CONFIGURACION

Configura el valor del Prescaler: 0,0: 1:1 0,1: 1:2 1,0: 1:4 1,1: 1:8

CONFIGURACION

Configura el circuito interno de oscilador: 0: Circuito interno apagado. 1: Circuito interno prendido para el manejo de un cristal. La configuracin externa del cristal es la misma del oscilador principal.

CONFIGURACION

Configura la sincronizacin del reloj externo: 1: No sincroniza 0: Sincroniza con la frecuencia de reloj.

CONFIGURACION

Configura la fuente del reloj de Timer1: 0: Frecuencia de bus. 1: Oscilador externo.

CONFIGURACION

Configura el funcionamiento del Timer1: 0: Para el Timer1. 1: Habilita o permite el conteo de Timer1.

TIMER1 COMO RTC


Para usar el Timer1 como RTC se debe configurar lo siguiente: Configurar el Timer1 con reloj externo. Habilitar el oscilador para reloj externo. Conectar un cristal de 32,768 KHz con los condensadores respectivos. Colocar un preset de 8000h en los registros del Timer1, en la inicializacin y en la ISR del Timer1.

TIMER2
CARACTERISTICAS Y CONFIGURACION

CARACTERISTICAS
Temporizador de 8 bits. Se puede leer y escribir. Prescaler y postscaler programables de 4 bits cada uno. Posee un modulo que le permite variar el periodo de sobreflujo. Genera interrupcin por sobreflujo de PR2 a 00h. Se puede habilitar y deshabilitar.

ESQUEMA INTERNO

CONFIGURACION
El Prescaler se configura con valores de potencias de dos: 1, 4 o 16. El Postscaler se configura con un valor de 4 bits, configurable en todo su rango: de 1 a 16. La configuracin del Timer1 se hace en el registro T2CON. El registro PR2 es de 8 bits configurable en todo momento.

CONFIGURACION

Configura el valor del postscaler: 0,0,0,0: 1:1 0,0,0,1: 1:2 ************* 1,1,1,1: 1:16

CONFIGURACION

Configura el funcionamiento del Timer2: 0: Para el Timer2. 1: Habilita o permite el conteo de Timer2.

CONFIGURACION

Configura el valor del prescaler: 0,0: 1:1 0,1: 1:4 1,x: 1:16

You might also like