Timepulse
The u-blox module outputs a configurable pulse signal on GPIO 5 — typically used as PPS (Pulse Per Second) for time synchronization.
The same timepulse output can be aligned by either its rising edge or falling edge at the exact second boundary. The diagram starts with an annotated 1 Hz pulse at 10% duty cycle, then shows faster 5 Hz and 10 Hz examples plus a fix-dependent switch from one waveform to another. That is the timing model behind what timepulse() waits for when it blocks until the next event.
Configure frequency, duty cycle, and no-fix behavior on Timepulse Configuration.
hat->enableTimepulse();
while (true)
{
hat->timepulse();
auto nav = hat->navigation();
printf("PPS! %s\n",
Utils::utcTimeFromGnss_ISO8601(nav.pvt).c_str());
}
hat->disableTimepulse();
hat.enable_timepulse()
while True:
hat.timepulse() # blocks until next PPS, releases GIL
nav = hat.get_navigation()
print(f"PPS! {gnsshat.utc_time_iso8601(nav)}")
hat.disable_timepulse()
NoteKernel PPS Conflict — If you use the kernel PPS driver for chrony/gpsd (viadtoverlay=pps-gpio,gpiopin=5), do not callenableTimepulse()from the library. Both claim GPIO 5 and cannot coexist.
NoteGPSD Conflict — Do not useenableTimepulse()when gpsd/pps is managing the same GPIO pin.
See Timepulse Configuration for full details.