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

Reply via email to