You are on page 1of 18

Sistemas Basados en

Microprocesadores
Temporizadores y Contadores

Temporizador vs. Contador


Un

temporizador es un dispositivo, con frecuencia


programable, que permite medir el tiempo.

Normalmente, cuando transcurre el tiempo configurado


se hace saltar una alarma.

Un

contador asncrono es un circuito capaz de


realizar el cmputo de los impulsos que recibe en
una entrada destinada a tal efecto.

http://paginaspersonales.deusto.es/jonathan.garibay/

Temporizadores/Contadores

Los PIC18 disponen de hasta 5 temporizadores:

TMR0 Temporizador de 8 o 16 bits de resolucin que puede


trabajar como contador.
TMR1 y TMR3 Temporizadores de 16 bits de resolucin que
pueden trabajar como contadores.
TMR2 y TMR4 Temporizadores especiales de 8 bits.

El valor de todos los temporizados es accesible por medio de


registros (TMR0H:TMR0L, TMR1H:TMR1L, TMR2).
Todos los temporizadores llevan asociada una interrupcin

Por desbordamiento del temporizador/contador (TMR0, TMR1 y


TMR3).
Por alcanzar el valor del registro de periodo (TMR2 y TMR4).
El TMR3 y el TMR4 no se vern en detalle
porque son prcticamente iguales que el
TMR1 y el TMR2, respectivamente.

http://paginaspersonales.deusto.es/jonathan.garibay/

Temporizador/Contador TMR0

Puede funcionar como temporizador o como contador


asncrono (por medio del pin RA4/T0CKI).

Puede trabajar con 8 o 16 bits de precisin.


Valor del temporizador/contador accesible por medio de los
registros TMR0H:TMR0L.

Cuando se trabaja con 8 bits, se usa slo el registro TMR0L.

Posibilidad de usar pre-divisor:

Flanco activo configurable cuando trabajar como contador.

Pre-divisor configurable de 1:2 a 1:256.

Interrupcin por desbordamiento.

http://paginaspersonales.deusto.es/jonathan.garibay/

Temporizador/Contador TMR0 (continuacin)


Seal de
Entrada

Aplicacin del
pre-divisor

Autoincremento
del registro

1:2
Temporizador

Contador

1:4

1:2
1:4

http://paginaspersonales.deusto.es/jonathan.garibay/

0h00
0h01

0hFE
0hFF
0h00
0h01

Interrupcin TMR0

Temporizador/Contador TMR0 (continuacin)


En

el modo de 16 bits, el registro TMRH no contiene


el valor real, sino que ste est almacenado en un
buffer interno no accesible.

El registro TMR0H se actualiza con el valor real durante


la lectura del registro TMR0L.
La escritura del valor real en el buffer interno desde el
registro TMR0H se realiza durante la escritura del registro
TMR0L.

Se debe leer primero el


TMR0L y despus el TMR0H

Se debe escribir primero el


TMR0H y despus el TMR0L

http://paginaspersonales.deusto.es/jonathan.garibay/

Temporizador/Contador TMR0 (continuacin)

Habilita el TMR0

Selecciona el modo
temporizador o
modo contador
Flanco activo para
el modo contador

Selecciona del
pre-escaler

http://paginaspersonales.deusto.es/jonathan.garibay/

Dominios de tiempo
La

medida de tiempo natural es la que usamos de


forma normal en la realidad.

Se mide en segundos (S) y todos sus mltiplos: mS, S

los PICs el tiempo de mide en ticks, siendo un


tick el tiempo necesario para que se genere una
seal de incremento del reloj del sistema.

En

El tick es la unidad mnima de temporizacin de un


controlador.

La

relacin entre tiempo natural y ticks es:


tiempo ticks Treloj

pre divisor

Periodo del reloj del sistema

http://paginaspersonales.deusto.es/jonathan.garibay/

Clculo de temporizaciones
ticks

Timer0

255

La interrupcin por desbordamiento va a


avisar del fin de una temporizacin.

valor inicial

TMR0L

nmero de ticks

Por ello, no se empieza a contar desde 0,


sino desde una valor inicial que se calcula
de la siguiente forma:
valor _ inicial 256 nmero_ de _ ticks

Con este valor inicial, al cabo de n ticks se


producir el desbordamiento.

En unidades naturales, la interrupcin se


producir al cabo de un tiempo que se
calcula con la siguiente frmula:
temporizacin

4
num _ ticks pre divisor
Fosc

http://paginaspersonales.deusto.es/jonathan.garibay/

Clculo de temporizaciones (continuacin)

Para temporizar un valor concreto se necesita calcular:

El valor del pre-divisor.

Se calcula la temporizacin mxima con cada pre-divisor para


identificar cual es el valor de pre-divisor mnimo a utilizar.
4
temp _ max
num _ max_ tick pre divisor
Fosc

El valor inicial de temporizacin.

Aplicando la siguiente formula (derivada de las anteriores).


valor _ inicial 256

Fosc
temporizacin
4 pre divisor

Como el valor inicial tiene que ser un entero, habr que


redondear, y por tanto existir un error de redondeo.

Habr que tratar de minimizar este error realizando los clculos


para diferentes pre-divisores.

http://paginaspersonales.deusto.es/jonathan.garibay/

Clculo de temporizaciones (continuacin)


Resumen
1.
2.

3.

4.

de la metodologa:

Obtener los valores posibles de los pre-divisores.


Obtener el valor inicial del temporizador para cada uno
de los pre-divisores posibles.
Todos los pares (pre-divisor, valor inicial) sern
soluciones vlidas. Sin embargo, debido al error de
redondeo unas sern mejores que otras.
Calcular el error de redondeo y seleccionar como
solucin el que lo tenga ms bajo
temp _ real (256 valor _ inicial)

4
pre divisor
Fosc

error temporizacin temp _ real

http://paginaspersonales.deusto.es/jonathan.garibay/

Temporizador/Contador TMR1

Puede funcionar como temporizador, como contador


asncrono (RC0/T1CKI) y como contador sncrono
(RC1/T1OSI y RC0/T1OSO).

Cuando trabaja como contador asncrono, se trabaja siempre


con flanco ascendente.

Tiene 16 bits de precisin.


Valor del temporizador accesible por medio de los
registros TMR1H:TMR1L.
Permite utilizar un pre-divisor configurable de 1:1, 1:2,
1:4 y 1:8.
Interrupcin por desbordamiento.

http://paginaspersonales.deusto.es/jonathan.garibay/

Temporizador/Contador TMR1 (continuacin)


El

funcionamiento es similar al del TMR0.

La fuente externa del


timer puede ser
sncrona o asncrona

El timer se puede resetear


desde los mdulos CCP

http://paginaspersonales.deusto.es/jonathan.garibay/

Esta seal se puede utilizar


como entrada del oscilador
interno del controlador

Temporizador/Contador TMR1 (continuacin)


Para

la lectura y escritura del valor del TMR1, se


utiliza el mismo modelo que el del TMR0 en el que el
registro TMR1H no contiene el valor real.

Esto no quiere decir que


se configure como 1:1.
Quiere decir que se
reinicia la cuenta de los
flancos detectados.
El pre-escaler se borra cuando
se escribe el registro TMR1L

http://paginaspersonales.deusto.es/jonathan.garibay/

Temporizador/Contador TMR1 (continuacin)

Selecciona del
pre-escaler
Selecciona entre
contador sncrono o
contador asncrono

Selecciona el modo
temporizador o
modo contador
Habilita el TMR1

http://paginaspersonales.deusto.es/jonathan.garibay/

Temporizador TMR2
Es

un temporizador de 8 bits con un registro de


periodo (PR2).

Cuando el timer alcanza el valor del registro PR2, se


resetea y comienza una nueva temporizacin.

Valor

del temporizador accesible por medio del


registro TMR2.
Pre-divisor configurable de 1:1, 1:4 o 1:16.
Incluye un post-divisor configurable desde 1:1 a 1:16
(1:2, 1:3, 1:4).

Se incrementa cada vez que el timer alcanza el valor del


registro PR2.

http://paginaspersonales.deusto.es/jonathan.garibay/

Temporizador TMR2 (continuacin)


Interrupcin

especial despus del post-divisor.

Se genera cuando se haya realizado n temporizaciones,


siendo n el valor del post-divisor.
Reset del contador

La interrupcin depende
del post-divisor

Salida para el
mdulo PWM
No hay entradas externas
para contadores

http://paginaspersonales.deusto.es/jonathan.garibay/

Temporizador TMR2 (continuacin)

Selecciona del
post-escaler

Habilita el TMR1

Selecciona del
pre-escaler

http://paginaspersonales.deusto.es/jonathan.garibay/

You might also like