[time-nuts] PRS-10 sawtooth correction with microcontroller

James Wilson jmw at fastmail.com
Wed Dec 21 23:22:37 UTC 2022


After running in many of the familiar problems of connecting a GPS timing module 1PPS signal to a PRS-10, I want try building a software sawtooth correction board. I’ve seen previous discussion of some of the commands to use for adjusting the PLL and PPS control on the PRS-10 and getting the sawtooth error from ublox GNSS modules, but not a start-to-finish description of how to put everything together.

My idea to use a microcontroller with multiple UART ports; one connected to the ublox module and the other connected to the PRS-10, with level shifters as needed. The microcontroller sits between the two devices, and gets the PPS sawtooth correction info from the ublox (specifically via the UBX-TIM-TP message and its qErr field), and then adjusts the PRS-10’s PPS time offset by this value to null out the sawtooth for the next pulse.

1. At startup, configure the timing module to periodically send UBX-TIM-TP messages every second. From the PRS-10, get the current time offset value with the TO? command.

2. Listen for UBX-TIM-TP messages, and extract the qErr field. If the qErrInvalid bit is clear, compute qErr/1000 (convert from ps to ns) and add this to the stored time offset value. Push the adjusted time offset to the PRS-10 via the TO command.

Has anyone built sawtooth correction for the PRS-10 and can comment on this?




More information about the Time-nuts_lists.febo.com mailing list