modulo temporizador 24462

Upload: anonymous-p0pjwz1

Post on 24-Feb-2018

223 views

Category:

Documents


0 download

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