You are on page 1of 7

TIMER 2

SISTEMAS BASADOS EN MICROCONTROLADOR


El Módulo del Timer 2
• El Timer 2 es un temporizador de 8 bits que tiene la
particularidad de tener un preescalador y un post-escalador.

• Además este módulo cuenta con un registro de periodo PR2


que marca el valor máximo que puede alcanzar la cuenta del
registro TMR2

• A diferencia de los otros temporizadores, el temporizador


Timer 2 no incrementa su cuenta hasta llegar a 0xFF

• Incrementa su cuenta desde 0×00 con cada ciclo de instrucción


hasta que el valor del registro TMR2 coincide con el del
registro PR2 y después, en el siguiente ciclo reinicia la cuenta
desde 0×00.
SISTEMAS BASADOS EN MICROCONTROLADOR
El Módulo del Timer 2
• El preescalador tiene la misma función que en los
otros dos timers y sirve como divisor de frecuencia
antes de cada incremento

• El post-escalador funciona como un divisor de


frecuencia después de cada coincidencia entre los
registros TMR2 y PR2 ,si el post-escalador es 1:1 la
bandera de interrupción TMR2IF se habilitará en cada
coincidencia entre TMR2 y PR2, en cambio si por
ejemplo el post-escalador es 1:16, la interrupción se
presentará cada 16 coincidencias

SISTEMAS BASADOS EN MICROCONTROLADOR


El Módulo del Timer 2
• Este temporizador, al igual que el Timer 1, puede habilitarse y deshabilitarse mediante
el bit TMR2ON.

• El preescalador se selecciona con los bits T2CKPS1:T2CKPS0


• El post-escalador con los bits T0UTPS3:TOUTPS0

SISTEMAS BASADOS EN MICROCONTROLADOR


El Módulo del Timer 2
Carga y Temporización

La temporización del Timer 2 está dada por la siguiente


expresión:

TempTMR2 = [Preescaler*(PR2+1)*Postscaler]*Tinstr

Donde
Preescaler = Valor del preescalador
PR2 = Valor cargado al registro PR2
Postscaler = Valor del post-escalador
Tinstr = 4/frecuencia de oscilación
TempTMR2 = Temporización dada en segundos

PR2 = [(TempTMR2/Tinstr)/(Preescaler*Postscaler)]-1

SISTEMAS BASADOS EN MICROCONTROLADOR


EJEMPLO

Se desea complementar el valor del puerto B cada 50ms. Se estará revisando que se haya cumplido el tiempo de
la temporización chequeando la bandera TMR2IF. Utilizando la expresión de la precarga y utilizando el
preescalador y el post-escalador más grande (16) obtenemos el valor que necesitamos cargar al registro PR2
para obtener una temporización de 50mS.

PR2 = [(50mS/1us)/(16*16)]-1 = 194.31

Ya que no podemos cargar números fraccionarios el valor del registro PR2 necesario es 194. El código del
programa sería el siguiente:

SISTEMAS BASADOS EN MICROCONTROLADOR


C

SISTEMAS BASADOS EN MICROCONTROLADOR

You might also like