Sunteți pe pagina 1din 4

Microcontroladores

Temporizador Timer1
Timer1 es un módulo que se puede configurar para funcionar como temporizador o contador de 16 bits
mediante el registro TMR1 formado por los registros TMR1H y TMR1L. La fuente de señal para este
temporizador se puede seleccionar entre el reloj interno o el oscilador interno propio de Timer1.
Timer1 puede producir una interrupción por desbordamiento del registro TMR1. Además, al funcionar
junto con los módulos CCP se puede programar un reset de TMR1 con el disparo por evento especial que
tienen dichos módulos.

Diagrama en bloques de Timer1


Timer1 tiene su propio oscilador de baja potencia que le permite tener una opción adicional de reloj. Ese
oscilador también puede servir como fuente de reloj de bajo consumo para el microcontrolador en
operación de potencia controlada. También puede proporcionar funcionalidad de reloj de tiempo real
(RTC) con un mínimo de código y componentes adicionales. El control de Timer1 se hace mediante el
registro T1CON.
Registro T1CON

Universidad Continental Docente: Juan L. Merlo G


Microcontroladores

Modos de funcionamiento de Timer1


Timer1 puede funcionar en tres posibles modos:
- Temporizador
- Contador síncrono
- Contador asíncrono
El modo de operación se selecciona con el bit TMR1CS (T1CON<1>). Si TMR1CS=0, Timer1 funciona como
temporizador, incrementando el valor de TMR1 con cada ciclo de instrucción (fOSC/4). Si TMR1CS=1, Timer1
funciona como contador de pulsos externos incrementando el valor de TMR1 con cada flanco ascendente
de su entrada de reloj externo o de su oscilador si está habilitado. Cuando se habilita Timer1, los pines
RC1/T1OSI/UOE y RC0/T1OSO/T13CKI se hacen entradas sin importar el estado de sus bits TRIS.
Funcionamiento de Timer1 en modo de lectura/escritura en dos partes de 8 bits o en una sola de 16 bits
Normalmente el byte más significativo de TMR1 no es accesible directamente y las lecturas y escrituras
deben hacerse a través de un buffer que es TMR1H. Por ese motivo, cuando se lee TMR1 debe leerse
primero la parte alta (TMR1H) y luego la parte baja (TMR1L) lo que puede originar un error de lectura si es
que ocurre un desbordamiento entre ambas lecturas. Al escribir un dato en TMR1 también debe escribirse
primero el buffer TMR1H y luego el byte TMR1L. Al escribir un dato en TMR1L se transfiere al mismo
tiempo el contenido de TMR1H al byte más significativo de TMR1.
Para evitar todo este embrollo, se puede configurar Timer1 para admitir lecturas y escrituras de 16 bits,
es decir del registro TMR1 completo en una sola operación. Esto se hace poniendo a 1 el bit RD16
(T1CON<8>). Esto hace que una lectura de TMR1L cargue automáticamente el contenido del byte más
significativo de TMR1 en el buffer TMR1H. Asimismo, una operación de escritura en TMR1L provoca la
inmediata transferencia del contenido del buffer TMR1H a la parte alta del registro TMR1.
Oscilador de Timer1
El PIC18F2550 cuenta con un circuito oscilador integrado entre
los pines T1OSI (entrada) y T1OSO (salida) que se habilita
poniendo a 1 el bit T1OSCEN (T1CON<3>). Se trata de un
oscilador de bajo consumo ajustado para cristales de 32,768 kHz
que funciona en todos los modos de potencia controlada del
microcontrolador. Al ponerlo a funcionar, se debe proveer en
programa un retardo de tiempo adecuado para asegurar su
correcto arranque.
En la figura siguiente se puede ver las conexiones y componentes externos del oscilador de Timer1. Los
valores de C1 y C2 pueden variar un poco hacia arriba o hacia abajo dependiendo de las características de
cada cristal. Hay que tener en cuenta que valores mayores de C1 y C2 proporcionan mayor estabilidad al
oscilador, pero incrementan el tiempo de arranque.

Universidad Continental Docente: Juan L. Merlo G


Microcontroladores

Timer1 como fuente de reloj del sistema


El oscilador de Timer1 se puede utilizar como reloj del sistema en los modos de operación de potencia
controlada. Poniendo al valor 0b01 los bits SCS1:SCS0 (registro OSCCON<1:0>) la CPU y los periféricos
toman señal de reloj del oscilador secundario que es precisamente el oscilador de Timer1.
Mientras el oscilador de Timer1 proporciona señal de reloj al sistema, el flag de estado de reloj de sistema
de Timer1 T1RUN (T1CON<6>) estará puesto a 1. Este flag puede utilizarse para saber el modo actual de
reloj del sistema.
Opción de bajo consumo de Timer1
Timer1 puede operar en dos niveles distintos de consumo de energía. La selección se hace con el bit de
configuración LPT1OSC. Si LPT1OSC=1, Timer1 funciona en modo de bajo consumo. Si LPT1OSC=0, Timer1
consume más energía; este es el modo de funcionamiento por defecto. En realidad, el modo de bajo
consumo de Timer1 solo debe utilizarse en aplicaciones de bajo ruido porque el ruido proveniente del
entorno puede desestabilizar al temporizador.
Interrupción por Timer1
Timer1 puede producir una interrupción cuando el registro TMR1 se desborda y se recicla pasando de
0xFFFF a 0x0000, lo que hace que el flag TMR1IF (PIR<1>) se ponga a 1 indicando que se produjo el
desbordamiento. La interrupción se puede habilitar poniendo a 1 el bit de interrupción de Timer1 TMR1IE
(PIE1<0>).
Reseteo de Timer1 con el disparo por evento especial de los módulos CCP
Si cualquiera de los módulos CCP se configura en modo comparación para generar un disparo por evento
especial (CCP1M3:CCP1M0 o CCP2M3:CCP2M0 = 1011), esta señal de disparo reiniciará el temporizador
Timer1. Simultáneamente, el disparo producido por CCP2 iniciará una conversión A/D si el ADC está
habilitado. Para hacer uso de esta característica, Timer1 debe estar configurado como temporizador o
como contador síncrono. De esta manera el registro CCPRxH:CCPRxL se convierte efectivamente en un
registro de período para Timer1. Si Timer1 estuviera configurado como contador asíncrono, el reseteo de
Timer1 podría fallar.
En el improbable caso de que coincida un disparo por evento especial y una operación de escritura a
Timer1, tendrá prioridad la operación de escritura.

Temporizador Timer3
Timer3 es una especie de temporizador gemelo de Timer1 pues tiene la misma estructura y las mismas
características y puede funcionar con el mismo oscilador externo de Timer1. La única diferencia está en un
par de bits del registro de control T3CON.
Registro T3CON

Universidad Continental Docente: Juan L. Merlo G


Microcontroladores

La diferencia respecto de T1CON son los bits T3CCP2:T3CCP1 que sirven para asignar los temporizadores
Timer1 y Timer3 a los módulos CCP1 y CCP2.

Universidad Continental Docente: Juan L. Merlo G

S-ar putea să vă placă și