Está en la página 1de 4

Objetivos de la Clase

Timer 1 & Timer 2 • Implementar aplicaciones con base en las


interrupciones de los TIMER 1 y TIMER 2.
• Revisar las características de catalogo
de los TIMER 1 y TIMER 2.

Prof.: Carlos H Cruz V. 1 Prof.: Carlos H Cruz V. 2

El Timer 1 (TMR1) Diagrama de Bloques del TMR1


• El TMR1 es un contador ascendente de 16 bits, compuesto
por la concatenación de dos registros de 8 bits: • Se muestra en la figura 6.2 (Pág. 60), en éste se observa:
TMR1H:TMR1L. 1. El desborde del TMR1 activa el TMR1IF, su flag de IRQ.
• Produce una petición de interrupción al desbordarse (paso 2. El TMR1ON Arranca/Para la cuenta del TMR1.
de FFFFH a 0000H). Su flag de IRQ es el TMR1IF 3. El /T1SYNC controla la sincronización del reloj externo.
(PIR1<0>).
4. El prescaler es un divisor cuyo rango (1, 2, 4, 8) se selecciona
• Opcionalmente se puede reiniciar desde los módulos CCP. con los bits T1CKS1:T1CKS0. El prescaler se borra con la
escritura del TMR1.
• El TMR1 puede trabajar en tres modos: Temporizador,
Contador síncrono y Contador asíncrono. 5. El TMR1CS configura el TMR1 como Contador /Temporizador.
• En la tabla 6.2 (Pág. 62) se observan los registros 6. El T1OSCEN Habilita/Inhabilita el oscilador del TMR1.
asociados al TMR1. • Los últimos seis bits pertenecen al registro T1CON. (Pág 59)

Prof.: Carlos H Cruz V. 3 Prof.: Carlos H Cruz V. 4

TMR1 en modo Contador Síncrono


TMR1 en modo Contador Asíncrono:
• El TMR1 se configura como contador con TMR1CS = 1.
• El incremento del TMR1 se produce en los flancos positivos de: • El TMR1 se configura como contador con TMR1CS = 1.
1. La señal externa T1CKI. En este caso se debe inhabilitar el • Si /T1SYNC = 1, el reloj externo de entrada NO se
T1OSC (T1OSCEN = 0).
sincroniza con respecto a la fase de reloj interno, y el
2. La señal del oscilador T1OSC. En este caso se debe habilitar el TMR1 se incrementará asincrónicamente.
T1OSC (TIOSCEN = 1)
• Si /T1SYNC = 0, el reloj externo se sincroniza con la fase del reloj • El TMR1 continuará corriendo durante el modo SLEEP y
interno. La señal a sincronizar se toma después del prescaler. puede generar una petición de interrupción, la cual,
despertará el procesador.
• En esta configuración, durante el modo SLEEP, el TMR1 no se
incrementará incluso si el reloj externo está presente, ya que el • En modo de contador asíncrono, el TMR1 NO se puede
circuito de sincronización está apagado. El prescaler, sin embargo, usar como una base de tiempo para las operaciones de
continuará incrementándose. captura o comparación.
Prof.: Carlos H Cruz V. 5 Prof.: Carlos H Cruz V. 6

1
Oscilador del Timer 1: OSCT1
TMR1 en modo Temporizador
• La familia PIC16F87X tienen implementado un circuito oscilador
entre los pines T1OSI y T1OSO, que se habilita si T1OSCEN = 1.
Si T1OSCEN = 0, el inversor se apaga y NO consume energía. • Este modo se selecciona con TMR1CS = 0. (Ver
figura 6.2, Pág. 60: diagrama de bloques del TMR1).
• Requiere un cristal externo de baja frecuencia (LP) de hasta 200
KHz, idealmente 32 KHz. La tabla 6.1 (Pág. 61) muestra las • Como temporizador, el TMR1 se incrementa con
capacitancias requeridas con cristales de 32, 100 y 200 KHz. cada ciclo de máquina (cada 4 TCLK).
• El circuito oscilador continuará funcionando en modo SLEEP. • En este modo el /T1SYNC no tiene efecto porque el
reloj interno siempre está sincronizado.
• El usuario debe implementar un retardo por software para
asegurar el adecuado arranque del oscilador.

Prof.: Carlos H Cruz V. 7 Prof.: Carlos H Cruz V. 8

Temporización del TMR1


• De la arquitectura del TMR1 se deduce que su
Ejercicios
temporización se puede calcular:
TT1 = 4· Tclk· C· RD • Si la frecuencia de reloj es 4 MHz.

• Donde: 1. Calcular la temporización máxima del TMR1.


• C: Cuenta del TMR1 (1 a 216) 2. Diseñar el TMR1 para temporizar 0.3 s.
• RD: Rango del prescaler (1, 2, 4, 8)
• El Valor Inicial (VI) del TMR1 (TMR1H:TMR1L) es el
complemento a dos de la cuenta.

Prof.: Carlos H Cruz V. 9 Prof.: Carlos H Cruz V. 10

Ejemplo 1. Diseño
• Se quiere diseñar una aplicación que ejecute las
siguientes tareas, si FCLK = 4 MHz:
• T1: Un lazo infinito. Esta es la tarea principal.
• T2: Conmutar el estado de D cada 0.3 s.

Inicializaciones:
• Configurar RB6 como salida
• Configurar e inicializar el TMR1
• Habilitar la interrupción
• Definir el estado inicial de D
Prof.: Carlos H Cruz V. 11 Prof.: Carlos H Cruz V. 12

2
;************** Rutina de Interrupción ********

2. Código ASM 1/3 ORG 04H ;Vector de interrupciones 2/3


MOVWF TEMPW ;Salva el estado
MOVF STATUS, W ;del procesador
; Ejecuta dos tareas:
MOVWF TEMPS
; T1: Un lazo infinito. Esta es la tarea principal. BTFSS PIR1, TMR1IF ;Consulta IRQ
; T2: Conmuta el estado de RB6 con cada 0,3 s. GOTO RETORNO
; Codificado por: Carlos Héctor Cruz Vergara MOVLW H'84' ;Reinicia TMR0
;************************************************* MOVWF TMR1L
#include P16F877.INC MOVLW H'6D'
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF ; MOVWF TMR1H
MOVLW B'01000000'
TEMPW EQU 20H ;Temporal W XORWF PORTB, F ;Complementa LED
TSTATUS EQU 21H ;Temporal STATUS BCF PIR1, TMR1IF ;Repone IRQ
;************************************ RETORNO:
ORG 0x0000 ;Vector de Reset MOVF TEMPS, W ;Recupera estado
GOTO INI CONTINUA… MOVWF STATUS ;del procesador
MOVF TEMPW, W
RETFIE CONTINUA…
Prof.: Carlos H Cruz V. 13 Prof.: Carlos H Cruz V. 14

;********** Programa principal ********** 3/3 2. Codificación en C


INI: BSF STATUS, RP0 ;Activa banco 1
BCF STATUS, RP1 #include <htc.h>
BSF PIE1, TMR1IE #define LED RB6
__CONFIG(FOSC_XT & WDTE_OFF & PWRTE_ON & LVP_OFF);
MOVLW B'10111111' ;Configura: RB6 de salida
MOVWF TRISB void main(void){
TRISB = 0B10111111; //Configura RB6 de salida
BCF STATUS, RP0 ;Activa banco 0 T1CON = 0B00110011;
MOVLW B'00110001' ;Configura TMR1 INTCON |= 0B11000000;
MOVWF T1CON TMR1IE = 1;
MOVLW B'11000000' ; Habilita Int del TMR1 LED = 0; // Enciende D
MOVWF INTCON while(1); // Tarea 1
}
MOVLW B'01000000'
static void interrupt Interrupciones(void){
MOVWF PORTB ;Inicia LED encendido if(TMR1IF){ // Tarea 2
PPAL: NOP ; Tarea 1 TMR1 = -37500;
GOTO PPAL LED = ~LED; // Conmuta D
;************************************ TMR1IF = 0; // Repone bandera de IRQ
}
END }
Prof.: Carlos H Cruz V. 15 Prof.: Carlos H Cruz V. 16

El Timer 2 (TMR2)
• El TMR2 es un contador ascendente de 8 bits con pre-escalador y pos-
escalador, que sólo se puede configurar en modo temporizador (NO
soporta el modo contador).
• El TMR2 no pierde su temporización, en consecuencia, no hay que
inicializarlo en su ISR.
• Genera la base de tiempo de los módulos CCP en modo PWM.

¿Preguntas? • Su registro de configuración es el T2CON (Pág. 63).


• Su diagrama de bloques se muestra en la Figura 7.1 (Pág. 63), en el cual
se observa:
1. Su entrada de reloj (Fosc/4) se aplica a través del prescaler, cuyo
rango (1, 4, 16) se define con T2CKPS1:T2CKPS0.
2. El TMR2 se compara con el PR2 (Registro de Periodo); cuando
TMR2 = PR2 se resetea y reinicia su cuenta.
CONTINUA…
Prof.: Carlos H Cruz V. 17 Prof.: Carlos H Cruz V. 18

3
3. La salida del TMR2:
a. Se aplica opcionalmente al módulo SSP
(Synchronous Serial Port) como pulsos de
Temporización del TMR2
corrimiento.
• De la arquitectura del TMR2 se deduce que su
b. Se aplica a un post-escalador de 4 bits, cuyo rango temporización se calcula:
se define con los 4 bits T2OUTPS3:T2OUTPS0. El
desbordamiento del post-escaler activa el TMR2IF TT2 = 4· Tclk· RD1· C· RD2
(flag de IRQ del TMR2).
• Donde:
• El TMR2 se apaga si TMR2ON = 0, esto evita su • RD1: Rango del prescaler (1, 4, 16)
consumo de energía cuando NO se usa. Este es su • C: Cuenta del TMR2 = PR2 (1 a 255)
estado por defecto. • RD2: Rango del posescaler (1, 2, 3, …16)
• La Tabla 7.1 (Pág. 64) muestra los registros asociados
al TMR2.
Prof.: Carlos H Cruz V. 19 Prof.: Carlos H Cruz V. 20

Ejercicios
1. Si la FCLK = 4 MHz:
a) Calcular la temporización máxima del TMR2.
b) Diseñar el TMR2 para temporizar 30 ms. (inicializar
¿Preguntas?
los registros asociados al TMR2).

2. Si la FCLK = 12 MHz., diseñar el TMR2 para temporizar


65 ms.

Prof.: Carlos H Cruz V. 21 Prof.: Carlos H Cruz V. 22

Taller
• Diseñar un programa estructurado para el PIC16F877A que
controle las siguientes tareas, si FCLK = 8 MHz:

• T1: Que genere por un puerto el efecto “RESORTICO L5.2”


infinitamente. Cada paso se mantiene en el puerto 0.5 s.

• T2: Que genere una señal rectangular con TH = 100 µs. y TL


= 250 µs. permanentemente.

• T3: En el instante que se accione un pulsador se debe


encender un LED durante 2 s., al cabo de este tiempo se
apaga automáticamente.

• T4: Un lazo infinito

Prof.: Carlos H Cruz V. 23

También podría gustarte