Ist die Verwendung einer kürzeren Timer-Periode weniger genau als die Verwendung einer längeren?

Ich verwende einen dsPIC 33FJ128GP804 und versuche, Daten bei 200 Hz so genau wie möglich aufzuzeichnen. Mein Gerät hat auch ein GPS und ich merke, dass mein Timer gegenüber dem GPS um ca. 333 ms/Stunde driftet. Ich denke, es sollte möglich sein, es besser zu machen. Meine Taktquelle ist ein 40-MHz-Quarz mit einer Toleranz von 30 ppm und einer Stabilität von 50 ppm und einer Alterung von 5 ppm/Jahr.

Ich habe den Oszillator des PIC mit 72 MHz laufen. Ich kann dies nicht ändern, es ist erforderlich, um die UARTS mit 3 Mbit auszuführen.

Während meiner Tests, um herauszufinden, warum es so viel Drift gibt, habe ich ein Experiment durchgeführt. Ich verwende zwei Timer, einen mit 200 Hz und einen mit 5 Hz. In den Interrupt-Handlern erhöht der 200-Hz-Timer einen Long-Int um 1 und der 5-Hz-Timer einen Long-Int um 40. Die beiden Long-Ints sollten gleich bleiben. Nach 45 Minuten unterscheiden sich die Werte jedoch um 6. (30ms)

Warum sehe ich einen Unterschied zwischen den beiden Werten? Und gibt es irgendetwas, was ich tun kann, um meine Timer-Genauigkeit zu erhöhen, außer den Kristall zu wechseln? Erhöht ein längerer Zeitraum die Genauigkeit? Wenn ja, könnte ich einen langsameren Timer verwenden, um meinen schnelleren Timer regelmäßig zurückzusetzen. Würde es einen Unterschied machen, die Quelle meines Timers von der Befehlsuhr auf den externen Oszillator zu ändern?

Ich verwende die GPS-Zeit, um das Timing in der Nachbearbeitung zu korrigieren, aber GPS ist nicht immer verfügbar, daher möchte ich mich nicht darauf verlassen müssen.

Antworten (1)

Die Timer teilen die Uhr durch ganzzahlige Werte herunter. Der langfristige Durchschnitt, der aus einem Timer kommt, ist derselbe wie der des Oszillators.

Es hört sich so an, als wäre Ihre Timer-Periode um 1 ausgeschaltet. Lesen Sie das Datenblatt sorgfältig durch. Sie haben wahrscheinlich nicht den richtigen Wert in das Periodenregister eingegeben. Normalerweise arbeiten diese Timer so, dass die Periode der Wert des Periodenregisters plus 1 ist.

Eine weitere mögliche Fehlerquelle ist die Ansteuerung des Quarzes. Die Genauigkeit wird für eine bestimmte Lastkapazität angegeben, die oft etwas unvorhersehbar sein kann, da die Streukapazität einen erheblichen Teil der Gesamtkapazität ausmachen kann. Dies würde jedoch nicht erklären, warum zwei Timer, die von derselben Uhr laufen, sich nicht auf die verstrichene Zeit einigen. Das kann nur ein Firmware-Fehler verursachen.

Ich denke, Sie haben Recht, es ist die +1, die das Problem ist. Jetzt verifizieren.