LOS TIMER DE LOS 16F87x MICROCONTROLADORES PIC TEMA EL TIMER 1 CCFF D.P.E. MÓDULO DE PROYECTOS 1 LOS TEMPORIZADORES Diagrama de Bloques del TIMER1 CCFF D.P.E. MÓDULO DE PROYECTOS 2 LOS TEMPORIZADORES INTRODUCCIÓN El módulo TIMER1 es un temporizador/contador de 16 bits, está formado por la unión de dos registros TMR1H y TMR1L, de 8 bits cada uno. Ambos registros se pueden leer y escribir. El par de registros TMR1 (TMR1H:TMR1L), (TMR1H:TMR1L) se incrementan desde 0000h a FFFFh, para volver a comenzar desde 0000h. Si la interrupción de TMR1 está habilitada, cuando el contador pasa de todo 1 a todo 0, se activará, señalándose esta circunstancia en el flag correspondiente, TMR1IF (PIR1<0>). CCFF D.P.E. MÓDULO DE PROYECTOS 3 LOS TEMPORIZADORES La interrupción del TMR1 puede ser habilitada o enmascarada, poniendo a 1 ó 0 el bit TMR1IE (PIE1<0>). El TIMER1 pueden operar de dos modos: • Como temporizador • Como contador El modo de funcionamiento se determina por el origen de los pulsos a contar, mediante el bit, TMR1CS (T1CON<1>). CCFF D.P.E. MÓDULO DE PROYECTOS 4 LOS TEMPORIZADORES A.- En el modo temporizador, el TIMER1 se incrementa con cada ciclo de instrucción (Fosc/4). B.- En el modo contador, el TIMER1 se incrementa con cada flanco ascendente de un reloj externo. El Timer1 puede ser activado/desactivado, poniendo a 1/0 el bit TMR1ON (T1CON<0>). El Timer1 posee un reset interno, este “RESET”, puede ser generado por cualquiera de los dos módulos CCP que posee el PIC. CCFF D.P.E. MÓDULO DE PROYECTOS 5 LOS TEMPORIZADORES Cuando el oscilador del Timer1 está habilitado (T1OSCEN es 1), los pines RC1/T1OSI/CCP2 y RC0/T1OSO/T1CKI son entradas, y el valor de TRISC<1:0>es ignorado, y la lectura de estos pines da ‘0’. CCFF D.P.E. MÓDULO DE PROYECTOS 6 LOS TEMPORIZADORES El Registro T1CON T1CON es el registro de control del TIMER1, y contiene los bits de: modo de funcionamiento del módulo temporizador/contador, habilitación del oscilador del timer1, programación del preescaler etc. Ocupa la dirección 10h de memoria RAM CCFF D.P.E. MÓDULO DE PROYECTOS 7 LOS TEMPORIZADORES El Registro T1CON TMR1ON: ACTIVACIÓN/PARADA del TIMER1 – 1: Habilita el timer – 0: El timer no funciona (valor por defecto) TMR1CS: Bit de selección de la fuente del reloj (modo de funcionamiento) 91:Reloj externo; ( contador) por el pin RC0/T1OSO/T1CKI (en el flanco de subida) 90: Reloj interno (FOSC/4) valor por defecto CCFF D.P.E. MÓDULO DE PROYECTOS 8 LOS TEMPORIZADORES El Registro T1CON #T1SYNC: BIT DE CONTROL DE LA SINCRONIZACIÓN DE LA SEÑAL DE ENTRADA (en modo contador). Hay que comprobar el valor de TMR1CS, Si TMR1CS=1 – 1: No sincroniza la entrada de reloj externo. – 0: Sincroniza la entrada de reloj externa Si TMR1CS=0 No se tiene en cuenta el valor de T1SYNC, ya que la señal activa para el timer1 es interna (modo temporizador) y ya está sincronizada. CCFF D.P.E. MÓDULO DE PROYECTOS 9 LOS TEMPORIZADORES El Registro T1CON • T1OSCEN: Bit de habilitación del oscilador del TIMER1, cuando se utiliza un oscilador externo, hay que poner este bit a 1, EL TIMER1 PUEDE TRABAJAR A UNA FRECUENCIA TOTALMENTE INDEPENDIENTE DEL SISTEMA. – 1: Habilita el oscilador. – 0: Deshabilita el oscilador. El inversor de entrada al oscilador se desconecta para disminuir el consumo. CCFF D.P.E. MÓDULO DE PROYECTOS 10 LOS TEMPORIZADORES El Registro T1CON • T1CKPS1:T1CKPS0: Bits de selección del rango del preescaler, que actúa sobre la señal de reloj del TIMER1. TCKPS1 TCKPS0 0 0 0 1 1 0 1 1 Valor del preescaler 1:1 1:2 1:4 1:8 Bits 7:6 Bits no implementados se leen como “0”. CCFF D.P.E. MÓDULO DE PROYECTOS 11 LOS TEMPORIZADORES EL TIMER 1 Como Temporizador Este modo de funcionamiento se selecciona poniendo a “0” el bit TMR1CS (T1CON<1>). En este modo de trabajo el origen de los pulsos a contar es interno, y proceden del reloj del sistema siendo su frecuencia FOSC/4. Evidentemente en este caso el bit T1SYNC no tiene sentido ya que no existe señal a sincronizar. CCFF D.P.E. MÓDULO DE PROYECTOS 12 LOS TEMPORIZADORES EL TIMER 1 Como Contador Este modo de funcionamiento se selecciona poniendo a 1 el bit TMR1CS (T1CON<1>). En este modo de trabajo el origen de los pulsos a contar es externo, siendo el flanco activo siempre el de subida. Después de que el TIMER1 se ha configurado como contador se debe producir un flanco de bajada para que se empiece a contar. CCFF D.P.E. MÓDULO DE PROYECTOS 13 LOS TEMPORIZADORES EL TIMER 1 Como Contador Dentro del modo contador se distinguen dos clases de contador: Contador síncrono Contador asíncrono CCFF D.P.E. MÓDULO DE PROYECTOS 14 LOS TEMPORIZADORES EL TIMER 1 Como Contador Síncrono Para seleccionar este modo de funcionamiento en primer lugar deberemos tener TMR1CS a 1 (modo contador) y además T1SYNC estar a “0”. Así, la señal externa es sincronizada con la fase del reloj interno. La sincronización se hace con la señal de salida del preescaler, por lo tanto en la entrada del preescaler, el reloj externo es asíncrono. CCFF D.P.E. MÓDULO DE PROYECTOS 15 LOS TEMPORIZADORES EL TIMER 1 Como Contador Síncrono La señal de reloj es por el pin RC1/T1OSI/CCP2, si el bit T1OSCEN está a “1”, o por el pin RC0/T1OSO/T1CKI, cuando el bit T1OSCEN es “0”. En esta configuración, y durante el modo SLEEP mode, el Timer1 no se incrementa aunque el reloj externo esté presente, sin embargo el preescaler si que sigue incrementándose. CCFF D.P.E. MÓDULO DE PROYECTOS 16 LOS TEMPORIZADORES EL TIMER1 Como Contador Asíncrono Para seleccionar este modo de funcionamiento, se debe poner a “1” el bit TMR1CS (modo contador), y además T1SYNC debe encontrarse a 1 también. En estas condiciones, la señal de reloj externa no se sincroniza con el reloj interno. El contador continúa incrementándose si el microcontrolador se encuentra en el modo SLEEP y puede generar una interrupción si se produce el desbordamiento y despertar al procesador. Cuando se trabaja con el TIMER1 en modo contador asíncrono, éste no pude utilizarse como base de tiempos para el módulo CCP. CCFF D.P.E. MÓDULO DE PROYECTOS 17 LOS TEMPORIZADORES Lectura Y Escritura En El TIMER1 Cuando Se Trabaja En Modo Contador Asíncrono Se puede leer TMR1H o TMR1L, mientras el contador está funcionando con una señal de reloj externa. Sin embargo el usuario debe tener en cuenta que el valor de la cuenta es de 16 bits, y que debe ser leído en dos veces (8 bits cada vez), por lo cual puede ocurrir que se produzca un overflow entre estas dos lecturas, con lo cual el valor leído no es el correcto. CCFF D.P.E. MÓDULO DE PROYECTOS 18 LOS TEMPORIZADORES Lectura Y Escritura En El TIMER1 Cuando Se Trabaja En Modo Contador Asíncrono Para la escritura, se recomienda parar el contador, y luego proceder a escribir el valor deseado. Una escritura mientras el registro está siendo incrementado por la señal externa (no se ha parado), produce que que el valor almacenado en el contador sea impredecible. CCFF D.P.E. MÓDULO DE PROYECTOS 19 LOS TEMPORIZADORES Oscilador Del TIMER1 Se puede conectar un cristal entre los terminales T1OSI (entrada) y T1OSO (salida del amplificador). Este oscilador se habilita poniendo a 1 el bit de control T1OSCEN (T1CON<3>). CCFF D.P.E. MÓDULO DE PROYECTOS 20 LOS TEMPORIZADORES Oscilador Del TIMER1 El oscilador es de bajo consumo, y puede llegar a funcionar hasta con frecuencias de 200kHz, En estas condiciones , seguirá funcionando incluso en el modo de bajo consumo (sleep). Este oscilador fue concebido para funcionar con un cristal de 32kHz. Y de idéntica manera al oscilador LP del procesador, al cual es idéntico. La estructura, así como los condensadores típicos para el oscilador se muestran en la siguiente transparencia. CCFF D.P.E. MÓDULO DE PROYECTOS 21 LOS TEMPORIZADORES CCFF D.P.E. MÓDULO DE PROYECTOS 22 LOS TEMPORIZADORES Oscilador Del TIMER1 En el anterior circuito hay que observar que a mayor capacidad, mayor estabilidad del oscilador, pero también aumenta el start-up. También se debe indicar que cada cristal/ resonador posee sus propias características. El usuario debe consultar los valores apropiados de los componentes externos al cristal. CCFF D.P.E. MÓDULO DE PROYECTOS 23 LOS TEMPORIZADORES Reset Del Timer1, Mediante El Disparo De Los Módulos CCP Si alguno de los módulos CCP1 o CCP2 están configurados en modo comparación para generar un “disparo por evento especial” (CCP1M3:CCP1M0 = 1011), esta señal puede resetear el Timer1. Para aprovechar la anterior característica, el TIMER1 debe configurarse en modo temporizador o como contador síncrono, en el tercer modo (contador asíncrono) no se produce el reset. CCFF D.P.E. MÓDULO DE PROYECTOS 24 LOS TEMPORIZADORES Reset Del Timer1, Mediante El Disparo De Los Módulos CCP Nota: El disparo por evento especial en CCP1 y CCP2, no provoca que se ponga a 1 el flag de interrupción TMR1IF (PIR1<0>). En este modo de operación, el par de registros CCPRxH:CCPRxL se reinician para tener el mismo periodo que el timer 1. Si el evento especial de CCP1 o CCP2 coincide con una escritura sobre TMR1, se escribirá el valor anterior. CCFF D.P.E. MÓDULO DE PROYECTOS 25 LOS TEMPORIZADORES Reset De Los Registros TMR1H Y TMR1L Los registros TMR1H y TMR1L no se ponen a 00h después de un Power On Reset (POR), o por cualquier otro RESET, excepto por el disparo por eventos especiales de CCP1 o CCP2 El registro T1CON, tras unPower-on Reset, o un Brown-out Reset, se pone a 00h, el timer se para y el el preescaler es situado con el factor 1:1. Con los demás reset, el registro no se ve afectado. El preescaler se resetea siempre que se escribe sobre el registro TMR1H o TMR1L. CCFF D.P.E. MÓDULO DE PROYECTOS 26 LOS TEMPORIZADORES Registros Asociados Con El Contador/Temporizador TIMER1 CCFF D.P.E. MÓDULO DE PROYECTOS 27