Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Como temporizador
Para temporizar una entrada evento
Tiempo Inicio
Tiempo Paro
TMR0
0 0 0 0 0 0 1 0 1 0 1
TIMER0
Tamao de registro Fuente de reloj (Internal) Fuente de reloj (External ) Divisor de reloj disponible (Resolution) Interrupin y flags Puede despertar el PIC de modo Sleep? 8-bits
(TMR0)
TIMER1
16-bits
(TMR1H:TMR1L)
TIMER2
8-bits
(TMR2)
Fosc/4
(instruction clock)
Fosc/4
(instruction clock)
Fosc/4
(instruction clock)
T0CKI pin
None Prescaler (1:1,1:4,1:8) Postscaler (1:11:16) TMR2 matches PR2 (TMR2IF in PIR2) NO
Bus de datos
Fosc/4
sinconizacin
T0CKI pin
Clock escalado
TMR0
PS2 PS1 0 0 1 1 0 0 PS0 0 1 0 1 0 1 TMR0 RATE 1:2 1:4 1:8 1:16 1:32 1:64
Watchdog Timer
prescaler
WDT out
0 0
Registro OPTION
RBPU INTEDG TOCS TOSE
PSA
PS2
PS1
PS0
0 0
Bits de seleccion de Prescaler Asignacin de prescaler TMR0 Clock Seleccin fuente de reloj
1 = TOCK1, 0 = Fosc/4
1 1
1
1
1
1
0
1
1:128
1:256
Bus de datos
Fosc/4
sincronizacin
T0CKI pin
Clock escalado
TMR0
Watchdog Timer
prescaler
WDT out
Registro INTCON
0 1
TMR0IF
Si la fuente de reloj externa (TOCKI) es usada esta sera sincronizada al reloj interno Timer0 se puede leer y escribir El flag de interrupcin por Timer0 es puesta en 1 cuando el Timer0 se desborda (pasa de valor FF a 00)
TMR0 0 0 1 1 INTCON
Incremento Timer0 0 1 0 1 0 1 0 1 1 0 1 0
0 TMR0IE
0 1 TMR0IF
Esta bandera de int. es seteada cuando hay /*Configuramos OPTION_REG para que Timer0 desbordamiento aun si la int. Se incremente con reloj interno y use esta deshabilitada Prescaler de 1:16*/ OPTION_REG OPTION = 0b00000011;
/*La int. TMR0 esta deshabilitada, Checamos constantemente el flag de desb. while (!T0IF); <continue>
0
TOCS
0
PSA
PS<2:0>
Asignacin de prescaler (WDT or TMR0)
Prescaler value = 1:16
T1OSI T1OS0
T1 OSC
prescaler
Fosc/4
sincronizacin
T1CKI pin
TMR1H
TMR1L
Habilitado
TMR1ON
T1SYNC TMR1CS TMR1ON
Timer1 On
Habilitacion Osc. LP
1 = T1OSC selected 0 = T1CKI can be used 1 = External (T1CKI) 0 = Internal (FOSC/4) 1 = Habilitado
Nuevos dispositovos tienen hasta dos registros de control para el timer1 checar datasheet.
T1OSI T1OS0
T1 OSC
prescaler
Fosc/4
Sincronizacin
T1CKI pin
TMR1H
TMR1L
Habilitado
TMR1ON
Timer1 Gate Enable and Timer1 Gate Invert are available on some devices
1 = no sincroniza con reloj externo 0 =sincroniza entrada dereloj externo con el reloj interno (Fosc/4)
TMR1L TMR1H 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
void main (void) funcin { //Limpia la bandera de interrupcin TMR1IF = 0; //Habilita interrupcion por TIMER1 TMR1IE = 1; //Habilita la interrupcin global //y por periferico PEIE = 1; GIE = 1; }
Desbordamienro setea el flag e inicia la
PIR1
0 1 TMR1IF
PIE1
1 TMR1IE
INTCON
1 1
GIE PEIE
//Limpiamos registros TMR1 TMR1H = 0X00; TMR1L = 0X00; //Aseguramos que el flag TMR1IF //esta en 0 TMR1F = 0; en PIR1
TMR1H 0 1 0 1 0 1 TMR1L 0 1 0 1 0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
1 0
/*Configuramos registro T1CON para usar Reloj interno con prescaler 1:8*/ T1CON = 0b00110000;
//Comenzamos a incrementar Timer1 TMR1ON = 1; 0 //La interrupcin de TMR1 esta //Deshabilitada, checamos el estado de //la bandera de desbordamiento Input clock while(!TMR1IF); //Continua
TMR2
Fosc/4
COMPARATOR PR2
Timer2 Control Register (T2CON)
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
T2CKPS1
0 0 1
TMR2 salida
TMR2 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 COMPARATOR
Postscaler 1:1 1:16
PR2 1 1 1 1 1 0 0 0
PIR1 1
TMR2IF
Incrementing
/*Desabilitar interrupcion Timer2 en PIE1. Asegurar que la bandera de interrupcin en PIR1 sea 0*/ TMR2IE = 0; TMR2IF = 0; /*Configurar T2CON para: Postscaler = 1:15 Prescaler = 1:16 Timer2 esra apagado */ T2CON = 0b01110010; //Asegurar que TMR2 es igual a 0 TMR2 = 0X00; //Cargar registro de periodo PR2 = 0b10000000; //Comienza a incrementarse Timer2 TMR2ON = 1; //La int. Timer2 esta desabilitada //checamos el estado de la bandera. while(!TMR2IF);
0 1
1 0 0
PIE1 (Peripheral Interrupt Enable) 0 TMR2IE PIR1 (Peripheral Interrupt Request) 1 0 TMR2IF Flag is set T2CON (Timer2 Control) 0 1 1 1 0 0 1 1 0