Está en la página 1de 28

PIC 18F877

TEMPORIZADORES
TIPOS Y CARACTERISTICAS

! Son tres temporizadores:


! TIMER 0 (TMR0)
! TIMER 1 (TMR1)
! TIMER 2 (TMR2)

! Sus funciones son genéricamente el conteo de eventos externos y el


establecimiento de intervalos de tiempo, sin que en estos procesos se
involucre al microcontrolador y por lo tanto liberándolo de sobrecargas de
software.
TIMER 0

! Idéntico al TMR0 del PIC16F84. Sus características son:


! Es un contador-temporizador de 8 bits.
! Es un registro legible y escribible.
! Permite entrada de reloj interno y externo.
! Permite la selección del flanco activo del reloj externo.
! Tiene un predivisor de frecuencia programable.
! Puede generar una interrupción en el desbordamiento.
! Se programa con el registro OPTION.
TIMER 1

! Es un contador-temporizador de 16 bits.
! Es un registro legible y escribible.
! Se puede usar como entrada un reloj interno o externo.
! Uso opcional de interrupción en el desbordamiento.
! Posible reinicialización desde los módulos CCP.
TIMER 1

! Es un temporizador-contador ascendente de 16 bits, requiere el uso de dos


registros concatenados TMR1H – TMR1L.
! En el final de su cuenta (FFFFH) se activa el señalizador TMR1IF y se reinicia,
permitiendo también la posibilidad de iniciar una petición de interrupción.
! En modo temporizador, su valor se incrementa con cada ciclo de
instrucción (f/4).
! En el modo contador, el incremento se produce con los flancos
ascendentes de un reloj externo aplicado como oscilador a las líneas RC0 y
RC1 o directamente como impulsos RC0.
TIMER 1

! El TMR1 se programa con el registro T1CON ubicado en la dirección 10H.

! TMR1ON: Habilita con 1 el funcionamiento del TMR1.


! TMR1CS: Selecciona la fuente de los pulsos de conteo, 0: reloj interno. 1:
reloj externo. Entre RC0 y RC1 (oscilador externo) se puede poner un cristal
de hasta 200 KHz.
TIMER 1

! T1CKPS1 y T1CKPS0: definen el rango de división del prescaler.

! T1SYNC#: determina con 1 la posible sincronización del reloj externo con el


interno.
TIMER 1

! En el desboradamiento, el flag TMR1F del registro PIR1 se activa, pudiendo


generar una interrupción que debe ser habilitada por el bit TMR1IE del
registro PIE1.
! Cuando el módulo CCP está configurado como comparador para generar
un disparo, esta señal resetea el TMR1, para lo cual el TMR1 debe estar
configurado como temporizador o contador síncrono. Si se configura de
otro modo, el reset no se produce.
TIMER 1
TIMER 2

! Es un temporizador de 8 bits.
! Dispone de un Registro de Periodo de 8 bits (PR2).
! Es un registro legible y escribible.
! Tiene un predivisor de frecuencias programable.
! Tiene un postdivisor de frecuencias programable.
! Interrupción opcional comparando TMR2 y PR2.
! Posibilidad de generar impulsos al módulo SSP.
TIMER 2

! Temporizador ascendente de 8 bits.


! Siempre usa la señal de reloj interna (f/4) que pasa previamente por un
predivisor con rangos 1:1, 1:4 y 1:16.
! La salida del TMR2 pasa por un postdivisor con rangos de división entera
entre 1 y 16.
! Con el microcontrolador en modo sleep, se detiene el oscilador interno y
por lo tanto el TMR2 deja de contar.
! La programación del TMR2 se realiza mediante el registro T2CON ubicado
en la dirección 12H.
TIMER 2

! T2CKPS1 y T2CKPS0: seleccionan el valor del presclaer.

! TMR2ON: habilita con 1 el funcionamiento del TMR2.


! El bit 7 no se usa.
TIMER 2

! TOUTPS3 a TOUTPS0: determinan el rango de división del postscaler.


TIMER 2

! El flag TMR2IF del registro PIR1 informa del desbordamiento del TMR2.
! Cuando se escribe en TMR2, cuando se programa T2CON o con un reset, el
prescaler y el postscaler se ponen a 0.
! Si se escribe T2CON, el registro TMR2 no se borra, sólo lo hace al producirse
un reset.
! El TMR2 está asociado a un registro PR2 (Registro de Periodo) ubicado en la
dirección 92H.
! Este registro PR2 se usa para definir el valor máximo de cuenta del TMR2,
pudiendo generar la activación del flag correspondiente y la posible
petición de interrupción al alcanzar un valor especificado en PR2 y no en el
desbordamiento.
TIMER 2
MODULOS DE CAPTURA,
COMPARACION Y PWM
INTRODUCCION

! Los microcontroladores PIC16F87x tienen dos módulos de Captura,


Comparación y Modulación PWM (CCP1 y CCP2), cuyas principales
funciones son:
! Modo Captura: Una pareja de registros del módulo CCPx captura el valor que
tiene el TMR1 cuando ocurre un evento especial en la patita RC2/CCP1 (para el
CCP1) o en RC1/T1OSI/CCP2 (para el CCP2).
! Modo Comparación: Se compara el valor de 16 bits del TMR1 con otro valor
cargado en una pareja de registros de un módulo CCPx y cuando coinciden se
produce un evento en la patita RC2/CCP1 (para el CCP1) o en RC1/T1OSI/CCP2
(para el CCP2).
! Modo PWM: Dentro del intervalo del periodo de un impulso controla la anchura
en que la señal tiene nivel alto (ciclo de servicio).
INTRODUCCION

! Cada módulo CCP tiene un registro de control llamado CCPxCON que


ocupan las direcciones 17H y 1DH (CCP1 y CCP2 respectivamente) que
sirve para configurar el funcionamiento del módulo.
! Cada módulo también posee una pareja de registros concatenados que
conforman el registro de trabajo, llamado CCPRxH-CCPRxL (CCP1 y CCP2
respectivamente) que se usan para capturar el valor del TMR1, comparar su
valor con el del TMR1 o modular el ciclo de servicio en PWM.
INTRODUCCION
MODO CAPTURA

! En este modo, la pareja de registros CCPRxH – L del módulo CCPx captura el


valor de 16 bits que contiene el TMR1 cuando sucede un evento en la patita
RCx/CCPx de la puerta C, que previamente ha sido configurada como
entrada.
! Los eventos posibles que pueden producir la captura del TMR1 son:
! Un flanco ascendente.
! Un flanco descendente.
! Cada 4 flancos ascendentes.
! Cada 16 flancos ascendentes.

! Los bits CCPxM3 – 0 del registro de control CCPx definen el evento requerido
para la captura.
MODO CAPTURA

! Al efectuar la captura, se activa el señalizador CCP1IF del registro PIR1.


! Si se pone a 1 el bit de permiso de interrupción PIE1 <CCP1IE>, se genera
una petición de interrupción cuando se carga el valor de TMR1 en la pareja
de registros del CCP1.
! Cuando se emplea el módulo CCP1 en modo captura, el TMR1 debe estar
configurado para trabajar como temporizador o como contador síncrono.
Nunca como contador asíncrono.
! Las capturas se suceden independientemente de que los datos hayan sido
leídos o no del par de registros del módulo.
MODO COMPARACION

! En este modo, la pareja de registros CCPR1H – L compara su contenido, de


forma continua, con el valor del TMR1.
! Cuando ambos valores coinciden, la patita RC2/CCP1, que se halla
configurada como salida, sufre un evento, definido en los bits CCP1M3 – 0
del registro de control del módulo CCP1. Estos eventos pueden ser:
! Pasa a nivel bajo.
! Pasa a nivel alto.
! No cambia su estado pero se produce una interrupción.

! Al coincidir los valores del TMR1 y la pareja de registros CCPR1H – L se pone


a 1 el señalizador CCP1IF.
MODO COMPARACION

! Si al coincidir los valores comparados, el bit de permiso de interrupción está


en 1, se origina una petición de interrupción.
! Si en los bits CCP1M3 – 0 del registro de control se ha seleccionado el modo
de trabajo de “disparo especial”, el módulo CCP1 pone a cero el TMR1 y el
CCPR1 funciona como un registro de periodo, capaz de provocar
interrupciones periódicamente.
! En estas condiciones también se puede iniciar procesos de conversión A/D
periódicos, sin necesidad de que hayan sido iniciadas por programa.
REGISTROS INVOLUCRADOS
MODO PWM

! En este modo se genera una señal periódica en la patita RC2/CCP1,


programada como salida, con un ciclo de servicio variable.
! El periodo de la señal PWM es configurado dando un valor al registro PR2,
según la siguiente fórmula:

! Cuando el valor del TMR2 coincide con el valor de PR2, los siguientes
eventos ocurren en el siguiente ciclo de tiempo:
MODO PWM

! Se borra el TMR2
! La patita RC2/CCP1 se pone a 1.
! El valor de CCPR1L, que es el que determina el ancho del pulso, se carga en
CCPR1H.
! El tiempo que la patita de salida está a nivel alto (ciclo de servicio)
depende del contenido cargado en CCPR1L y de los bits 5 y 4 del
CCP1CON, teniendo una resolución de 10 bits. Este ancho de pulso se
obtiene con:
MODO PWM

! El valor CCPR1L:CCP1CON<5:4> puede cargarse en cualquier momento,


puesto que el mismo no se traspasa a CCPR1H y se compara hasta que
coincidan PR2 con TMR2.
! Para la configuración del modo PWM se sigue los siguientes pasos:
! Configurar el Periodo dando un valor al registro PR2.
! Configurar el Ciclo de Trabajo escribiendo en: CCPR1L:CCP1CON<5:4>.
! Configurar la línea RC2/CCP1 como salida.
! Asignar el valor del Prescaler del TMR2 escribiendo en T2CON.
! Configurar el modulo CCP1 en modo PWM.
MODO PWM