Różny czas pomimo synchronizacji z NTP

Dnia Wed, 12 Nov 2014 12:43:21 +0100, Atlantis napisał(a):

Czekaj, zaczynam rozumiec. Atmel wysyla pakiet NTP, przychodzi odpowiedz, atmega ustawia swoj zegar na podstawie tego co przyszlo. Potem sobie powieksza wlasny zegar w przerwaniach, a gdzies obok RasPi odczytuje zegar z atmegi, odczytuje z ntp, porownuje i wychodzi mu roznica znaczna ? Mimo ze niedawno atmega ustawila czas w/g pakietu NTP?

Ja bym zrezygnowal z tego RasPi, wyrzucal wszystko tekstowo, i porownywal naocznie.

Ale co mi sie nasuwa:

-czy oba korzystsja z tego samego serwera - ale mysle ze nawet jak z innych to czas powinien byc zgodny,

-o ile kojarze, to NTP jest bardziej skomplikowany, wysyla sie w dwie strony pakiety - moze cos nie/zle ustawiles ?

-czy przerwania tam dobrze wspoldzialaja ? Bo jak rozumiem - przychodzi pakiet, w przerwaniu ustawiasz timer, w przerwaniu go powiekszasz - to sie moze cos zle dziac. Ale rzadko.

-jaki masz czas odpowiedzi ? Moze cos tam sie w sieci blokuje i pakiety gdzies czekaja

-typowo na unixach NTP nie przestawia zegara, tylko go zwalnia lub przyspiesza i zmiana jest rozciagnieta w czasie. Unix nie lubi skokow czasu. Ale to by dotyczylo RP, bo na ATmega jak rozumiem sam programujesz.

Ale najbardziej podejrzewam:

-czy dobrze odczytujesz tego ENC i przerwania dobrze przychodza ? Bo jakby tak pakiet przychodzil, ale atmega nic o tym nie wiedziala, tylko czekala, a odczytywala pakiet przy calkiem innej okazji, ktora nadejdzie nie wiadomo kiedy - to by tak moglo byc jak opisujesz.

J.

Reply to
J.F.
Loading thread data ...

wiedziala,

Przecież mu się czas już źle liczy lokalnie z timera a co dopiero z ntp.

Reply to
Marek

A propos NTP - czy ktos analizowal jak to dziala i rozumie ?

Bo nie rozumiem jak on sobie radzi z laczami niesymetrycznymi, gdy np pakiet w jedna strone idzie 0.1s, a w druga 2.1s ..

Mimo tych 4 znacznikow czasu 0 - na moj gust to nie ma mozliwosci wykrycia o ile pakiety sa niesymetryczne.

J.

Reply to
J.F.

W dniu 2014-11-12 o 23:14, J.F. pisze:

Ja używam w swojej xmedze SMTP, jest banalnie prosty. Używam bez korekcji czasu przelotu i to mi działa bo mam własny serwer NTP na jeden hop, a ponieważ atmelowe RTC i tak jest w stanie tylko liczyć sekundy więc arytmetykę na liczbach 64o bitowych uznałem za zbędną.

Z tego co jest w RFC4330: Timestamp Name ID When Generated ------------------------------------------------------------ Originate Timestamp T1 time request sent by client Receive Timestamp T2 time request received by server Transmit Timestamp T3 time reply sent by server Destination Timestamp T4 time reply received by client

The roundtrip delay d and system clock offset t are defined as:

d = (T4 - T1) - (T3 - T2) t = ((T2 - T1) + (T3 - T4)) / 2.

Jak dla mnie wzór na t tak pięknie się skraca, że nie ma znaczenia czy opóźnienie jest symetryczne czy nie. Można by to wyprowadzić zakładając, że d=d1+d2 ale przed pierwszą kawą nie chce mi się... :-)

Reply to
Andrzej W.

Użytkownik "Andrzej W." napisał w wiadomości W dniu 2014-11-12 o 23:14, J.F. pisze:

No to policzmy. Zalozmy ze

10 T1 112 T2 114 T3 16 T4

d=4, t=100 OK.

a teraz zalozmy ze pakiet w jedna strone leci 3s, a wraca 1s. Bedzie wiec

10 T1 113 T2 115 T3 16 T4

d=4, t=101 Offset inny niz za pierwszym razem.

Ale ... zaczynam podejrzewac ze to sam Einstein mi gwarantuje niemoznosc poprawnego wyniku. W koncu moge synchronizowac czas miedzy dwiema rakietami lecącymi w te samą strone z tymi samymi predkosciami. Róznica czasów przelotu zalezy od predkosci, a predkosc od obserwatora. Zas niezaleznie od predkosci obserwatora wynik musi wyjsc ten sam :-)

J.

Reply to
J.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.