Microcontroladores - Division de tiempos con PIC16f84

 
Vista:

Division de tiempos con PIC16f84

Publicado por Danilo (1 intervención) el 23/03/2009 07:09:44
Hola a todos. Estoy haciendo un reloj digital y necesito usar únicamente el PIC y los componentes asociados a este. Tengo un problema de que no se como usar el Timer0 del micro para generar un conteo de 1 segundo, la idea es no tener que usar una base de tiempos distinta al clock del PIC para el Timer0. Veo que este tiene un prescaler que divide el clock interno en una proporción de 1 con potencias de 2 1:(1,2,4,8,16,32,64,128,256). Haciendo cálculos de que cada aumento se da sin prescaler cada 1(μs)microsegundo y si ajustamos el prescaler al máximo es decir 1:256 (si no estoy mal es que por cada 256 pulsos de 1μs aumenta 1 TMR0) estaría aumentando en uno cada 256μs y desbordaría en 255 cada 65.55 microsegundos aproximadamente, lo cual no me serviría ya que necesito es que ocurra ya sea el desbordamiento (que me genera una interrupción) o un aumento en TMR0 cada 1 segundo (1Hz). La fácil es usar un oscilador de 1Hz externo como un 555 y ajustar el Timer0 al aumento según el clock externo, las exigencias del diseño no me permiten hacer la vía fácil del oscilador externo.
Gracias, espero sus respuestas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Division de tiempos con PIC16f84

Publicado por Guillermo (40 intervenciones) el 25/03/2009 12:40:48
depende de la precision que quieras tener,
si pensas usar el cristal como base de tiempo, calculo que tenes uno de 4mhz,
con el tiempo el reloj se va a desfazar un poco...
ahora si lo queres para probar como projecto, o para controlar tiempos cortos podes hacer lo siguiente:

imaginate esto, tenes el tmr0 sin prescaler, entonces tmr0 incrementa cada 1us, por lo tanto cada 256us interrumpe, esto sucede cuando tmr0 pasa de 255 a 0, hay un overflow e interrumpe.
Ok, ahora imaginate que vos queres interrumpir cada 200us, como haces?
bueno, justo cuando interrumpe, es decir donde vos atendes la interrupcion, cargas el tmr0 con 56, entonces sabes que hasta el proximo overflow pasaran solo 200us, y no 256us como al principio, a esto se le llama hacer una precarga a un timer.

en base a esto, configura el prescaler como mas te convenga, y luego, en la interrupcion hace la precarga, con el valor que consideres, proba y simula si es necesario.

saludos
guillermo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Division de tiempos con PIC16f84

Publicado por veneno (4 intervenciones) el 31/08/2009 14:15:11
ukrbhtyl, tuhjnr56ij
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Division de tiempos con PIC16f84

Publicado por Jesus Rebolledo (6 intervenciones) el 11/05/2009 21:38:34
Hola por que no programas usando delay con lenguaje c?¿? ese reloj puede ser realizado utilizando ese mismo pic pero programandolo con C
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Division de tiempos con PIC16f84

Publicado por Francoroldan (1 intervención) el 11/02/2011 05:57:09
Yo preciso un reloj para saber que eventos ocurren y en que horario en un datalogger, pero se me complica con el tema de la base de tiempos :(... alguien me podria ayudar, otro conflicto es que mi pic solo tiene timer 0 y es de lo mas pequeño (8patillas..) :), poruqe el sistema tiene que caber el una ciruela :)...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar