TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: Vanesa en 23 de Mayo de 2006, 13:44:06
-
Hola a todos!!
Alguien sabe como se puede realizar un retardo de un segundo para una interrupción del timer 0?? Es decir, que se desborde cada segundo para que me incremente un contador... Es que con el reloj de 4 Mhz que utilizo y el mayor preescaler (256) como que no llega...
Gracias!! :lol:
-
Hola una forma de lograrlo es con un cristal de 32.768 khz ( de reloj) el presc. a 32, pero tenes un tiempo de inst. algo lento dependiendo la aplicacion que sea
-
Muchas gracias MSK por tu respuesta. Está claro que con un reloj de menor frecuencia conseguiré un tiempo mayor para generar el retardo pero es que necesito hacerlo con el cristal de 4MHz, aunque me parece que va a ser imposible. Es solo un añadido a un proyectillo que estoy haciendo así que se terminará quedando sin poner y listo, pero me picaba la curiosidad.
Es que también pueden hacerse preescalers o algo así con el wdt pero no sé muy bien como funciona. En fin, rezaré al patrón de los imposibles... jejeje
-
Bueno es posible agregando algo mas, por ejemplo que en cada int. del tmr0 incrementas otro contador hasta llegar a la cuenta correspondiente al segundo que buscas pero tambien hay que recargar el tmr0 (131) +125=256 1000000/32 (presc)/125 =250
cuando el contador este en 250 es 1 seg. simulalo si es correcto
-
Buenas,
Hombre está claro que para realizar un RTC lo mejor es un cristal de 32768 Hz por ser facilmente divisible por potencias
de 2. Ejemplo 2e15=32768.
Por lo tanto si dividimos la frecuencia por 2e15(32768) tenemos el requerido herzio.
A ver 4Mhz , tenemos internamente 1Mhz si se trata del oscilador principal :
si dividimos por 256 --> 1000000/256=3906,25 Hz ,en fin ya véis que tenemos decimales.
Si contamos con el TMR0 3906 pulsos, es decir: (es lo mismo)
- Multiplicamos el período por 3906
o - Dividimos la frecuencxia por 3906
tendremos 0,999936 s en fin casi un segundo, con un pequeño retraso. :?
-
Obviamente es posible hacer que cuente 1 segundo exacto(bueno, con mucha precision) en 4 mhz, pero deberias calcular muy bien los tiempos que le lleva hacer cada subrutina, pero como ser posible, lo es.
Saludos
-
Muchas gracias a todos por vuestra ayuda. Al final lo hemos hecho con un contador adicional como decía MSK y seguro que no da el segundo exacto (los microsegundos de retraso andarán por ahí) pero va bastante bien.
Gracias!
-
Hola si el problema es que cuando se carga el tmr0 se borra el prescaler, entonces te da 3.990 cada int. los 10us se pierden al borrar el prescaler, con el 2 contador a 251 mejora el error creo