Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguaje C- CC5x-Temporizadores
Preparado por : Juan Ignacio Huircn
Departamento de Ingeniera Elctrica
Universidad de La Frontera
Otoo 2009
Introduccin
El C posee 3 Mdulos Timer, llamados:
TMR0
TMR1
TMR2
Aplicaciones de C
Timer 0
Es un Timer/counter de 8 bit
Selector de clock interno o externo
Interrupcin de overflow de FFh a 00h
Preescalar de 8 bit configurable por software
Seleccin del canto para clock externo
Aplicaciones de C
Timer
Aplicaciones de C
Aplicaciones de C
Carga Inicial
clock
Timer
Aplicaciones de C
Carga Inicial
clock
Timer
Aplicaciones de C
Carga Inicial
0xFD
clock
Timer
Aplicaciones de C
Carga Inicial
0xFE
clock
Timer
Aplicaciones de C
Carga Inicial
0xFF
clock
Timer
Aplicaciones de C
Carga Inicial
0x00
clock
Timer
Aplicaciones de C
Carga Inicial
0x00
clock
Timer
Aplicaciones de C
Que es un preescalar?
Es un mecanismo por el cual pasa previamente el clock antes de
ingresar al Timer, donde es divido. Por lo general por una potencia de 2
Divisor por 2
clock
Pre-escalar
Timer
Aplicaciones de C
Que es un preescalar?
Es un mecanismo por el cual pasa previamente el clock antes de
ingresar al Timer, donde es divido. Por lo general por una potencia de 2
Divisor por 4
clock
Pre-escalar
Timer
Aplicaciones de C
PIN RA4
/T0CK
M
U
X
T0SE
TMR0 Reg
T0CS
PSA
Watchdog
Timer
WDT Enable
bit
M
U
X
Preescalar
PSA
MUX
WDT timeout
PSA
Aplicaciones de C
Registros Involucrados
OPTION (En el manual aparece como OPTION_REG)
INTCON
Procedimiento
Se debe configurar la operacin del mdulo en el registro
OPTION
Se debe configurar el registro INTCON para habilitar las
interrupciones
Aplicaciones de C
Registro OPTION
RBPU
INTEDG
T0CK
T0SE
PSA
PS2
PS1
PS0
Registro OPTION
RBPU
INTEDG
T0CK
T0SE
PSA
PS2
PS1
Clock interno
PS0
Registro OPTION
RBPU
INTEDG
T0CK
T0SE
PSA
PS2
PS1
PS0
Registro OPTION
RBPU
INTEDG
T0CK
T0SE
PSA
PS2
PS1
PS0
Registro OPTION
RBPU
INTEDG
T0CK
T0SE
PSA
PS2
PS1
1:2
001
1:4
010
1:8
011
1:16
100
1:32
101
1:64
110
1:128
111
1:256
PS0
Registro INTCON
GIE
PEIE
TMR0IE
INTIE
RBIE
TMR0IF
INTIF
RBIF
Registro INTCON
GIE
PEIE
TMR0IE
INTIE
RBIE
TMR0IF
INTIF
RBIF
Registro INTCON
GIE
PEIE
TMR0IE
INTIE
RBIE
TMR0IF
INTIF
RBIF
Registro INTCON
GIE
PEIE
TMR0IE
INTIE
RBIE
TMR0IF
INTIF
RBIF
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
T0CS
Watchdog
Timer
Preescalar
PSA
TMR0 Reg
PSA
WDT Enable
bit
MUX
WDT time-out
PSA
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
0
Watchdog
Timer
Preescalar
TMR0 Reg
WDT Enable
bit
MUX
WDT time-out
0
RBPU
INTEDG
T0SE
PS2
PS1
PS0
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
0
Watchdog
Timer
Preescalar
TMR0 Reg
WDT Enable
bit
MUX
WDT time-out
0
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
Preescalar
TMR0 Reg
RBPU
INTEDG
T0SE
PS2
PS1
PS0
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
Preescalar
TMR0 Reg
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
TMR0 Reg
1:2
RBPU
INTEDG
T0CS
T0SE
PSA
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
TMR0 Reg
1:4
RBPU
INTEDG
T0CS
T0SE
PSA
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
TMR0 Reg
1:8
RBPU
INTEDG
T0CS
T0SE
PSA
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
TMR0 Reg
1:16
RBPU
INTEDG
T0CS
T0SE
PSA
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
TMR0 Reg
1:32
RBPU
INTEDG
T0CS
T0SE
PSA
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
TMR0 Reg
1:64
RBPU
INTEDG
T0CS
T0SE
PSA
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
TMR0 Reg
1:128
RBPU
INTEDG
T0CS
T0SE
PSA
Aplicaciones de C
M
U
X
PIN RA4
/T0CK
M
U
X
T0SE
M
U
X
TMR0 Reg
1:256
RBPU
INTEDG
T0CS
T0SE
PSA
Aplicaciones de C
Interrupciones
Es el mecanismo ms eficiente para atender los perifricos.
Permite generar temporizacin ms precisa.
Las fuentes pueden ser distintas
Los Clock internos
Seales externas tales como INT u otros bits definidos
Perifricos internos de uC tales como la UART o el ADC o el PWM
Aplicaciones de C
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Programa
Principal
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Programa
Principal
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Programa
Principal
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Programa
Principal
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Perifrico
Programa
Principal
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Perifrico
Programa
Principal
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Perifrico
Programa
Principal
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Perifrico
Programa
Principal
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Perifrico
Programa
Principal
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Perifrico
Programa
Principal
Aplicaciones de C
Funcionamiento General
Rutina de
Servicio de
Interrupcin
interrupcin
Perifrico
Programa
Principal
Aplicaciones de C
Aplicaciones de C
Aplicaciones de C
/* reset flag */
}
if(INTF) {
INTF=0;
}
if(ADIF)
{
ADIF=0;
}
int_restore_registers // W, STATUS (and PCLATH)
}
Aplicaciones de C
Esquema de programa
#include "int16CXX.H"
#pragma origin 4
interrupt rsi(void)
{
// codigo
}
void
{
//
//
//
main()
Config. Puertos I-O
Config. Timer
Config. Interrupciones
if ( T0IF) {
/* TMR0 overflow interrupt */
TMR0 = 128;
if(PORTB.0==0) PORTB.0=1;
else PORTB.0=0;
T0IF = 0;
/* reset flag */
}
int_restore_registers // W, STATUS (and PCLATH)
}
Aplicaciones de C
void main()
{
//
TRISB.0=0;
PORTB.0=1;
//Programacin del TMR0
OPTION.5=0;
OPTION.3=0; // PSA=0;
OPTION.2=0; // PS2=0;
OPTION.1=0; // PS1=0;
OPTION.0=0; // PS0=0;
TMR0=128;
// Carga inicial del Timer
INTCON.5=1; //TMR0IE=1;
GIE=1;
// INTCON.7=1;
while(1)
{
}
}
Aplicaciones de C
Timer 1
El Timer1 es un mdulo de Temp/cont de 16 bits que tiene 2 registros de
lectura y escritura TMR1H y TMR1L.
El registro formado por ambos TMR1H:TMR1L
0000h a FFFFh.
se incrementa desde
Aplicaciones de C
TMR1
TMR1H
TMR1L
TMR1ON
RC0
Pre-scaler
RC1
Clock ext
Fosc/4
T1OSCEN
T1CKPS1:T1CKPS0
TMR1CS
Registros Involucrados
T1CON
T1CKPS1
T1CKPS0
T1OSEN
T1SYNC
TMR1CS TMR1ON
T1CON
T1CKPS1
T1CKPS0
1:1
1:2
1:3
1:4
T1OSEN
T1SYNC
Preescalar
TMR1CS TMR1ON
T1CON
T1CKPS1
Selecciona fuente de
clock externo
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS TMR1ON
T1CON
T1CKPS1
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS TMR1ON
T1CON
T1CKPS1
Seleccin de la fuente de
clock
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS TMR1ON
T1SYNC
TMR1
TMR1H
TMR1L
TMR1ON
RC0
Pre-scaler
RC1
Clock ext
Fosc/4
T1OSCEN
T1CKPS1:T1CKPS0
TMR1CS
T1SYNC
TMR1
TMR1H
TMR1L
TMR1ON
RC0
Pre-scaler
RC1
Clock ext
Fosc/4
T1OSCEN
T1CKPS1:T1CKPS0
TMR1CS
T1CKPS1
T1CKPS0
T1OSEN
T1SYNC
TMR1CS
TMR1ON
T1SYNC
TMR1
TMR1H
TMR1L
TMR1ON
RC0
Pre-scaler
RC1
Clock ext
Fosc/4
T1OSCEN
T1CKPS1:T1CKPS0
TMR1CS
T1CKPS1
T1CKPS0
T1OSEN
T1SYNC
TMR1CS
TMR1ON
T1SYNC
TMR1
TMR1H
TMR1L
TMR1ON
RC0
Pre-scaler
RC1
Clock ext
Fosc/4
T1OSCEN
T1CKPS1:T1CKPS0
TMR1CS
T1CKPS1
T1CKPS0
T1OSEN
T1SYNC
TMR1CS
TMR1ON
T1SYNC
TMR1
TMR1H
TMR1L
TMR1ON
RC0
Pre-scaler
RC1
Clock ext
Fosc/4
T1OSCEN
T1CKPS1:T1CKPS0
TMR1CS
T1CKPS1
T1CKPS0
T1OSEN
TMR1ON
TMR1
TMR1H
TMR1L
TMR1ON
RC0
Pre-scaler
RC1
Clock ext
Fosc/4
T1OSCEN
T1CKPS1:T1CKPS0
T1CKPS1
T1CKPS0
T1OSEN
TMR1ON
TMR1
TMR1H
TMR1L
TMR1ON
RC0
Pre-scaler
RC1
Clock ext
Fosc/4
T1OSCEN
T1CKPS1:T1CKPS0
T1CKPS1
T1CKPS0
T1OSEN
TMR1ON
TMR1
TMR1H
TMR1L
TMR1ON
RC0
Pre-scaler
RC1
Clock ext
Fosc/4
T1OSCEN
T1CKPS1:T1CKPS0
T1CKPS1
T1CKPS0
T1OSEN
TMR1ON
TMR1
TMR1H
TMR1L
TMR1ON
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
T1OSEN
TMR1ON
TMR1
TMR1H
TMR1L
TMR1ON
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
T1OSEN
TMR1ON
TMR1
TMR1H
TMR1L
TMR1ON
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
T1OSEN
TMR1
TMR1H
TMR1L
1
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
T1OSEN
TMR1
TMR1H
TMR1L
1
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
TMR1
TMR1H
TMR1L
1
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
TMR1
TMR1H
TMR1L
1
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
TMR1
TMR1H
TMR1L
1
0x0000
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
TMR1
TMR1H
TMR1L
1
0x0001
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
TMR1
TMR1H
TMR1L
1
0xFFFD
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
TMR1
TMR1H
TMR1L
1
0xFFFE
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
TMR1
TMR1H
TMR1L
1
0xFFFF
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
TMR1
TMR1H
TMR1L
1
0x0000
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0
TMR1IF=1
TMR1
TMR1H
TMR1L
1
0x0000
RC0
1:1
RC1
Clock ext
Fosc/4
T1OSCEN
0 0