Anda di halaman 1dari 40

Temporizadores

Omar Alvarado

Introduccin
Es un perifrico interno del microcontrolador que permite contar ciclos de
maquina de forma independiente a la ejecucin del programa
Algunos temporizadora pueden ser usados como contadores de eventos
externos a travs de un pin.
La familia PIC18f4Xk22 posee 6 timers agrupados en 3 familias.
Puede tener divisores de frecuencia antes (prescaler) o despus del
temporizador (postscaler)

Timer 0
Configurable como temporizador o contador de 8 (0-255) o 16 (065535) bits.
Prescaler de 8 bits programable
Interrupcin por desbordamiento
Funciona con el reloj interno o externo

Timer 0
8 bits
T0CKI = RA4

Timer 0
16bits

Timer 0
Posee un registro de control T0CON

Timer 0
Clculo
Ejemplo:

Oscilador 4MHz
Prescaler 1:8
TMR0 = .100

Timer 0
Ejemplo: calcular el valor de TMR0 para generar una interrupcin de
500us con un prescaler de 1:8, oscilador de 4Mhz y timer0=8bits.

Timer 0
Configuracin:

Limpiar el T0CS para seleccionar el Fosc/4


Seleccionar el Prescaler bits T0PS2:T0PS0
Limpiar el PSA para seleccionar prescaler
Cargar el valor de TMR0
Habilitar interrupcin (opcional)

Timer 1/2/5
Temporizador o contador de 16 bits (TMRXH TMRXL)
Reloj de conteo interno o externo
2 bits prescaler
Oscilador secundario dedicado de 32kHz
Puede ser configurado para el modo comparador
Interrupcin por desborde y wake-up (oscilador externo).
Tiempo base para el modo CCP.

Timer 1/2/5

Timer 1/2/3
TXCON

Timer 1/2/3
its del registro TxCON

Timer 1/2/3
TXGCON

Timer 1/2/3
TXGCON

Timer 1/2/3
Son habilitado por los bits TMRxON y TMRxGE de los registros TxCON
y TxGCON

Timer 1/2/3
Se puede Leer/Escribir los 16 bits de forma simultanea utilizando solo
el registro TMRxH si se habilita el RD16=1 del registro TxCON

Timer 1/2/3
Seleccin de Fuente

Prescaler:

4 opciones: 1, 2, 4, 8
TxCKPS bits del registro TxCON

Timer 2/4/6
Opera como timer de 8 bits solamente con perodo precargable a travs del
registro PRX.
Posee un registro para almacenar en todo momento la temporizacin: TMRX.
Posee un prescalador de 3 pasos programable por software.
Posee un postscalador de 16 pasos programable por software.
Genera interrupcin cada vez que el registro TMRX se hace igual al registro PRX.

Timer 2/4/6

Timer 2/4/6
Registro de control

Interrupcin
La caracterstica fundamental y ventaja principal del servicio de
interrupciones es la inmediatez; lo que significa que pueden
eliminarse total o parcialmente los ciclos de consulta.
Otra ventaja es que puede inhibirse la interrupcin del perifrico
dado cuando se considera que esta es inoportuna y por tanto
perjudica en alguna medida la marcha del proceso principal.

Interrupcin
Se dispone de dos niveles para cada interrupcin (excepto externa):
Nivel bajo, direccin 0018H
Nivel alto, direccin 0008H

Todas las INTs disponen de 3 bits de configuracin


Bit de Habilitacin.

Flag de Interrupcin: se pone en 1 cuando se produce interrupcin, debe


ser limpiada por software.
Bit de prioridad de interrupcin: alta o baja

Interrupcin
La familia PIC18F45k22 posee varias fuentes de interrupcin que
pueden ser controladas con 19 registros:
Contiene varios bits de habilitacin, prioridad y bandera de
los distintos perifricos de interrupcin
Contiene los bits de banderas para avisar los eventos de los
perifricos de interrupcin
Contiene los bits de habilitacin de los perifricos de
interrupcin.
Contiene los bits de prioridad de los diferentes perifricos de
interrupcin

Registro de Control para Interrupcin


Registro RCON

IPEN: Bit de habilitacin de prioridades en las Interrupciones


IPEN=0: Sistema de prioridad en las Interrupciones deshabilitado
IPEN=1: Sistema de prioridad en las Interrupciones habilitado

Registro de Control para Interrupcin INTCON


GIE/GIEH: bit de habilitacin global de Interrupcin, para baja y alta prioridad
GIE/GIEH=0 Interrupciones deshabilitadas de manera global
GIE/GIEH=1 Interrupciones habilitadas de manera global

PEIE/GIEL: bit de habilitacin global de las interrupciones de perifricos


PEI/GIEL=0 Interrupcin de perifricos deshabilitada
PEI/GIEL=1 Interrupcin de perifricos habilitada

TMR0IE: bit de habilitacin de interrupcin de desbordamiento del Timer 0


TMR0IE=0 Interrupcin por desbordamiento del Timer 0 deshabilitada
TMR0IE=1 Interrupcin por desbordamiento del Timer 0 habilitada

INT0IE: Bit de habilitacin de Interrupcin externa INT0


INT0IE=0 Interrupcin externa INT0 deshabilitada
INT0IE=1 Interrupcin externa INT0 habilitada.

Registro de Control para Interrupcin INTCON


RBIE: bit de habilitacin de la interrupcin por cambio en el Puerto B.
RBIE=0 Interrupcin por cambio en el Puerto B deshabilitada.
RBIE=1 Interrupcin por cambio en el Puerto B habilitada.

TMR0IF: bandera de la interrupcin de desbordamiento del Timer 0


TMR0IF=0 NO se ha producido desbordamiento en el Timer 0
TMR0IF=1 Si se ha producido desbordamiento en el Timer 0

INT0IF: Flag de la interrupcin externa INT0

INT0IF=0 No se ha producido un flanco en RBO/INT0


INT0IF=1 Si se ha producido un flanco en RBO/INT0

RBIF: Flag de la interrupcin por cambio en el Puerto B.

RBIF=0 Ninguno de los pines RB7-RB4 (IOC3:0) ha cambiado de estado.


RBIF=1 Al menos uno de los pines RB7-RB4 (IOC3:0) ha cambiado su estado

Registro de Control para Interrupcin INTCON2

RBPU: bit de habilitacin de resistencias de pull-up del puerto B.

RBPU=0 Las resistencias de pull-up del Puerto b estn deshabilitadas


RBPU=1 Todas las resistencias de pull-up del puerto B estn habilitadas.

INTEDG0: bit de seleccin de flanco de la interrupcin externa 0 INT0


INTEDG0=0 La INT0 se dispara por flanco de bajada.
INTEDG0=1 La INT0 se dispara por flanco de subida.

INTEDG1: bit de seleccin de flanco de la interrupcin externa 1 INT1


INTEDG1=0 La INT1 se dispara por flanco de bajada.
INTEDG1=1 La INT1 se dispara por flanco de subida.

INTEDG2: bit de seleccin de flanco de la interrupcin externa 2 INT2


INTEDG2=0 La INT2 se dispara por flanco de bajada.
INTEDG2=1 La INT2 se dispara por flanco de subida.

Registro de Control para Interrupcin INTCON2

TMR0IP: bit de seleccin de prioridad de la interrupcin por desbordamiento del


Timer0
TMR0IP=0 Baja prioridad
TMR0IP=1 Alta prioridad

RBIP: bit de seleccin de prioridad de la interrupcin por cambio en el Puerto B


RBIP=0 Baja Prioridad
RBIP=1 Alta Prioridad

Registro de Control para Interrupcin INTCON3

INT2IP bit de seleccin de prioridad de la interrupcin externa 2 INT2


INT2IP=0 baja prioridad
INT2IP=1 alta prioridad

INT1IP: bit de seleccin de prioridad de la interrupcin externa 1 INT1


INT1IP=0 baja prioridad
INT1IP=1 alta prioridad

INT2IE: Bit de habilitacin de Interrupcin externa INT2


INT2IE=0 Interrupcin externa INT2 deshabilitada
INT1IE=1 Interrupcin externa INT2 habilitada.

Registro de Control para Interrupcin INTCON3

INT1IE Bit de habilitacin de Interrupcin externa INT1


INT1IE=0 Interrupcin externa INT1 deshabilitada
INT1IE=1 Interrupcin externa INT1 habilitada

INT2IF Flag de la interrupcin Externa 2 INT2

INT2IF=0 No se ha producido un flanco en RB2/INT2


INT2IF=1 Si se ha producido un flanco en RB2/INT2

INT1IF: Flag de la interrupcin Externa INT1

INT1IF=0 No se ha producido un flanco en RB1/INT1


INT1IF=1 Si se ha producido un flanco en RB1/INT1

Registro PIR1 (Peripheral Interrupt Request)

ADIF: bandera de la interrupcin del A/D

ADIF=0 No se ha completado la conversin


ADIF=1 La conversin se a completado

RC1IF: Flag de la interrupcin de recepcin del EUSART1

RC1IF=0 El buffer de recepcin EUSART1 (RCREG1) esta vaco.


RC1IF=1 El buffer de recepcin EUSART1 (RCREG1) esta lleno.

TX1IF: Flag de la interrupcin de transmisin del EUSART1


TX1IF=0 El buffer de transmisin EUSART1 (TXREG1) esta lleno
TX1IF=1 El buffer de transmisin EUSART1 (TXREG1) esta vaco

Registro PIR1 (Peripheral Interrupt Request


SSP1IF: Flag de interrupcin del puerto serie port1
SSP1IF=0 Esperando para transmitir/enviar
SSP1IF=1 Se a producido una transmisin/recepcin

CCP1IF: Flag de interrupcin del CCP1

CCP1IF=0 No se a capturado/igualdad con el valor del temporizador 1


CCP1IF=1 Si se ha producido desbordamiento en el Timer 0

TMR2IF: Flag de la interrupcin de igualdad entre PR2 TMR2


TMR2IF=0 No se ha producido igualdad
TMR2IF=1 Si se ha producido igualdad

TMR1IF: Flag de la interrupcin de desbordamiento del Timer1


TMR1IF=0 No se ha producido desbordamiento del Timer1.
TMR1IF=1 Si se ha producido desbordamiento del Timer1.

Registros (Peripheral Interrupt Request


PIR2
PIR3
PIR4
PIR5

Registro PIE (Peripheral Interrupt Enable)

ADIE: bit de habilitacin de interrupcin del conversor A/D


ADIE=0 Interrupcin del conversor A/D deshabilitada
ADIE=1 Interrupcin del conversor A/D habilitada

RC1IE: bit de habilitacin de interrupcin de recepcin EUSART1


RC1IE=0 Interrupcin de recepcin EUSART1 deshabilitada
RCIE=1 Interrupcin de recepcin EUSART1 habilitada

TX1IE: Bit de habilitacin de Interrupcin de transmisin EUSART1


TX1IE=0 Interrupcin de transmisin EUSART1 deshabilitada
TX1IE=1 Interrupcin de transmisin ESUART1 habilitada.

Registro PIE (Peripheral Interrupt Enable)


SSP1IE: bit de habilitacin de la interrupcin del puerto serie sncrono (SSP).
SSP1IE=0 Interrupcin del puerto serie deshabilitada.
SSP1IE=1 Interrupcin del puerto serie habilitada.

CCP1IE: bit de habilitacin de la interrupcin del CCP (Compara/Captura/PWM)


CCP1IE=0 Interrupcin del modulo CCP deshabilitada
CCP1IE=1 Interrupcin del modulo CCP habilitada

TMR2IE: bit de habilitacin de la interrupcin de igualdad entre PR2 y TMR2


TMR2IE=0 Interrupcin de igualdad entre PR2 y TMR2 deshabilitada.
TMR2IE=1 Interrupcin de igualdad entre PR2 y TMR2 habilitada.

TMR1IE: bit de habilitacin de interrupcin de desbordamiento del Timer 1


TMR1IE=0 Interrupcin por desbordamiento del Timer 1 deshabilitada
TMR1IE=1 Interrupcin por desbordamiento del Timer 1 habilitada

Registro PIE (Peripheral Interrupt Enable)


PIE2
PIE3
PIE4

PIE5

Registro IPR1 (Peripheral Interrupt Priority Register)


IPR1
IPR2
IPR3
IPR4
IPR5

Prioridad Interrupciones
Una Interrupcin de alta prioridad puede interrumpir el proceso de
una interrupcin de baja prioridad.
Las interrupciones del mismo nivel no pueden interrumpirse entre
ellas.
Para trabajar con prioridad se debe poner en 1 el bit IPEN del registro
RCON y el GIEH del registro INTCON.

Pasos para configurar la Interrupcin


1. Configurar el dispositivo o perifrico que interrumpir (Timer, CCP,
A/D).
2. Habilitar a nivel global las interrupciones: GIE/GIEH o PEIE/GIEL del
registro INTCON
3. Habilitar de forma individual la interrupcin a ser usada.
4. Establecer la prioridad de interrupcin, solo si trabajar a niveles.
5. Detectar que causo la interrupcin en el vector 0008h o 0018h
Identificar la Interrupcion
Limpiar la Flag de interrupcin (IMPRESCINDIBLE)
Cdigo de tratamiento de interrupcin, debe terminar con RETFIE

Anda mungkin juga menyukai