Les modules GPS avec sorties 1pps sont facilement disponibles et peu coûteux.
Il n'est pas vraiment nécessaire de discipliner l'oscillateur de la CPU sur le GPS (par exemple, avec une PLL). Tant que vous pouvez "horodater" des événements externes par rapport à l'horloge de la CPU, il est relativement simple d'interpoler l'heure de transmission et de réception des événements entre deux événements PPS quelconques.
Vous pouvez souvent utiliser la combinaison d’un temporisateur matériel sur le microcontrôleur et d’un compteur logiciel pour ses événements de dépassement de capacité afin de créer un compteur de cycle de processeur d’une largeur arbitraire. Il peut être difficile de gérer correctement les événements de basculement, à la fois du compteur matériel et du compteur logiciel, mais au final, vous pouvez avoir un compteur 32 bits qui compte au rythme de l’horloge de la CPU (donnant une résolution élevée. ) et survole une période plus longue que les intervalles que vous essayez de mesurer (par exemple, 429 secondes à 10 MHz).
Vous pouvez utiliser ce compteur pour horodater différents événements externes. Si l'un de ces événements correspond à des impulsions de 1 pps provenant d'un récepteur GPS, la précision de base à long terme de l'horloge du processeur devient alors inutile. La seule chose qui compte est sa stabilité à court terme. Vous pouvez enregistrer les horodatages GPS dans une mémoire tampon FIFO et comparer les horodatages d'autres événements aux valeurs de cette mémoire tampon. Puisque vous savez que les impulsions GPS sont à une seconde d'intervalle, vous pouvez trouver l'heure exacte de tout autre événement en interpolant.
G PSnG PSn + 1Tje suis enTje suis en + 1Ex tG PSnG PSn + 1
Tje suis en+ Ex t - G PSnG PSn + 1- G PSn
Enfin, si cette configuration fonctionne sur deux systèmes distincts, chacun avec son propre récepteur GPS, vous pouvez comparer les temps calculés pour différents événements sur les deux systèmes avec une grande précision (généralement de l’ordre de ± 100 ns), même si le Les horloges de la CPU des deux systèmes ne sont pas synchronisées.