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

Reply via email to