GPS-Module mit 1pps-Ausgängen sind leicht verfügbar und kostengünstig.
Es ist nicht wirklich notwendig, den Oszillator der CPU auf das GPS zu disziplinieren (z. B. mit einer PLL). Solange Sie externe Ereignisse in Bezug auf die CPU-Uhr mit einem Zeitstempel versehen können, ist es relativ einfach, die Zeit für das Senden und Empfangen von Wave-Ereignissen zwischen zwei PPS-Ereignissen zu interpolieren.
Sie können häufig die Kombination eines Hardware-Timers auf dem Mikrocontroller zusammen mit einem Software-Zähler für seine Überlaufereignisse verwenden, um einen CPU-Zykluszähler beliebiger Breite zu erstellen. Es kann schwierig sein, mit Rollover-Ereignissen sowohl des Hardware-Zählers als auch des Software-Zählers richtig umzugehen, aber am Ende können Sie beispielsweise einen 32-Bit-Zähler haben, der mit der Taktrate der CPU zählt (was eine hohe Auflösung ergibt) ) und läuft mit einer Zeitspanne weiter, die länger ist als die Intervalle, die Sie messen möchten (z. B. 429 Sekunden bei 10 MHz).
Mit diesem Zähler können Sie verschiedene externe Ereignisse mit einem Zeitstempel versehen. Wenn eines dieser Ereignisse 1-pps-Impulse von einem GPS-Empfänger sind, ist die grundlegende Langzeitgenauigkeit der CPU-Uhr unerheblich. Entscheidend ist nur die kurzfristige Stabilität. Sie können GPS-Zeitstempel in einem FIFO-Puffer speichern und die Zeitstempel anderer Ereignisse mit den Werten in diesem Puffer vergleichen. Da Sie wissen, dass die GPS-Impulse genau eine Sekunde voneinander entfernt sind, können Sie die genaue Uhrzeit jedes anderen Ereignisses durch Interpolation ermitteln.
G PSnG PSn + 1Tich bin enTich bin en + 1Ex tG PSnG PSn + 1
Tich bin en+ Ex t - G PSnG PSn + 1- G PSn
Wenn Sie dieses Setup auf zwei separaten Systemen mit jeweils eigenem GPS-Empfänger ausführen, können Sie die für verschiedene Ereignisse auf den beiden Systemen berechneten Zeiten mit hoher Genauigkeit vergleichen (in der Regel in der Größenordnung von ± 100 ns), auch wenn die CPU-Takte der beiden Systeme sind nicht synchronisiert.