Está en la página 1de 4

Apuntes de Microprocesadores.

Clase 13
USO DE TIMERS INTERNOS En trminos generales, un Timer es un elemento que permite precisar lapsos de tiempo. Los microcontroladores suelen contar con uno o ms de estos dispositivos para auxiliar al procesador en las labores de cuenta y temporizacin de eventos. En el caso de los PI ms sencillos se incluyen dos de estos mdulos! el Watchdog y el "#$%. Watchdog El &Perro guardin', tiene la (uncin de vigilar que el programa en e)ecucin no se cuelgue o quede en un ciclo sin (in. *ct+a generando un reset cada cierto tiempo ,entre -. ms y /s, seg+n se programe0, para reiniciar la e)ecucin del programa. En las aplicaciones que requieren espera asincrnica de entradas se debe in1ibir la accin del Watchdog, mediante la instruccin especial L$23" o e(ectuando la seleccin de una opcin espec4(ica en el so(t5are utilizado para programar al PI . TMR0 (01H, 101H) Este es el temporizador principal de todos los PI . Posee . bits, entrada de relo) externa o interna a)ustable6 y acceso al sistema de interrupciones del procesador. Puede (uncionar como contador, recibiendo pulsos a travs del terminal $*78"9 :-, como preescalador, dividiendo la (recuencia que entra por el 9; - entre la cantidad que se le carga como valor inicial. "ambin puede usar la salida del prescalador del sistema ,ver (igura - y "abla -0 para aumentar a+n ms el (actor divisor de la (recuencia introducida por 9; -. La cuenta se e(ect+a en modo ascendente6 y cuando pasa la (rontera entre los valores mximo y m4nimo ,<<= y %0, se activa una bandera ,"9I<0 o se genera una interrupcin. La programacin y lectura del "#$% se e(ect+a a travs de tres registros! "#$%, I>" 9> y 9P"I9>. El primero de ellos corresponde el registro %- de la $*#. Es en l donde puede leerse el valor de la cuenta llevada en este mdulo. En cuanto a los registros I>" 9> y 9P"I9> se describen los bits pertinentes a continuacin. INTCON (0 H, ! H, 10 H, 1! H) @IE bitB *3IE "9IE I>"E $AIE "9I< I>"< $AI< bit%

O"TION (!1H, 1!1H) &$APC bitB


I>"E3@

"% ;

"9;E

P;*

P;/

P;-

Fig. 1, Registros asociados al TMR0

P;% bit%

3el registro I>" 9> solo concierne lo relativo a los bits "9IE , Timer Overflow Interrupt Enable 0 y "9I< ,Timer Overflow Interrupt Flag bit0. El "9IE debe escribirse con - o %, seg+n se quiera 1abilitar o in1abilitar, respectivamente, las interrupciones causadas por overflow ,cruce entre <<= y %=0 del "#$%. El "9I< indicar con un - que se 1a generado un overflow6 y con un %, que no se 1a producido esta condicin. *l producirse un overflow, el programa debe encargarse de poner este bit en %, ya que el sistema no lo 1ace. ;obre los bits de 9P"I9> se tiene que "9 ; ,"#$% Clock Source select bit0 determina si la se?al de relo) para el timer proviene del exterior ,-0 a travs del terminal $*78"9 :- o de la se?al base del sistema ,%0, introducida por 9; -. El bit siguiente, "9;E ,"#$% Source Edge select bit0 de(ine si el incremento de la cuenta de eventos ,entrada $*78"9 :-0 ocurre con la transicin al(a ,%0 o beta ,-0. Los bits restantes corresponden al uso del preescaler. omo se observa en la (igura /, el uso del preescaler est multiplexado entre el "#$% y el watchdog. El bit P;* asigna su uso al watchdog ,-0 o al "#$% ,%0.

Wilmer Sanz F.

Apuntes de Microprocesadores. Clase 13

Fig. ,. Diagra)a del Preescaler co)/& al Watchdog 0 el TMR0 F%e&te' Datas(eet del )icroco&trolador "IC1*F!++ Los bits P;/, P;- y P;% (i)an el (actor divisor para la (recuencia del 9; -, bien sea que se est traba)ando con el "#$% o con el watchdog. La "abla siguiente resume los valores que adopta el preescaler, de acuerdo con las posibles combinaciones de estos bits. T# $# 1 Factores del Preescaler "S, "S1 "S0 %%% %%%-% %--%% -%--% --Di-isor .ar TMR0 / 7 . -E F/ E7 -/. /GE Di-isor .ara Watchdog / 7 . -E F/ E7 -/.

F%e&te' Datas(eet del )icroco&trolador "IC1*F!++ Puede observarse en la "abla - que, para el "#$% no puede (i)arse un divisor del relo) de entrada igual a la unidad. Esto no es cierto, ya que tal cosa logra tan slo con asignar el preescaler al watchdog ,P;*D-0, lo cual permite que el "#$% se incremente en uno por cada ciclo de instruccin.

Wilmer Sanz F.

Apuntes de Microprocesadores. Clase 13


*1ora bien, Hcmo utilizar el "#$%I ;i no se utiliza (actor de escala , preescaler asignado al wdt0, el valor del registro "#$% se incrementa en uno, por cada instruccin que se e)ecute. uando el valor del "#$% pase de /GG a % se activa el (lag "9I<. H unto tarda en ocurrir estoI ;i se inicializa el registro "#$% con un valor J, la activacin del "9I< ocurrir en!

,/GE X 0 ciclos de instrucci n


En unidades de tiempo, podemos 1ablar de!

tTOIF =

,/GE X 0 f I!ST"

,-0 omo la

En la ecuacin -, t"9I< es el tiempo de activacin del "9I< y ( instr la (recuencia de e)ecucin de las instrucciones. (recuencia de las instrucciones es igual a la (recuencia del sistema ,( 9; 0 entre cuatro!

tTOIF =

7K,/GE X 0 f OSC

,/0

3ebe recordarse que esta deduccin es cierta ba)o el supuesto de que no 1ay (actor de escala aplicado al "#$%. uando si lo 1ay ,P;*D%0, ese (actor divide a la (recuencia del oscilador, de manera que!

tTOIF =

7K Factor K,/GE X 0 f OSC

,F0

La ecuacin F permite determinar el valor J que debe cargarse en el registro "#$% para generar un retardo de t "9I< unidades de tiempo. E1e).lo En el siguiente e)emplo se genera una onda con ton ,tiempo con la salida en alto0 de /%%us y to(( ,tiempo con la salida en ba)o0 de 7%%us. ;e usar una rutina de retardo de -%%us, desarrollada con el "#$%. ;e escoge un divisor igual E7 y se traba)a con un cristal de /%#=z. La (igura F muestra el diagrama de (lu)os de una rutina de retardo basada en el uso del "#$%. >o ;i "9I<!D%

Inicio

"#$%!DJ

"9I<D-

Fig. 2. Diagra)a de Fl%1os. R%ti&a de Retardo co& TMR0 F%e&te' Ela3oraci4& .ro.ia

$etornar

Es menester calcular el valor de J antes de codi(icarla. La aplicacin de la ecuacin F es como sigue!

-%% =

7KE7K,/GE X 0 X = /7.-% = F . /%

En realidad la precarga del "#$% con el valor J calculado genera un peque?o error, debido al necesario redondeo, de all4 el valor signi(ica poseer una 1erramienta de simulacin.

Wilmer Sanz F.

Apuntes de Microprocesadores. Clase 13


* continuacin se muestra la parte del cdigo correspondiente a la con(iguracin necesaria para el "#$% y la subrutina!

6"9 ;D% ;e?al de relo) proveniente del sistema, >o externa 6"9;ED% 6P;*D% Preescaler asignado al "#$% 6P;/ P;- P;% D -%-. PreescalerDE7 TOIF BSF MOVLW MOVWF BCF Reta !" MOVLW MOVWF C$%&" BTFSS GOTO BCF RETURN EQU 0x2

STATUS,RP0 b01000101 OPTION_REG STATUS,RP0

0xF# TMR0 INTCON,TOIF C$%&" INTCON,TOIF

#cti-idad s%gerida' Elaborar el cdigo del programa que permita generar la onda deseada. i3liogra56a L #icroc1ip "ec1nology Inc. ,/%%-0. "IC1*F!+7 Data S(eet. 555.micro1ip.com MEn l4neaN Oltimo acceso! %-L%EL/%%.

Wilmer Sanz F.

También podría gustarte