Você está na página 1de 10

MsC.

Luz Adanaqu
2.03.2016

La mayora de los microcontroladores tienen uno o varios timers. Sern muy


tiles para medir el tiempo que ha pasado entre dos eventos, establecer tareas
para
ejecutarse
a
intervalos
regulares,
etc.

La configuracin de los timers est basada en ciclos del oscilador. Escribiremos


alguna rutina que nos permita especificar un tiempo en usec o msec conocida la
frecuencia de oscilador usado.

Un timer no es ms que un contador cuya entrada est conectada al reloj del sistema.
De hecho, la mayora de los timers pueden reconfigurarse como contadores. En ese
caso, en lugar de contar pulsos de reloj cuentan los pulsos que llegan a un
determinado
pin.

Por defecto la seal que van a contabilizar los timers corresponde a la frecuencia del
oscilador dividida por cuatro. Por lo tanto en realidad cuentan ciclos mquina, no
ciclos de reloj. Con un reloj de 20 Mhz tendramos una frecuencia de ciclos mquina
de 20/4 = 5 MHz, por lo que un ciclo mquina corresponde a 0.2 us. En principio, el
contador del timer se incrementar cada 0.2 microsegundos o 5 veces en 1 us.

Tenemos 4 registros asociados al TMR0:

T0CON: el ms importante de cara a la configuracin del timer:

T0CON.TMR0ON (bit 7) -> arranca(1) o para (0) el timer


T0CON.T08bit (bit 6) -> Modo 8 bits (1) /16 bits (0)
T0CON.T0CS (bit 5) -> TIMER (0)/ contador externo (1)
T0CON.T0SE (bit 4) -> flanco subida (0) / bajada (1)
T0CON.PSA (bit 3) -> uso (0) o no (1) de un preescaler.
T0CON.PS0-2 (bits 0-2) -> bits que definen el valor del
divisor
previo,
desde
1:2
(000)
hasta
1:256
(111)

TMR0L y TMR0H: permiten acceder (lectura/escritura) al valor


del contador (TMR0L para el byte menos significativo y TMR0H
para
el
ms
significativo).

INTCON: bits para activar la interrupcin asociada al Timer0


(ver la entrada sobre interrupciones).

El 18F4550 tiene cuatro temporizadores denominados Timer0, TMR1, TMR2, y


TMR3.

Sera ms preciso llamarlos contadores, llamarlos temporizadores tiene ms


que ver con los fines previstos en lugar de lo que realmente son.

Los timers 0, 1 y 3 son 16 contadores bit y el temporizador 2 es un contador de


8 bits.

Un contador puede ser utilizado como un temporizador si se sabe cunto es el


periodo del reloj.

Por ejemplo, si el reloj de entrada tiene un perodo de 1 ms y el contador se


pone a contar hasta 1.000 entonces ser cronometrado 1 segundo.

Cuando estos temporizadores completan una operacin de recuento habilitan


un flag para indicar que se alcanz el conteo.

Los cuatro temporizadores se pueden configurar para contar el reloj interno.

El perodo del reloj interno vara con el diseo, pero es fcil de obtener.

Con un perodo conocido y un recuento conocido se puede codificar el


procesador para medir un tiempo fijo utilizando estos temporizadores.

Resolucin del Temporizador

El 18F4550 tiene un puerto USB que depende de un reloj de 48 MHz (Fosc = 48MHz).
As, un diseo tpico est configurado para operar a esa frecuencia.

El procesador utiliza 4 pulsos de reloj para completar un ciclo de instruccin. Se obtiene


una instruccin desde la memoria.

A continuacin, utiliza esta instruccin para poner el procesador en el estado correcto.


Luego se ejecuta el Estado, y finalmente hace que el procesador se encuentre listo para
otro captacin.

La frecuencia de los temporizadores de ver se llama Fcy, la frecuencia del ciclo de


instruccin, que es 12 MHz (Fcy = Fosc / 4).

Eso hace que el perodo, TCY, de los ciclo de instruccin sea 83,3 ns (1 / Fcy). Por lo
tanto, cada uno de estos temporizadores se puede producir un tiempo medido contando
ciclos de instruccin. La resolucin est limitada por el perodo del ciclo de instrucciones.

Cada temporizador slo puede producir un intervalo de tiempo que es un mltiplo entero
de TCY:
Fosc = 48 MHz
Fcy = Fosc/4 = 12 MHz
Tcy = 1/Fcy = 83.3 ns

Los temporizadores tienen cada uno una funcin adicional llamada preescalador.

El prescaler se puede configurar para dividir Fcy por algn entero o


equivalentemente multiplicar TCY.

Con el uso de la prescaler la resolucin del temporizador, Trz, se puede


cambiar a un valor mayor.

El Prescaler del TMR0 se puede fijar tan alto como 256. Esto cambia la
resolucin del temporizador mediante el aumento Trz por un factor de
256 por lo que en lugar de contar un pulso cada 83,3 ns contaramos
con un pulso cada 21,3.

Con este ajuste, el temporizador slo sera preciso al 21,3, pero ahora
tenemos un perodo de 256 veces ms. Esto permite tener al TMRO a
un perodo de tiempo de 1,4 segundos - el perodo de tiempo ms
grande de los 4 temporizadores.

Resolucin del Timer = Trz = N * Tcy, Donde n es el valor del prescaler.

Rango del Temporizador

Cada temporizador demora dos ciclos de instruccin.


Contando slo una vez se obtiene el tiempo mnimo de 3 * TCY
o 0.250 (el tiempo de deslizamiento 2 ciclo se pierde
normalmente en errores de redondeo).
El nmero mximo de un contador de 16 bits es 65.536 de modo
que se obtiene un tiempo mximo de 5,46 ms para TMR0, TMR1
y TMR3.
Un contador de 8 bits puede contar hasta 256 por lo que el
tiempo mximo para TMR2 es 21,3 nosotros.
Cuanto mayor es Trz, mayor ser Tmax.

El TMR2 no solamente es el nico temporizador de 8 bits en el dispositivo,


tambin es el nico temporizador con una capacidad de post-escala.

"Post-escala" es similar a pre-escala, que se aplica despus el recuento de


8 bits an antes de que se dispare el indicador de bits. El TMR2 puede tener
un valor posterior a la escala de 1 a 16 inclusive.

Timer0 tiene un bit de control que le permite funcionar como un contador de


8 bits en lugar de un 16-bit. Si slo necesita un breve lapso de tiempo,
entonces este bit de configuracin le ahorrar el paso adicional de clculo
de la otros bytes necesarios para el modo de 16 bits. TMR1 y 3 funcionan
slo como contadores de 16 bits.

Cada uno de estos temporizadores slo puede contar hasta el nmero de bit
disponible. Cuando llegan a ese valor vuelven a cero al igual que el
odmetro hace en un coche.

Ejemplo

Para configurar un temporizador para tiempo de 1 ms hacer lo siguiente:

Paso 1) Divide 1 ms por Trz (de divisor = 1 en este ejemplo: Trz = TCY) 1 ms / Trz =
1E-3 / 83.333E-9 = 12000

Paso 2) Calcular el nmero entero para poner en el registro del temporizador de 16


bits. Un registro de 16 bits puede contar hasta 65.536. As que es necesario para
iniciar el contador en algn recuento pre-determinado que cuando se resta de 65536
es igual a 12.000.
Recuerde - estos contadores slo cuentan y que slo disparan la bandera cuando la
cuenta vuelve a cero.

As que el recuento de partida tiene que ser 65.536 - 12.000 = 53.536. Es necesario
para cargar este nmero en el registro del temporizador como se inicia el
temporizador.

Paso 3) Convertir entero en 2 bytes separados. Los de PIC18 son


microcontroladores de 8 bits. Esto significa que slo pueden mover datos alrededor
de 1 byte a la vez. Para cargar la cuenta de inicio en el temporizador, es necesario
convertir el nmero en hexadecimal e identificar el byte alto y el byte bajo separado.

Para convertir este nmero decimal a hexadecimal realizar divisiones sucesivas por
16 Hacer un seguimiento de lo que queda para cada clculo.
53536/16 = 3346, resto = 0, 0x0
3346/16 = 209, resto = 2, 0x2
209/16 = 13, resto = 1, 0x1
13/16 = 0, el resto = 13, 0xD

As 0xD120 tiene que ser el conteo para TMR_high_byte = 0xD1 y TMR_low_byte =


0x20.

Paso 4) Configure todas las opciones de temporizador .

Adems de establecer los bytes alto y bajo, tambin es necesario ajustar el registro
de configuracin para el temporizador y luego supervisar el indicador de
interrupcin.

El byte de configuracin tiene varias opciones para definir, pero lo principal es que
se convierte el temporizador de encendido y apagado.

Você também pode gostar