Documente Academic
Documente Profesional
Documente Cultură
Microcontroladores, PIC,
Arduino, Raspberry PI
El PIC18F4550 posee cuatro temporizadores: TIMER0 a TIMER3, al igual que los demás
módulos especiales, cada uno de los temporizadores es controlado por un registro de
configuración.
TIMER0 T0CON
TIMER1 T1CON
TIMER2 T2CON
TIMER3 T3CON
Prescaler dedicado de 8 bits: el timer incrementa el valor del conteo cada Fosc / 4
pulsos de reloj. Para un microcontrolador que opera a 20Mhz, significa que el
incremento se realiza 5 millones de veces en un segundo. Esta cantidad puede ser
demasiado alta para ciertas aplicaciones en donde las bases de tiempo son bastante
grandes. Para solucionar este inconveniente, se dispone del prescaler que es
básicamente un divisor de frencuencia, la frecuencia se puede dividir entre: 2, 4,
8, 16, 32, 64, 128 y 256.
Fuente de reloj seleccionable (interna / externa).
Interrupción por desbordamiento: cada vez que el valor del conteo llega a su
límite se genera un desbordamiento (overflow) que genera una interrupción interna
que activa el bit TMR0IF del registro INTCON.
Observe como se utiliza una variable tipo char Timer0Config para almacenar la
configuración de timer0. Posteriormente el valor de la variable se pasa como
argumento del método OpenTimer0. La configuración establecida se lee: Interrupción
activada, modo de operación de 16 bits, señal de reloj interna y, prescaler de 1:256.
Timer: 1 segundo
Fosc: 48MHZ
Procedimiento:
1 #include <xc.h>
2 #include <plib/timers.h>
3
4 //Bits de configuración para Fosc = 48Mhz
5 #pragma config PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 2
6 #pragma config FOSC = HSPLL_HS, FCMEN = OFF, IESO = OFF
7 #pragma config PWRT = OFF, BOR = OFF, VREGEN = OFF
8 #pragma config WDT = OFF, WDTPS = 32768
9 #pragma config MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
10 #pragma config STVREN = ON, LVP = OFF, ICPRT = OFF, XINST = OFF
11
12 #define _XTAL_FREQ 48000000
13 unsigned char Timer0Config;
14 void main()
15 {
16 TRISBbits.RB4 = 0; //RB4 es salida.
17 LATB4 = 1; //Poner RB4 4n uno.
18
19 Timer0Config = TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_256;
20 OpenTimer0(Timer0Config);
21 WriteTimer0(0x48E4);
22
23 INTCONbits.TMR0IF = 0; //inicializar la bandera de interrupción
24
25 ei();
26
27 while(1)
28 {}
29 }
30
31 void interrupt TimerOverflow()
32 {
33 if(INTCONbits.TMR0IF == 1)
34 {
35 LATB4 = ~LATB4; //Cambiar el estado de RB4
36 INTCONbits.TMR0IF = 0;
37 WriteTimer0(0x48E4);
38 }
39
40 }
Conclusiones
Existen otros métodos para implementar timers. Sin embargo, se ha descrito este
procedimiento ya que lo considero mas sencillo que los demás, aunque tiene como
desventaja que no se profundiza en el funcionamiento del módulo, lo cual es esencial
para aplicaciones mas complejas. A todo interesado en este tema lo invito a
implementar su temporizador con estos valores de ejemplo y posteriormente hacer
modificaciones.
En el siguiente post, utilizaremos el timer2 para hacer funcionar el módulo PWM del
PIC18F4550. Un saludo.
Compártelo:
Facebook
Twitter
Google
Correo electrónico
Pinterest
WhatsApp
Imprimir
LinkedIn
Reddit
Tumblr
Pocket
Telegram
Skype
Me gusta:
Me gusta
Sé el primero en decir que te gusta.
Relacionado
Acerca de jjguevara09
Me gusta la electrónica
Ver todas las entradas por jjguevara09 →
Esta entrada fue publicada en Microcontroladores PIC y etiquetada PIC18, PIC18F4550, timer0, timers, TMR0IF. Guarda el enlace
permanente.
Antonio dijo:
septiembre 22, 2016 en 5:29 pm
que tal buen post, tengo una pregunta espero puedas ayudarme, lo que quiero realizar es
enviar un unico pulso en estado alto que tiene una duracion de 500ms para activar un
dispositivo se puede hacer mediante estas interrupciones?
Me gustaMe gusta
Responder
jjguevara09 dijo:
septiembre 23, 2016 en 4:18 pm
Me gustaMe gusta
Responder
Muy excelente el tutorial, me ayudo mucho en mis aprendizajes de timer0, le felicito por
postear dicho material, pero veo que no esta actualizando sus post. con mas temas.
Espero que actualice con mas información. gracias y salu2.
Me gustaMe gusta
Responder
Seguir
Personalizar
Seguir
Registrarse
Acceder
Copiar enlace corto
Denunciar este contenido
Gestionar las suscripciones
Contraer esta barra
Seguir
Personalizar
Seguir
Registrarse
Acceder
Copiar enlace corto
Denunciar este contenido
Gestionar las suscripciones
Contraer esta barra