martes, 5 de febrero de 2013

Timer 0


Un timer se implementa por medio de un contador que determina un tiempo preciso entre el momento en que el valor es cargado y el instante en el que se produce su desbordamiento. Consiste en un contador ascendente (también podría ser descendente) que, una vez inicializado con un valor, su contenido se incrementa con  cada impulso de entrada hasta llegar a su valor máximo b’11….11’, desbordando y volviendo a comenzar desde cero.
Los impulsos aplicados al TIMER0 pueden provenir de los pulsos aplicados al pin TOCKI o de la señal de reloj interna (Fosc/4), lo que permite actuar de dos formas diferentes:
·         Como contador de los impulsos que le llegaran por el RA4/TOCKI.
·         Como temporizador de tiempos.
A veces es necesario controlar los tiempos largos y aumentar la duración de los impulsos que incrementan en el TMR0. Para cubrir esta necesidad se dispone de un circuito programable llamado Divisor de frecuencia o Prescaler que divide la frecuencia utilizada por diversos rangos para poder conseguir temporizaciones más largas.
El prescaler puede aplicarse a uno de los temporizadores, al TMR0 o al Watchog. Cuando se asigna al TMR0 los impulsos pasan primero por el divisor de frecuencia y una vez aumenta su duración se aplica el TMR0.
Para controlar el comportamiento del TMR0 se utilizan algunos bits de los registros OPTION e INTCON.
Del registro INTCON.
Este registro se localiza en la dirección 0Bh del Banco 0 y duplicado en la 8Bh del Banco 1. Contiene los 8 bits que se muestran en la siguiente tabla, de dichos bits, solo utilizaremos el TOIF.
GIE
EEIE
TOIE
INTE
RBIE
TOIF
INTF
RBIF
BIT 7
BIT 6
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
BIT 0


·         TOIF (TMR0 Overflow Interrupt Flag Bit). Flag de interrupcion del TMR0. Indica que se ha producido un desbordamiento del Timer 0, que ha pasado de b’11111111’ a b’00000000’.
o   TOIF=0, el TMR0 no se ha desbordado.
o   TOIF=1, El TMR0 se ha desbordado. (Debe borrarse por software).
Del registro OPTION
Este registro gobierna el comportamiento del TMR0. Y los bits utilizados por los timers son:
/RBPU
INTDEG
TOCS
TOSE
PSA
PS1
PS2
PS0
BIT 7
BIT 6
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
BIT 0


PS2:PS0. (Prescaler Rate Selec Bits). Bits para seleccionar los valores del prescaler o rango con el que actúa el divisor de frecuencia.
·         PSA (Prescaler Assignment Bit). Asignación del divisor de frecuencia:
o   PSA=0, El divisor de frecuencia se asigna al TMR0.
o   PSA=1, El divisor de frecuencia se asigna al Watchdog.
PS2  PS1  PS2
Divisor del TMR0
Divisor del WDT
000
001
010
011
100
101
110
111
1:2
1:4
1:8
1:16
1:32
1:64
1:128
1:256
1:1
1:2
1:4
1:8
1:16
1:32
1:64
1:128


·         TOSE (TMR0 Source Edge Selec Bit). Selecciona flanco de la señal de entrada del TMR0.
o   TOSE=0, TMR0 se incrementa en cada flanco ascendente de la señal aplicada.
o   TOSE=1, TMR0 se incrementa en cada flanco descendente de la señal aplicada.
·         TOCS (TMR0 Clock Source Select Bit). Selecciona la fuente de señal del TMR0.
o   TOCS=0, Pulsos de reloj interno Fosc/4 (TMR0 como temporizador).
o   TOCS=1, Pulsos introducidos a través del pin RA4/TOCKI (TMR0 como contador).

No hay comentarios:

Publicar un comentario