Upload
jonathan-ruiz-de-garibay
View
3.518
Download
1
Embed Size (px)
DESCRIPTION
Citation preview
Sistemas Basados en
Microprocesadores
Temporizadores y Contadores
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.
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.
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.
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
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
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
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
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_
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_
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(_
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.
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
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.
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
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.
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
http://paginaspersonales.deusto.es/jonathan.garibay/
Temporizador TMR2 (continuación…)
Habilita el TMR1
Selecciona del
pre-escaler
Selecciona del
post-escaler