Vous êtes sur la page 1sur 2

El Timer 2 es un temporizador de 8 bits que tiene la particularidad de tener unpreescalador y un post-escalador.

Adems este mdulo cuenta con un registro de periodo PR2 que marca el valor mximo 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 y despus al desborde sino que incrementa su cuenta desde 0x00 con cada ciclo de instruccin hasta que el valor del registro TMR2 coincide con el del registro PR2 y despus, en el siguiente ciclo reinicia la cuenta desde 0x00. Este mdulo cuenta con un preescalador y un post-escalador. El preescalador tiene la misma funcin 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 despus de cada coincidencia entre los registros TMR2 y PR2. Si el post-escalador es 1:1 la bandera de interrupcin TMR2IF se habilitar en cada coincidencia entre TMR2 y PR2, en cambio si por ejemplo el postescalador es 1:16, la interrupcin se presentar cada 16 coincidencias. 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 y el post-escalador con los bits T0UTPS3:TOUTPS0 de la siguiente manera: Preescalador 00 = 1:1 01 = 1:4 1x = 1:16 . . . 1111 = 1:16 Carga La temporizacin del TempTMR2 Donde Preescaler = PR2 = Postscaler = Tinstr = TempTMR2 = Post-escalador 0000 = 1:1 0001 = 1:2 0010 = 1:3

y Timer = 2 est dada por la

Temporizacin siguiente expresin:

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

Valor

Valor cargado Valor 4/frecuencia Temporizacin

del al del de dada

preescalador registro PR2 post-escalador oscilacin en segundos

La temporizacin mxima que puede alcanzar el Timer 2 es la misma que alcanza el Timer 0. Utilizando el oscilador interno del pic 16f628 la temporizacin mxima sera de 65536uS. Si se desea otra temporizacin se puede lograr cargando el valor necesario al registro PR2. PR2 = [([TempTMR2/(4/fosc)])/(Preescaler*Postscaler)]-1

Veamos el mismo ejemplo de los temporizadores anteriores, ahora aplicado al Timer 2: Se desea complementar el valor del puerto B cada 50ms. Se estar revisando que se haya cumplido el tiempo de la temporizacion checando la bandera TMR2IF. Utilizando la expresin de la

precarga y utilizando el preescalador y el post-escalador ms grande (16) obtenemos el valor quer que necesitamos cargar al registro PR2 para obtener una temporizacion de 50mS. PR2 = [([50mS/(4/4Mhz)])/(16*16)]-1 = 194.31

Ya que no podemos cargar numeros fraccionarios el valor del registro PR2 necesario es 194. El cdigo del programa sera el siguiente: INICIO bsf STATUS,RP0 clrf TRISB bcf STATUS,RP0 movlw b'01111010' movwf T2CON clrf PORTB bcf PIR1,TMR2IF PRECARGA bcf T2CON,TMR2ON bsf STATUS,RP0 movlw .194 movwf PR2 bcf STATUS,RP0 bsf T2CON,TMR2ON ESPERA btfss PIR1,TMR2IF goto ESPERA bcf PIR1,TMR2IF comf PORTB,f goto PRECARGA Descargar cdigo: Ejemplo del temporizador Timer 2

http://www.circuitoselectronicos.org/2011/04/temporizador-timer-2-en-los.html http://www.puntoflotante.net/proyecto.htm

Vous aimerez peut-être aussi