Hi, In UHD you find :
void set_time_next_pps(const uhd::time_spec_t &time){ const uint64_t ticks = time.to_ticks(_tick_rate); _iface->poke32(REG_TIME64_TICKS_LO, uint32_t(ticks >> 0)); _iface->poke32(REG_TIME64_IMM, FLAG_TIME64_LATCH_NEXT_PPS); _iface->poke32(REG_TIME64_TICKS_HI, uint32_t(ticks >> 32)); //latches all 3 } with seemingly the write of the 'HI' part being the trigger point. In the FPGA code (timekeeper.v) you have : setting_reg #(.my_addr(SR_TIME_CTRL), .width(3)) sr_ctrl (.clk(clk), .rst(reset), .strobe(set_stb), .addr(set_addr), .in(set_data), .out({set_time_sync, set_time_pps, set_time_now}), .changed(cmd_trigger)); So the 'cmd_trigger' that synchronizes the action is on the 'CTRL' (aka REG_TIME64_IMM) register and not on the hi part of the time. TBH I'm not even sure how set_time_now works at all ... it has the same issue and AFAICT it would always end up using the previous value of the 'hi' register... Am I missing something here ? Cheers, Sylvain Munaut _______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com