Você está na página 1de 14

MICROCONTROLADORES PIC

LOS TIMER DE LOS 16F87x

TEMA
EL TIMER 2

CCFF D.P.E. MÓDULO DE PROYECTOS 1


LOS TEMPORIZADORES Diagrama de Bloques del TIMER2

CCFF D.P.E. MÓDULO DE PROYECTOS 2


INTRODUCCIÓN

El TIMER2 es un temporizador ascendente de 8 bits, con


preescaler y postescaler.
LOS TEMPORIZADORES

La señal de reloj de este timer es FOS/4.

La señal de reloj antes de ser aplicada a TMR2, pasa por un


predivisor, que poseerá una de las siguientes relaciones: 1:1;
1:4 ó 1:16 y que son seleccionadas mediante los bits de
control T2CKPS1 :T2CKPS0 (T2CON<1:0>).

El valor de este timer se va incrementando hasta alcanzar el


valor previamente guardado en el registro PR2 asociado a él.

CCFF D.P.E. MÓDULO DE PROYECTOS 3


En el momento en que el valor alcanzado por el timer2 es
igual al valor almacenado en PR2, se genera un pulso de
igualdad (EQ), que hace que el timer se resetee en el
LOS TEMPORIZADORES

siguiente ciclo (valor de reset 00h), comenzando una nueva


cuenta.

Estos impulsos de igualdad pueden ser divididos por un


postescaler antes de activar el flag TMR2IF.

Los posibles valores de división del postescaler van desde 1:1


hasta 1:16.

Si las interrupción de este dispositivo está permitida,


cuando se alcance el valor programado en el postescaler, esta
se producirá.

CCFF D.P.E. MÓDULO DE PROYECTOS 4


La temporización total se calcula con la siguiente expresión:

T= 4Tosc*valor de preescaler*valor de PR2* valor postescaler


LOS TEMPORIZADORES

El registro TMR2 ocupa la posición 11h del banco de


registros 0, y se puede leer, escribir y se pone a cero tras
cualquier reset.

El registro PR2 es un registro que puede leerse y escribirse,


tras el reset, queda inicializado con el valor FFh.

CCFF D.P.E. MÓDULO DE PROYECTOS 5


El preescaler y el postescaler, se ponen a cero cuando
sucede alguno de los siguiente eventos:
LOS TEMPORIZADORES

• Se escribe en el registro TMR2.


• Se escribe en el registro T2CON.
• Se produce un RESET (POR, MCLR Reset, WDT,Reset,
o BOR)

TMR2 no se pone a cero cuando se escribe en T2CON.

CCFF D.P.E. MÓDULO DE PROYECTOS 6


Salida De TMR2
La salida de TMR2 (antes del postescaler), puede utilizarse
como reloj de desplazamiento en el módulo SSP
LOS TEMPORIZADORES

También puede ser utilizado como base de tiempos para el


módulo PWM, ó para los módulos de captura y comparación
(CCP).
CCFF D.P.E. MÓDULO DE PROYECTOS 7
Registros Asociados Con El
Contador/Temporizador TIMER2
LOS TEMPORIZADORES

CCFF D.P.E. MÓDULO DE PROYECTOS 8


El Registro T2CON
T2CON es el registro de control del TIMER2 Contiene los
bits de: habilitación/deshabilitación, factor del prescaler y
del postescaler.
LOS TEMPORIZADORES

Ocupa la dirección 12h de memoria RAM

T2CKPS1:T2CKPS0:
Selección del rango del preescaler del TIMER2
– 00: Rango del preescaler de 1:1
– 01: Rango del preescaler de 1:4
– 1X: Rango del preescaler de 1:16

CCFF D.P.E. MÓDULO DE PROYECTOS 9


TMR2ON: Bit de activación del TIMER2
9 0: Desactiva el TIMER2 (valor por defecto)
9 1: Habilita el funcionamiento del TIMER2
LOS TEMPORIZADORES

• TOUTPS3:TOUTPS0: Bits 6:3 selección del rango del divisor


del postescaler, desde 1:1 hasta 1:16 pasando por todos los
valores, valor por defecto 1:1

TOUTPS3:TOUTPS0 Valor del preescaler


0 0 0 0 1:1
0 0 0 1 1:2
0 0 1 0 1:3
0 0 1 1 1:4
. . . . ………
1 1 1 0 1:15
1 1 1 1 1:16

Bit 7 Bit no implementado se lee como “0”.


10
Las Interrupciones En El TIMER2
Este modo de funcionamiento se selecciona poniendo a “0”
el bit TMR1CS (T1CON<1>).
LOS TEMPORIZADORES

En este modo de trabajo el origen de los pulsos a contar es


interno, y proceden del reloj del sistema siendo su
frecuencia FOSC/4.

Evidentemente en este caso el bit T1SYNC no tiene


sentido ya que no existe señal a sincronizar.

CCFF D.P.E. MÓDULO DE PROYECTOS 11


Configuración del Timer 2 en C
La configuración del Timer 2 en el compilador C se
realiza con la función
LOS TEMPORIZADORES

SETUP_TIMER_(mode, period,postcale)

Donde Mode puede ser uno de los siguientes valores:

T2_DISABLED : T2 desactivado
T2_DIV_BY_1: Preescaler con factor 1:1
T2_DIV_BY_1: Preescaler con factor 1:4
T2_DIV_BY_1: Preescaler con factor 1:16

CCFF D.P.E. MÓDULO DE PROYECTOS 12


Donde period es un entero de 8 bits 0-255 que se cargará
en PR2 , y determinará cuando se reseteará el Timer 2.
LOS TEMPORIZADORES

postscale es un número 1-16 que fija cuantas veces ha de


resetearse el timer antes de provocar una interrupción.

Ejemplo:
setup_timer_2 (T2_DIV_BY_4,0XC0,2);
//A MHz, el timer se incrementa cada 800ns,
//se producirá un overflow cada 153.6us
//y se generará una interrupción cada 307.2us
// T= 4Tosc*valor de preescaler*valor de PR2* valor postescaler
//T= 4* 0.05us *4 * 192* 2 = 307,2 us

CCFF D.P.E. MÓDULO DE PROYECTOS 13


Como hemos indicado anteriormente, el valor del Timer 2,
puede ser leído y escrito en cualquier instante, para ello
utilizaremos las funciónes:
LOS TEMPORIZADORES

valor=get_timer2() y set _timer2 (valor).

valor=get_timer2() ;
Esta función nos devolverá un entero de 8 bits en la
variable valor.
set _timer2 (valor); //valor es un entero de 8 bits

CCFF D.P.E. MÓDULO DE PROYECTOS 14

Você também pode gostar