On 04/25/2018 01:30 PM, Hojoon Yang via USRP-users wrote:

The questions were not about time_spec_t and get_real_secs()..

I wondered that "How can I execute the command usrp->get_time_now(); and usrp2->get_time_now(); simultaneously.


As I mentioned the previous question, I tried to use set_command_time(), but it does not work.

I was responding to the second part of your question where you were unable to get the fractional seconds part.

I'm a bit surprised that the get_time_now() cannot be wrapped in a set_command_time(), but it is the case that
  B2xx support only a subset of timed commands.

What you might want to do is start a timed streaming from both devices, and inspect the timestamps as they arrive.



the code that I tried is

---------------------------------------------------------------

usrp->set_time_next_pps(uhd::time_spec_t(0.0));

usrp2->set_time_next_pps(uhd::time_spec_t(0.0));

boost::this_thread::sleep(boost::posix_time::seconds(2));

uhd::time_spec_t start_time = usrp->get_time_now() + uhd::time_spec_t(0.3);

usrp->set_command_time(start_time);

uhd::time_spec_t usrp_t = usrp->get_time_now();

uhd::time_spec_t usrp2_t = usrp2->get_time_now();

usrp->clear_command_time();

std::cout << boost::format(

" Start : %f us\n"

" Response 1: %f us\n"

" Response 2: %f us"

) % (start_time.get_real_secs()*1e6) % (usrp_t.get_real_secs()*1e6) % (usrp2_t.get_real_secs()*1e6) << std::endl;

std::cout << boost::format(

" Difference of response time 1: %f us"

) % ((usrp_t - start_time).get_real_secs()*1e6) << std::endl;

std::cout << boost::format(

" Difference of response time 2: %f us"

) % ((usrp2_t - start_time).get_real_secs()*1e6) << std::endl;

---------------------------------------------------------------

----------------------------OUTPUT-------------------------------------

Checking USRP devices for lock.

Waiting for reference lock....

* 30FDE72: LOCKED

Waiting for reference lock...

* 3125CB5: LOCKED

Querying Clock for time and setting USRP times...

Start : 1329026.312500 us

Response 1: 1329026.625000 us

Response 2: 1329261.625000 us

Difference of response time 1: 0.312500 us

Difference of response time 2: 235.312500 us

-----------------------------------------------------------------

What I expect was, in OUTPUT, Difference of response time 2 should be 0.312500 us, not 235.312500 us.


This result means that the command usrp->get_time_now(); and usrp2->get_time_now(); were not executed simultaneously.


I also changed the code

-----------------------------------------------------------------

uhd::time_spec_t start_time = usrp->get_time_now() + uhd::time_spec_t(0.3);

usrp->set_command_time(start_time);

uhd::time_spec_t usrp_t = usrp->get_time_now();

uhd::time_spec_t usrp2_t = usrp2->get_time_now();

usrp->clear_command_time();

-----------------------------------------------------------------

to


-----------------------------------------------------------------

uhd::time_spec_t start_time = usrp->get_time_now() + uhd::time_spec_t(0.3);

usrp->set_command_time(start_time);

usrp2->set_command_time(start_time);

uhd::time_spec_t usrp_t = usrp->get_time_now();

uhd::time_spec_t usrp2_t = usrp2->get_time_now();

usrp->clear_command_time();

usrp2->clear_command_time();

-----------------------------------------------------------------


But it does not work.


Again, How can I execute the command usrp->get_time_now(); and usrp2->get_time_now(); simultaneously?

usrp: USRP B210

usrp2: USRP B200


Hojoon

    -----------------------원본메일-----------------------
    보낸사람 : "Marcus D. Leech via USRP-users"
    <[email protected]>
    받는사람: [email protected]
    보낸날짜: 2018-04-26 01:41:04 GMT +0900 (Asia/Seoul)
    제목: Re: [USRP-users] synchronization between two usrps.
    On 04/25/2018 10:53 AM, Hojoon Yang via USRP-users wrote:

    Hi,

    I connected one usrp b210 and one usrp b200 to octoclock for
    synchronization.

    I'm trying to verify that the usrps connected to octoclock is
    "really" synchronized.

    To check it, I did as follows.

    usrp->set_time_next_pps(uhd::time_spec_t(0.0));

    usrp2->set_time_next_pps(uhd::time_spec_t(0.0));

    boost::this_thread::sleep(boost::posix_time::seconds(2));

    uhd::time_spec_t start_time = usrp->get_time_now() +
    uhd::time_spec_t(0.1);

    usrp->set_command_time(start_time);

    uhd::time_spec_t usrp_t = usrp->get_time_now();

    uhd::time_spec_t usrp2_t = usrp2->get_time_now();

    usrp->clear_command_time();

    I think I did wrong, because the results are different from my
    expectations.

    Q1. Can I execute usrp->get_time_now(); and
    usrp2->get_time_now(); simultaneously? I'm trying to use
    set_command_time, but it didn't work well as above.

    Q2. How can I verify that the two usrps connected to the
    octoclock, is really synchronized? in terms of time..

    I already used get_time_last_pps() command, this command works
    perfect, the two usrps showed same value.

    but this command only showed "the full_secs" which does not
    include frac_secs.. I want to check "the frac_secs" between two
    usrps.

    I read this thread,
    
http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2015-January/012227.html


    But, I can't find the way to check frac_secs..


    Hojoon


    
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#afb4bffe3f969c11ee7c0a2cba5178780


    Returns a time_spec_t, and there are multiple methods associated
    with time_spec_t

    https://files.ettus.com/manual/classuhd_1_1time__spec__t.html

    Including get_real_secs()

    Many of the example programs included with UHD source use this
    method--you could look there usage examples.






_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to