Temporizadores Internos (TMR)

Un temporizador interno (TMR) es un módulo de hardware incluido en el mismo microcontrolador el cual está especialmente diseñado para incrementar automáticamente el valor de un registro asociado al TMR cada vez que el módulo TMR recibe un pulso. A este pulso se lo llama “señal de reloj”.

El módulo TMR siempre incrementa el valor del registro asociado, nunca decrementa dicho valor.

Algunos microcontroladores pueden incluir más de un módulo TMR y la señal de reloj de cada uno de éstos puede ser de origen interno o externo.

Si el origen de la señal de reloj está configurado como externo, el módulo temporizador puede ser utilizado como un contador de eventos externos, incrementando el TMR con cada pulso recibido mediante el pin correspondiente.

Si el origen de la señal de reloj es interno, el TMR incrementa con cada ciclo del oscilador. Esto permite utilizar el temporizador como “contador de ciclos de programa”, donde, un ciclo corresponde al tiempo de ejecución de una instrucción, lo cual se puede calcular con la siguiente fórmula:

( 1 / ( Frec. Osc. / 4) )
Donde “Frec. Osc.” es la frecuencia del oscilador utilizado.

Dado que la velocidad de ejecución del microcontrolador corresponde a ¼ de la velocidad del cristal utilizado, cada ciclo de programa se ejecuta en un tiempo determinado según el cristal que estemos utilizando.

Por ejemplo; con un cristal de 4Mhz la velocidad real de procesamiento del microcontrolador es de 1 Mhz. Aplicando la siguiente fórmula:

1 / (4.000.000 / 4)
1 / 1.000.000
0.000001 = 1 uS (microsegundo)

Esto significa que cada ciclo de programa se ejecuta a 1/1.000.000 (1 uS) y dado que cada incremento del TMR corresponde a un ciclo de programa, si contamos los incrementos de un TMR, indirectamente podremos calcular el tiempo transcurrido.

El incremento del TMR se realiza de manera automática y de forma paralela a la ejecución del resto del programa. Esto significa que el programa no debe “controlar” el incremento del TMR, lo cual sí debe realizarse en las temporizaciones por bucles, en las cuales el microcontrolador se queda “esperando” a que transcurra un tiempo, y no pueden ejecutarse otras tareas mientras no finalice la temporización.

Entonces el TMR puede ser utilizado como temporizador mientras el microcontrolador ejecuta otros procesos. Por ejemplo: si diseñamos un programa que encienda y apague un led cada 1 segundo, el microcontrolador enciende el led y luego puede ocuparse de esperar a que transcurran los ciclos correspondientes a 1 segundo, luego apaga el led y continua esperando.

Pero si el microcontrolador debe realizar alguna otra tarea además de temporizar, por ejemplo, mostrar valores en dígitos de 7 segmentos, el micro no puede quedarse temporizando por bucles ya que mientras se encuentre temporizando no podrá realizar el proceso de muestreo de los datos en los displays, y como resultado tendremos que los displays se apagan mientras el microcontrolador se encuentra temporizando.

En este caso, se utiliza un TMR para realizar la temporización mientras el microcontrolador se ocupa de mostrar los datos en los displays.

En general los microcontroladores cuentan con una interrupción por desbordamiento del TRM, es decir que, el microcontrolador se interrumpe cuando el TMR0 pasa de 255 (B’11111111’) a 0 (B’00000000’) en los temporizadores de 8 bits y cuando pasa de 65535 (B’11111111_111111’) a 0 (B’00000000_00000000’) en los temporizadores de 16 bits.

Dado que 256 uS es un tiempo relativamente corto (para un TMR de 8 bits a 4 Mhz.), existe la posibilidad de preescalar el TMR0 para que el registro asociado al TMR se incremente cada 2, 4, 8,o más ciclos. De esta manera, estamos multiplicando la cantidad de ciclos que deben ejecutarse para realizar un incremento del TMR. Al prescalador también se lo denomina predivisor.

Por ejemplo, con un predivisor de 8, cada incremento del TMR se realiza cada 8 ciclos de programa y el desbordamiento del TMR se realizara cada 2048 ciclos (255 incrementos * 8 ciclos).
Así podemos realizar interrupciones con periodos de tiempo mayores.

** VOLVER AL INDICE DEL MANUAL DE USUARIO **

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestDigg thisShare on RedditEmail this to someonePrint this page

Un comentario sobre “Temporizadores Internos (TMR)”

Los comentarios están cerrados.