Mi primer reloj de texto

De un modo sencillo, así es como cuento el tiempo
fx=3.276.800
fc=819.200
pre-escalado 16 sobre TMR0
200 interrupciones por segundo
ciclos de reloj disponibles entre interrupciones 4096, suficientes para el resto del programa.
cada 200 interrupciones se cuenta 1 segundo
El Timer 1 tiene un oscilador externo dedicado para RTC que, con un cristal de 32768 Hz genera un desborde cada 1 segundo.

Me parece que esto lo vienes tratando desde acá: Problema con circuito temporizador
 
Otra cosa, siempre podés usar un puerto como testigo para medir que tan precisa es la base de tiempo.
Si tuviera un contador de precisión, sí. Lo hago por estadística, es decir, cuanto se desvía en una semana, un mes ... etc. y de ahí calculo la corrección. Sin embargo, sigue pendiente el efecto de la temperatura (el horno).
Como patrón uso un reloj conectado por radio a DFC77.
 
¿De cuánto desvío hablamos para necesitar un contador de precisión y un horno para cristal? (existen los OCXO que tienen un calentador incluído, pero deben ser caros).

Insisto que siempre podés colgarte de la salida de un puerto y medir la interrupción en caso de seguir usando ese cristal de 3,2768MHz.
 
¿De cuánto desvío hablamos para necesitar un contador de precisión y un horno para cristal? (existen los OCXO que tienen un calentador incluído, pero deben ser caros).

Insisto que siempre podés colgarte de la salida de un puerto y medir la interrupción en caso de seguir usando ese cristal de 3,2768MHz.

Estamos hablando de un proyecto de hobbista, nada industrial, puesto que un reloj de cocina de IKEA, de 1,5 eur, resulta ser más exacto que el mío. Convertir un reloj de 1,5 eur en otra cosa más vistosa es otro proyecto distinto. Me bastaría tomar los impulsos de 1 seg. que generan esos relojes.

Hablo de memoria, digamos unos segundos a la semana.

- El contador (*) sería para ajustar la frecuencia del cristal,
- el horno para evitar la deriva térmica.

En las hojas de los cristales, tienes unas gráfica del valor nominal (error fijo) y de la variación con la temperatura (variable).

(*) digo contador para decir frecuencímetro ...
 
Última edición:
Lo que hice en su momento es usar un osciloscopio y la salida de un puerto del uC para medir la frecuencia del cristal, en tu caso podés medir la base de tiempo redonda en mS, por ej. si tenés 200 irq/s, deberías medir una salida 5mS (o 10mS: 5mS estado alto y 5mS estado bajo).

Una vez que tenés es medición en una ºT ambiente "adecuada" (por ej. 25ºC), jugar con la ºT sobre el cristal y ver que tanta deriva tenés.

En equipos complejos que requieren una base de tiempo muy exacta, el viejo truco es calentar el cristal a una cierta ºT estable y evitar esas derivas tal como decís. Ahora para un reloj, suena exagerado.

En los LPC176x, suele haber un registro de corrección con un valor fijo por el usuario que se aplica por día en el contador del RTC y la metodología para obtener ese valor fijo de corrección es haciendo lo que te dije.


En tu caso, la corrección deberías hacerla en forma manual por soft y si querés hacerlo más complejo, tener en cuenta la ºT ambiente promedio durante el día.
 
En equipos complejos que requieren una base de tiempo muy exacta, el viejo truco es calentar el cristal a una cierta ºT estable y evitar esas derivas tal como decís. Ahora para un reloj, suena exagerado.
Los relojes digitales de pulsera usan la temperatura del propio cuerpo humano como "horno"...y como es bastaaaante estable, la deriva se mantiene "controlada".
 
Atrás
Arriba