El Timer1 es un temporizador/contador
ascendente parecido al TMR0, pero con algunas peculiaridades que lo hacen muy
interesante a la hora de incluir temporizaciones en nuestros programas.
La primera de ellas, es que se trata de un contador de 16 bits cuyo valor se almacena en dos registros de 8 bits el TMR1H y el TMR1L, ambos registros se pueden leer y escribir su valor durante la ejecución del programa.
La primera de ellas, es que se trata de un contador de 16 bits cuyo valor se almacena en dos registros de 8 bits el TMR1H y el TMR1L, ambos registros se pueden leer y escribir su valor durante la ejecución del programa.
Cuando el Timer1 está habilitado, el valor de esos registros se incrementan desde 0000h a FFFFh y una vez que llega a su máximo valor empieza otra vez desde 0 avisándonos de ello por medio de la bandera TMR1F .
Si está activa la interrupción por desbordamiento del Timer 1 al desbordarse el contador, el programa entra en la función de tratamiento a la interrupción por desbordamiento del Timer1.
El diagrama de bloques es el siguiente:
PRINCIPALES CARACTERÍSTICAS DEL TMR1
Algunas características de este Timer
son las siguientes:
·
El Timer1 puede funcionar con un oscilador externo y trabajar a una
frecuencia distinta a la del oscilador principal del PIC.
·
Al igual que el TMR0 el Timer1 puede operar en dos modos: como temporizador
y como contador. El modo de funcionamiento está determinado por el tipo de
reloj seleccionado (interno -->temporizador, externo -->contador), lo
configuramos por medio del bit TMR1CS del registro TICON. Cuando está en modo
contador su valor se incrementa en cada flanco de subida de la señal de reloj
externa.
·
El tiempo que se tarda en incrementarse el contador se le suele llamar
paso, el paso del contador depende de la frecuencia del oscilador y del
prescaler seleccionado.
·
La fórmula para determinar los tiempos del Timer1 cuando es utilizado como
temporizador (Reloj interno) es la siguiente:
·
El paso del contador vendrá determinado por:
Paso_Contador= 4/Frecuencia
Oscilación.Prescaler
·
El Timer1 se puede habilitar o deshabilitar por medio del bit TMR1ON del
registro T1CON.
·
Posee un pre-escalador de 3 bits
·
Funcionamiento síncrono o asíncrono
·
Interrupción opcional de desbordamiento de FFFFh a 0000h
·
Posible reiniciación desde módulos CCP
·
Fuente de reloj para módulo de captura/comparación
Un dibujo con los bits de configuración del registro TICON, lo tenéis en la figura de abajo:
COMPUERTA
DE TEMPORIZADOR TMR1
El pin TG1 o la salida del comparador C2 pueden ser una
fuente de los pulsos que pasan por la compuerta del temporizador Timer1. Se
configuran por software. Esta compuerta permite que el temporizador mida
directamente la duración de los eventos externos al utilizar el estado
lógico del pin T1G o los eventos analógicos al utilizar la
salida del comparador C2. Para medir
duración de señal, basta con habilitar esta compuerta y
contar los pulsos que pasan por ella.
REGISTRO
DE CONTROL DEL TMR1
T1GINV= Inversor
de compuerta del TMR1
TMR1GE= Determina si la compuerta formada por el pin T1G
o salida del comparador C2 C2OUT) estará
activa o no.
T1CKPS1 Y T1CKPS0= Selección de rango del divisor de frecuencias
T1OSCEN=Selección
de entradas cuando impulsos proceden de reloj externo
T1SYNC=Selección
de fuente de impulsos de contaje.
TMR10N= Permisos
de prohibición y funcionamiento
PRE-ESCALADOR
DEL TMR1
Este es
un simple divisor de frecuencias que funciona según el estado de T1CKPS1 y
T1CKPS0
T1CKPS1
|
T1CKPS0
|
RANGO
DEL PREDIVISOR
|
0
|
0
|
1:1
|
0
|
1
|
1:2
|
1
|
0
|
1:4
|
1
|
1
|
1:8
|
SELECCIÓN
DE FUENTE DE RELOJ
El bit
TMR1CS del registro T1CON selecciona la fuente de reloj de la siguiente manera:
TMR1
EN MODO CONTADOR
El temporizador Timer1 se pone a funcionar como un contador
al poner a 1 el bit TMR1CS. Este bit cuenta los pulsos llevados al pin PC0/T1CKI
y se incrementa en el flanco ascendente de la entrada del reloj externo T1CKI.
Si el bit de control T1SYNC del registro T1CON se pone a 0, las entradas del
reloj externo se sincronizarán en su camino al temporizador Timer1.
En otras palabras, el temporizador Timer1 se sincroniza con
el reloj interno del microcontrolador y se le denomina contador síncrono.
Al poner en modo de reposo el microcontrolador que funciona
de esta manera, los registros del temporizador Timer1H y TMR1L no serán
incrementados aunque los pulsos de reloj aparezcan en los pines de entrada.
Como el reloj interno del microcontrolador no funciona en este modo, no hay
entradas de reloj que se utilicen para la sincronización. De todas formas, el
pre-escalador sigue funcionando siempre que haya pulsos de reloj en los pines,
porque es un simple divisor de
frecuencias.
No hay comentarios:
Publicar un comentario