¿Usar un período de tiempo más corto es menos preciso que usar uno más largo?

Estoy usando un dsPIC 33FJ128GP804 y estoy tratando de registrar datos a 200 Hz con la mayor precisión posible. Mi dispositivo también tiene un GPS y noto que mi temporizador se desvía en comparación con el GPS en aproximadamente 333 ms / hora. Creo que debería ser posible hacerlo mejor que eso. Mi fuente de reloj es un cristal de 40 Mhz con una tolerancia de 30 ppm y una estabilidad de 50 ppm y un envejecimiento de 5 ppm/año.

Tengo el Oscilador del PIC funcionando a 72Mhz. No puedo cambiar esto, es necesario para ejecutar UARTS a 3 Mbit.

Durante mis pruebas para averiguar por qué hay tanta deriva, hice un experimento. Estoy ejecutando dos temporizadores, uno a 200 Hz y otro a 5 Hz. En los controladores de interrupción, el temporizador de 200 Hz incrementa un int largo en 1 y el temporizador de 5 Hz incrementa un int largo en 40. Los dos int largos deben permanecer iguales. Sin embargo, después de 45 minutos, los valores difieren en 6. (30ms)

¿Por qué veo una diferencia entre los dos valores? ¿Y hay algo que pueda hacer para aumentar la precisión de mi temporizador además de cambiar el cristal? ¿Tener un período más largo aumenta la precisión? Si es así, ¿podría usar un temporizador más lento para restablecer periódicamente mi temporizador más rápido? ¿Cambiaría la fuente de mi temporizador al oscilador externo del reloj de instrucciones?

Uso el tiempo del GPS para corregir el tiempo en el procesamiento posterior, pero el GPS no siempre está disponible, así que no quiero tener que depender de él.

Respuestas (1)

Los temporizadores dividen el reloj por valores enteros. El promedio a largo plazo que sale de un temporizador será el mismo que el del oscilador.

Parece que el período de su temporizador está apagado por 1. Lea la hoja de datos cuidadosamente. Probablemente no puso el valor correcto en el registro del período. Por lo general, estos temporizadores funcionan de manera que el período es el valor del registro del período más 1.

Otra posible fuente de error es cómo se acciona el cristal. La precisión se especifica para una capacitancia de carga en particular, que a menudo puede ser un poco impredecible ya que la capacitancia parásita puede ser una parte importante del total. Sin embargo, eso no explicaría por qué dos temporizadores que funcionan con el mismo reloj no coinciden en el tiempo transcurrido. Solo un error de firmware puede causar eso.

Creo que tienes razón, es el + 1 el problema. Verificando ahora.