microcontroladores pic

Anuncio
LOS TIMER DE LOS 16F87x
MICROCONTROLADORES PIC
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
LOS TEMPORIZADORES
INTRODUCCIÓN
El TIMER2 es un temporizador ascendente de 8 bits, con
preescaler y postescaler.
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
LOS TEMPORIZADORES
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
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
LOS TEMPORIZADORES
La temporización total se calcula con la siguiente expresión:
T= 4Tosc*valor de preescaler*valor de PR2* valor postescaler
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
LOS TEMPORIZADORES
El preescaler y el postescaler, se ponen a cero cuando
sucede alguno de los siguiente eventos:
• 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
LOS TEMPORIZADORES
Salida De TMR2
La salida de TMR2 (antes del postescaler), puede utilizarse
como reloj de desplazamiento en el módulo SSP
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
LOS TEMPORIZADORES
Registros Asociados Con El
Contador/Temporizador TIMER2
CCFF D.P.E. MÓDULO DE PROYECTOS
8
LOS TEMPORIZADORES
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.
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
LOS TEMPORIZADORES
TMR2ON: Bit de activación del TIMER2
9 0: Desactiva el TIMER2 (valor por defecto)
9 1: Habilita el funcionamiento del TIMER2
• 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
0 0
0 0
0 0
0 0
. .
1 1
1 1
0 0
0 1
1 0
1 1
. .
1 0
1 1
Valor del preescaler
1:1
1:2
1:3
1:4
………
1:15
1:16
Bit 7 Bit no implementado se lee como “0”.
10
LOS TEMPORIZADORES
Las Interrupciones En El TIMER2
Este modo de funcionamiento se selecciona poniendo a “0”
el bit TMR1CS (T1CON<1>).
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
LOS TEMPORIZADORES
Configuración del Timer 2 en C
La configuración del Timer 2 en el compilador C se
realiza con la función
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
LOS TEMPORIZADORES
Donde period es un entero de 8 bits 0-255 que se cargará
en PR2 , y determinará cuando se reseteará el Timer 2.
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
LOS TEMPORIZADORES
Como hemos indicado anteriormente, el valor del Timer 2,
puede ser leído y escrito en cualquier instante, para ello
utilizaremos las funciónes:
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
Descargar