Perfect. Thanks for that explanation! On Mon, Nov 22, 2021 at 7:15 AM Martin Braun <martin.br...@ettus.com> wrote:
> ...sorry, fat-fingered Gmail. I was saying, I had to check the code myself > carefully to see why. > In the rfnoc_graph constructor, we attempt to synchronize devices, so > that's the relevant call. > > There's a bit of a catch here: If you are initializing the devices with > internal ref and PPS, and then later set them to 'external', > multi_usrp_rfnoc doesn't know you should be calling this method again. > That's an issue we should be fixing. > > To summarize: > - rfnoc_graph calls this function itself during construction. If you > initialize your devices with time_source=external,clock_source=external, > then this will work just fine. > - If you're then, later only changing the time on your devices, calling > set_time_unknown_pps() will suffice. Calling synchronize_devices() again is > not required. > - However, if you are initializing devices with internal clocks, and then > later setting them to external, you should be calling this again. This is > neither covered in the docs, nor in multi_usrp_rfnoc so I agree we have an > issue here. > > --M > > On Mon, Nov 22, 2021 at 1:10 PM Martin Braun <martin.br...@ettus.com> > wrote: > >> Hey Rob, >> >> thanks for asking -- this function is definitely under-documented. The >> short answer is: This function should be called for synchronous operations, >> but only on X3x0 will it make any difference if you don't call it. >> >> What does it do? This function provides additional synchronization on top >> of the timekeeper synchronization. Currently, only X310 needs this for the >> DAC synchronization. >> >> So why is not called in multi_usrp_rfnoc? To be honest, I had to >> double-check the code myself >> >> On Wed, Nov 17, 2021 at 12:04 AM Rob Kossler <rkoss...@nd.edu> wrote: >> >>> Hi, >>> I recently stumbled across this synchonize_devices() function and I'm >>> wondering if I need to be calling it. I ran grep in the UHD source folder >>> and there are no examples of calling this function. I read the help but >>> it's not clear to me how this function differs from calling >>> set_time_next_pps() on all of the motherboards (such as is done in the >>> lib/multi_usrp_rfnoc.cpp code). My thought process is: if multi_usrp_rfnoc >>> does not need to call synchonize_devices(), why would my custom application >>> need to call it? Any help would be appreciated. >>> >>> Thanks. >>> Rob >>> _______________________________________________ >>> USRP-users mailing list -- usrp-users@lists.ettus.com >>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com >>> >>
_______________________________________________ USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe send an email to usrp-users-le...@lists.ettus.com