1° Tiene un temporizador de 8 bits.
2° Dispone de un registro de periodo de 8 bits (PR2).
3° Leible y escribible.
4° Predivisor de frecuencia programable.
5° Postdivisor de frecuencia programable.
6° Interrupcion opcional al coincidir TMR2 y PR2.
7° Posibilidad de generar impulsos al modulo SSP.
Funcionamiento y programación del TMR2
Se trata de un temporizador ascendente de 8 bits, que se puede leer y escribir, y que también puede realizar funciones especiales para la Puerta Serie Sincrona (SSP) y con los módulos de captura y comparación. Ocupa la dirección 11h del mapa de los registros específicos.
La señal del reloj del TMR2 es interna Fosc/4, y antes de ser aplicada pasa por un predivisor de frecuencia con rangos de 1:1, 1:4 y 1:16. La salida del TMR2 atraviesa un postdivisor de frecuencia con rangos de división desde 1:1 a 1:16, pasando por los 16 valores posibles.
Al entrar el mocrocontrolador en modo de reposo o SLEEP, se detiene el oscilador interno y al no existir la señal Fosc/4 deja de funcionar TMR2.
Para controlar el funcionamiento del TMR2 se usa el registro T2CON, que ocupa la dirección 12h del mapa de los registro específicos y cuya distribución y asignación de los bits es la siguiente:
El TMR2 tiene asociado el Registro de periodo PR2, que ocupa la direccion 92h. Cuando el valor de contaje del TMR2 coincide con el valor cargado en PR2 se genera un impulso en la salida EQ y se resetea el TMR2. Estos impulsos en EQ pueden ser divididos por el postdivisor antes de activar el señalizador TMR2IF.
Este temporizador tambien tiene la capacidad de producir una peticion de interrupcion si se pone a 1 el bit TMR2IE de habilitacion, que recide en el registro PIE1 (8Ch). Ademas, con la programacion adecuada, los impulsos de salida del TMR2 (antes postdivisor) pueden actuar como base de tiempos para modulos SSP.
Resumen de los bits de los registros que se utilizan en el manejo y programación del TMR2
PROGRAMA TIMER2
Timer2 como temporizador
Este programa consiste en generar un retado con dicho timer, se sabe que para obtener el máximo valor de retardo, de acuerdo con la siguiente formula:
Dado que PR2 ES UN REGISTRO DE 8 BITS el máximo valor a asignarle es de 256 (se le asignó 255), y se seleccionno un prescaler de 1:8 y un post caler de 1:8. Una vez establecido el programa consiste en que el puerto inicialmente esta en cero, trascurridos aproximadamente 65miseg (retardo máximo), el mismo se complementa: todos los pines en 1, y se repite el proceso.
CODIGO:
; ESTE PROGRAMA CONSISTE EN REALIZAR UN RETARDO CON TIMER2,
;DADO QUE LA MAXIMA TEMPORIZACION QUE OFRECE ES CUANDO EL POSCALER ES DE 1:16
;Y EL PREESCALER DE 1:16, Y EL VALOR DE PR2=255 SE PROCIORNA UN RETARDO DE APROXIMADAMENTE
;65MSEG, CON DICHO RETARDO DE COMPLEMTA EL PUERTO(INICIALMENTE EN 0) CADA 65MSEG (TODOS PINES
;PUERTOB EN 1
LIST p=16F887
INCLUDE <P16F887.inc>
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
ORG 0x00
BANKSEL ANSEL
CLRF ANSEL
CLRF ANSELH
BANKSEL TRISB
CLRF TRISB
BANKSEL PORTB
CLRF PORTB
BANKSEL T2CON
MOVLW B'01110111' ; SELECCION DE POSCALER 1:16 Y PRESCALER DE 1:16
MOVWF T2CON
BCF PIR1,1; LIMPIA LA BANDERA DE DESBORDAMIENTO DE TMR2=PR2
;VALOR DE PR2 Y ACTIVACION DE TIMER2, PARA LA REALIZACION DEL RETRADO.
PRE MOVLW D'255'
MOVWF PR2
BSF T2CON,2; ENCIENDE TIMER2
RETAR BTFSS PIR1,1; BANDERA DE DESBORDAMIENTO
GOTO RETAR
COMF PORTB,1
BCF PIR1,1
GOTO PRE
END
No hay comentarios:
Publicar un comentario