18
Sistemas Basados en Microprocesadores Temporizadores y Contadores

06.Temporizadores

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 06.Temporizadores

Sistemas Basados en

Microprocesadores

Temporizadores y Contadores

Page 2: 06.Temporizadores

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

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 asíncrono es un circuito capaz de

realizar el cómputo de los impulsos que recibe en

una entrada destinada a tal efecto.

Page 3: 06.Temporizadores

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

Temporizadores/Contadores

Los PIC18 disponen de hasta 5 temporizadores:

TMR0 Temporizador de 8 o 16 bits de resolución que puede trabajar como contador.

TMR1 y TMR3 Temporizadores de 16 bits de resolución 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 interrupción

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 verán en detalle

porque son prácticamente iguales que el

TMR1 y el TMR2, respectivamente.

Page 4: 06.Temporizadores

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

Temporizador/Contador TMR0

Puede funcionar como temporizador o como contador

asíncrono (por medio del pin RA4/T0CKI).

Flanco activo configurable cuando trabajar como contador.

Puede trabajar con 8 o 16 bits de precisión.

Valor del temporizador/contador accesible por medio de los

registros TMR0H:TMR0L.

Cuando se trabaja con 8 bits, se usa sólo el registro TMR0L.

Posibilidad de usar pre-divisor:

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

Interrupción por desbordamiento.

Page 5: 06.Temporizadores

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

Temporizador/Contador TMR0 (continuación…)

1:2

1:4

0h00

0h01

0hFE

0hFF

0h00

0h01

Interrupción TMR0Temporizador

Contador

Señal de

Entrada

Aplicación del

pre-divisor

Autoincremento

del registro

1:4

1:2

Page 6: 06.Temporizadores

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

Temporizador/Contador TMR0 (continuación…)

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 después el TMR0H

Se debe escribir primero el

TMR0H y después el TMR0L

Page 7: 06.Temporizadores

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

Temporizador/Contador TMR0 (continuación…)

Habilita el TMR0

Selecciona del

pre-escaler

Flanco activo para

el modo contador

Selecciona el modo

temporizador o

modo contador

Page 8: 06.Temporizadores

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 múltiplos: mS, µS…

En los PIC’s el tiempo de mide en ‘ticks’, siendo un

‘tick’ el tiempo necesario para que se genere una

señal de incremento del reloj del sistema.

El ‘tick’ es la unidad mínima de temporización de un

µcontrolador.

La relación entre tiempo natural y ‘ticks’ es:

divisorpreTtickstiempo reloj

Periodo del reloj del sistema

Page 9: 06.Temporizadores

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

Cálculo de temporizaciones

La interrupción por desbordamiento va a

avisar del fin de una temporización.

Por ello, no se empieza a contar desde 0,

sino desde una valor inicial que se calcula

de la siguiente forma:

Con este valor inicial, al cabo de ‘n’ ticks se

producirá el desbordamiento.

En unidades naturales, la interrupción se

producirá al cabo de un tiempo que se

calcula con la siguiente fórmula:

0

255

TMR0L

valo

r in

icia

l

núm

ero

de ‘ticks’

ticks Timer0

divisorpreticksnumFosc

ióntemporizac _4

ticksdenúmeroinicialvalor __256_

Page 10: 06.Temporizadores

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

Cálculo de temporizaciones (continuación…)

Para temporizar un valor concreto se necesita calcular:

El valor del pre-divisor.

Se calcula la temporización máxima con cada pre-divisor para identificar cual es el valor de pre-divisor mínimo a utilizar.

El valor inicial de temporización.

Aplicando la siguiente formula (derivada de las anteriores).

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 cálculos para diferentes pre-divisores.

ióntemporizacdivisorpre

Foscinicialvalor

4256_

divisorpreticknumFosc

temp max__4

max_

Page 11: 06.Temporizadores

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

Cálculo de temporizaciones (continuación…)

Resumen de la metodología:

1. Obtener los valores posibles de los pre-divisores.

2. Obtener el valor inicial del temporizador para cada uno

de los pre-divisores posibles.

3. Todos los pares (pre-divisor, valor inicial) serán

soluciones válidas. Sin embargo, debido al error de

redondeo unas serán mejores que otras.

4. Calcular el error de redondeo y seleccionar como

solución el que lo tenga más bajo

realtempióntemporizacerror

divisorpreFosc

inicialvalorrealtemp

_

4)_256(_

Page 12: 06.Temporizadores

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

Temporizador/Contador TMR1

Puede funcionar como temporizador, como contador

asíncrono (RC0/T1CKI) y como contador síncrono

(RC1/T1OSI y RC0/T1OSO).

Cuando trabaja como contador asíncrono, se trabaja siempre

con flanco ascendente.

Tiene 16 bits de precisión.

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.

Interrupción por desbordamiento.

Page 13: 06.Temporizadores

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

Temporizador/Contador TMR1 (continuación…)

El funcionamiento es similar al del TMR0.

La fuente externa del

timer puede ser

síncrona o asíncrona

Esta señal se puede utilizar

como entrada del oscilador

interno del µcontrolador

El timer se puede resetear

desde los módulos CCP

Page 14: 06.Temporizadores

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

Temporizador/Contador TMR1 (continuación…)

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.

El pre-escaler se borra cuando

se escribe el registro TMR1L

Esto no quiere decir que

se configure como 1:1.

Quiere decir que se

reinicia la cuenta de los

flancos detectados.

Page 15: 06.Temporizadores

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

Temporizador/Contador TMR1 (continuación…)

Habilita el TMR1

Selecciona del

pre-escaler

Selecciona entre

contador síncrono o

contador asíncrono

Selecciona el modo

temporizador o

modo contador

Page 16: 06.Temporizadores

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 temporización.

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.

Page 17: 06.Temporizadores

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

Temporizador TMR2 (continuación…)

Interrupción especial después del post-divisor.

Se genera cuando se haya realizado ‘n’ temporizaciones,

siendo ‘n’ el valor del post-divisor.

Salida para el

módulo PWM

No hay entradas externas

para contadores

La interrupción depende

del post-divisorReset del contador

Page 18: 06.Temporizadores

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

Temporizador TMR2 (continuación…)

Habilita el TMR1

Selecciona del

pre-escaler

Selecciona del

post-escaler