modulo temporizador 24462
Post on 24-Feb-2018
223 Views
Preview:
TRANSCRIPT
-
7/25/2019 Modulo Temporizador 24462
1/23
Mdulo de Temporizadores
1. Mdulo Timer 0El mdulo Timer0 puede ser usado para generar periodos de tiempo ( si funciona comotemporizador) o puede ser usado para registrar el paso de eventos (si trabaja como
contador de eventos). Al igual que en el mdulo anterior existen registros quecontrolan el funcionamiento del mdulo timer 0
NOTA: !a misma distribucin se repite en los bancos " # $ !a operacin implica lasiguiente secuencia
%ngresar al banco &
'onfigurar el modulo timer 0 (como contador de eventos o timer)
egresar al banco 0
'argar el valor del T0 (inicializar la cuenta )
!as principales caracter*sticas del modulo timer 0 son.
+uede ejecutar ,asta "- cuentas (0/"--) debido a que el registro T0 es
de bits.
El registro T0 puede ser le*do para saber cual es valor actual de las cuentas
o puede ser escrito para colocar un valor inicial.
+osee un bloque de preescalamiento que permite ampliar el rango de las
cuentas.
1elector interno para definir si trabaja como temporizador o como contador
-
7/25/2019 Modulo Temporizador 24462
2/23
de eventos
2enera una se3al de interrupcin cuando se produce un desborde en el registroT0 (cuando pasa de 0x44 a 00). 5it T0%4 del registro %6T'76
1elector para indicar si detecta flanco de subida o bajada cuando opera comocontador de eventos. 5it T01E del registro 7+T%768E2 (7+T%76 para
fines pr9cticos lo llamaremos 7+T%768E2 en adelante).
A continuacin se muestra el diagrama de bloques del mdulo Timer 0
'omo se aprecia en la parte superior derec,a esta presente un :;. El :; es
controlado por el bit T0'1< si es 0 el mdulo opera como temporizador= si es & como
contador de eventos. El bit T7'1 pertenece al registro 7+T%768E2 # corresponde
al bit -.
'uando el mdulo funciona como timer el registro T0 se incrementa en cada ciclode instruccin (siempre # cuando el +reescalamiento este des,abilitado).
'uando el registro T0 es escrito el microcontrolador debe esperar " ciclos de
instruccin para que comenzar la cuenta.
'uando el mdulo trabaja como contador de eventos el registro T0 incrementa su
valor cada vez que aparece un flanco en el pin A>?T7'@%.
!a seleccin del tipo de flanco (subida o bajada) depender9 de la programacin del bit
T71E (registro 7+T%768E2 bit >). 1i T71E es 0/lgico trabaja con flanco desubida si es &/lgico con flanco de bajada.
-
7/25/2019 Modulo Temporizador 24462
3/23
El preescaler es un mdulo compartido por el AT'BC72 # el Timer 0. El preescaler
es como un divisor de frecuencia programable.
'omo se aprecia puede conectarse en serie al mdulo timer 0 (dependiendo de los
valores de T7'1 # +1A). 1upongamos que el mdulo timer 0 funciona como contador
de eventos # el preescaler esta ,abilitado. El valor es &&< eso significa que cada pulsoque ingrese incrementar9 el valor en el registro T0 (el valor m9ximo de cuentasser9 "-).
1i el preescaler vale & por cada eventos que sucedan solo aumentar9 una cuenta en
el registro T0 (el valor m9ximo de cuentas ser9 x"-). El valor del preescaler
depende de los bits +1" (bit ")< +1&(bit &) # +10 (bit 0) del registro 7+T%768E2. El
bit +1A (bit $) del registro 7+T%768E2 define si el el preescaler funciona con el
atc,dog o con el Timer 0.
7bservemos el detalle del registro 7+T%768E2
-
7/25/2019 Modulo Temporizador 24462
4/23
Ejercicio 1
Disear un programa en base al !"1#$%&& para con'ar e(en'os )*lancos de
bajada en +A,-T0"!/ mos'rar la cuen'a en un displa de & segmen'osconec'ado al puer'o . "uando las cuen'as llegan a 2 pasan de nue(o a 0.
a/ De*iniciones pre(ias.
MOD34O TM+0
Es un mdulo que se encuentra en el +%' que se puede usar como temporizador o como
contador de eventos. 'uando se emplea como contador de eventos se aplican los
pulsos al pin A>?T7'@%. En este tipo de programacin se dice que trabaja como
T7'@. 'uando se emplea como temporizador (timer) la entrada de valores la ,ace el
oscilador (en nuestro caso un ;TA!).
b/ Diseo del programa
'omo es necesario mostrar el nDmero de eventos usaremos una tabla en el manejo de
los displa#.
-
7/25/2019 Modulo Temporizador 24462
5/23
ecordando el diagrama de bloques del Timer 0 vemos el detalle del mdulo.
Cefinimos la ruta como contador de eventos por eso ser9 necesario colocar el bitT7'1 a &. 6o ser9 necesario usar preescalamiento< por tanto el bit +1A estar9 a &. El
bit T71E define si trabajamos con flanco de subida o bajada si T71E&< detectaflanco de bajada. 1i T71E 0< detecta el flanco de subida. 1egDn el planteamiento del
programa ser9 necesario usar el flaco de bajada (T71E&).
Diagrama de *lujo:
'omo se aprecia en el diagrama de flujo ingresamos al banco & a programar los
puertos # el mdulo T0 en los registros T%1A< T%15 # 7+T%76.
egresamos al banco 0< colocamos el T0 a 0 # entramos en un bucle. En el bucle
leeremos el valor actual del T7 lo copiamos a una variable temporal # observamos
cual es el valor que presenta< si es igual a &0 reseteamos al T0 # a la variable
temporal.
4inalmente a travFs de una tabla visualizamos el valor de la variable TE+. El valor
del T0 se incrementa solo< depende de los pulsos que arriben al pin A>?T7'@%.
-
7/25/2019 Modulo Temporizador 24462
6/23
c/ Trabajo en el M4A
,. !ngrese al M4A:
'ree un projecto en la carpeta de trabajo cGarc,ivos de programaGmplabGcurso
Asigne como nombre evento.pjt. Abra un nuevo arc,ivo e ingrese el siguiente cdigo
-
7/25/2019 Modulo Temporizador 24462
7/23
5. 6imulacin
Babilite la ventana del A1%6'B76:1 1T%:!:1< 1+E'%A! 4:6T%76 E2%1TEBz conectado al +%' tendriamos
5;# us.
Adem9s sabemos que el mdulo timer 0 posee un preescaler que servir*a para amplia
el retardo. 1i lo usamos debemos configurar el bit 6A a 0 . 1i seteamos el bit 65 &"" cuentas
>. 1i T0%4 es &. %r aso -. sino ir aso >. '76TA'76TA /&H. 1i '76TAes 0 ir aso M. sino %r aso >M. etorno
Diagrama de *lujo:
-
7/25/2019 Modulo Temporizador 24462
12/23
"digo del rograma
-
7/25/2019 Modulo Temporizador 24462
13/23
5.TM+1:Es'ruc'ura !n'erna Operacin
El T& es un Temporizador?'ontador con un tama3o de & bits< lo que
requiere el uso de dos registros concatenados de bits T&B T&!< que
son los encargados de guardar el valor del contaje en cada momento. Cic,ovalor evoluciona desde 0000, ,asta 4444,. omento en el cual se activa el
se3alizador T&%4 # se regresa al valor inicial 0000,.
El valor contenido en T&B T&! puede ser le*do o escrito # los impulsos
de reloj que originan el contaje ascendente pueden provenir del exterior o de
la frecuencia de funcionamiento del microcontrolador (4osc?>).
El Timer& tiene tres formas de funcionamiento
a) Temporizador
b) 'ontador 1*ncrono
c) 'ontador As*ncrono
'omo Temporizador el valor concatenado T&B T&! se incrementa con
cada ciclo de instruccin (4osc?>). En el modo contador< el incremento se
puede producir con los flancos ascendentes de un reloj externo< cu#a entrada
se aplica a las l*neas '0 # '& de la puerta '< o por impulsos aplicados en la
l*nea '0.
-
7/25/2019 Modulo Temporizador 24462
14/23
a/.> Operacin del Timer1 en modo Temporizador
Este modo es seleccionado limpiando el bit T&'1 (T&'76N&O). En este modo
la entrada de reloj al timer es 4osc?>. El bit T&1K6' (T&'76N"O) no tiene
efecto desde el reloj interno= es siempre s*ncrono.
b/ Timer1 en modo "on'ador 6incrono
Este modo es seleccionado seteando el bit T&'1. En este modo el timer
incrementa cada flanco de subida de una entrada de reloj externo en el pin
'&< cuando el bit T&71'E6 es seteado. 7 cuando una entrada de reloj ingresa
por el pin '0< cuando el bit T&71'E6 es limpiado. 1i el T&1K6' es limpiado
-
7/25/2019 Modulo Temporizador 24462
15/23
entonces el reloj externo es sincronizado con la fase del reloj interno.
-
7/25/2019 Modulo Temporizador 24462
16/23
c.> Timer1 en modo "on'ador As?ncrono
1i el bit T&1K6' (T&'76N"O) es seteado< el reloj externo no es sincronizado.
El timer continua con un incremento as*ncrono a la fase del reloj interno. El
timer continuar9 funcionando durante el modo 1!EE+ # podr9 generar unainterrupcin de desborde= el cual podr*a despertar al procesador del modo
1!EE+.
4ec'ura escri'ura del Timer 1 en modo con'ador As?ncrono
!eer los registros T&B T&! mientras el timer esta corriendo desde un
reloj as*ncrono externo garantizar9 una lectura v9lida (tener cuidado con el
,ardPare). 1in embargo el usuario tendr9 en mente que leer & bits del timer
en " registros de bits puede causar molestia si el timer desborda mientrasse produce la lectura.
+ara escribir es recomendable que el usuario detenga el timer # escriba reciFn
los valores deseados.
Oscilador para el T!ME+1
:n oscilador de cristal puede ser construido entre los pines T&71% (entrada) #
T&717 (salida amplificada). Esto es ,abilitado seteando el bit de control
T&71'E6 (T&'76N$O). El oscilador puede ser ,asta de "00 @,z. Estecontinuar9 oscilando durante el modo 1!EE+.
-
7/25/2019 Modulo Temporizador 24462
17/23
Ejercicio =
rogramar el TM+1 para generar un re'ardo de ;5,.5 ms. "ada (ez @ue
conclua el 'iempo se ac'i(ar el O+T" de *orma escalonada
a/ De*iniciones pre(ias.
El mdulo timer & cuenta con dos registros T&B # T&! que sumados nos
pueden proveer de "Q& cuentas esto es --$ cuentas. 1i tenemos un ciclo
de instruccin de demanda & us (;TA! de >BR). El retraso sera de -.-$
ms. +ara alcanzar el valor que deseamos emplearemos el preescaler. 1i lo
colocamos a & obtendremos el valor deseado
etardo>SToscST&S+reescaler
etardo>S0."-us S -$S
etardo-">
-
7/25/2019 Modulo Temporizador 24462
18/23
. 'A!! C%1+!AKM. +7T'&0. 'A!! ETAC7&&. '76TA'76TA L&&". 1i '76TA es < entonces '76TA 0< %r paso H
&$. 1ino '76TA '76TAL&< %r paso H
+e'ardo&. T&%40". T&0$. T&76&>. 1i T&%4 es &< entonces T&76&< return-. %r paso >
Displa
&. +'!+'!L". eturn con el valor literal indicado por el indice
Diagrama de *lujo:
-
7/25/2019 Modulo Temporizador 24462
19/23
"digo del rograma
-
7/25/2019 Modulo Temporizador 24462
20/23
c/ Trabajo en el M4A
!ngrese al M4A:
'ree un projecto en la carpeta de trabajo
cGarc,ivos de programaGmplabGcurso
Asigne como nombre
m"p".pjt.
Abra un nuevo arc,ivo e ingrese el cdigo.
'orra el programa # verifique si cada -">
-
7/25/2019 Modulo Temporizador 24462
21/23
Ejercicio ,
Modi*icar el programa an'erior para @ue lea el pin +0< cuando se pulse
desBabili'ara el TM+1 si se deja de pulsar reanudara el 'imer.
El ejercicio es similar al anterior. 'onfiguramos el pin 50 como entrada (en
T%15). El valor por defecto en el 50 es &/lgico. 1i la cuenta est9 subiendo
(con intervalos de -"> ms) # presionamos el pulsador conectado a 50 ( pasa a
0/lgico) des,abilitamos el T& con la a#uda del bit T&76 (des,abilitado).
En consecuencia la cuenta seguir9 siendo visualizada e incrementada por el
resto del programa pero como es mu# r9pida no podremos verla a simple vista
por que el T& a,ora no genera el tiempo de -"> ms. +ara solucionar el
problema adicionaremos cdigo a la rutina de retardo. evisaremos el valor del50 dependiendo si es 0 detenemos la cuenta caso contrario el mdulo seguir9
generando los retardos. 7bserve el diagrama de flujo # el cdigo.
Diagrama de $lujo
-
7/25/2019 Modulo Temporizador 24462
22/23
"digo del rograma
-
7/25/2019 Modulo Temporizador 24462
23/23
top related