...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

Reply via email to