Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 25 mar 2026, o 05:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 30 cze 2015, o 11:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 cze 2014
Posty: 47
Pomógł: 0

Witam, ostatnio wpadł mi do głowy pomysł, aby stworzyć zegarek synchronizowany przez NTP. Kiedy szukałem natchnienia natrafiłem na przykład ze strony tuxgraphic.org, który jest po prostu świetny, ale nie o to mi chodziło. Chciałbym się najpierw dowiedzieć jak wygląda najprostsza obsługa, bez bajerów typu DHCP.

Na razie przyjąłem następujące założenia:

1. Inicjalizacja
Skoro NTP korzysta z UDP, to przyjąłem, że wystarczy skopiować odpowiedni fragment z lekcji o UDP, czyli
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


2. Wysłanie zapytania
Moim zdaniem wystarczy ta jedna funkcja:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tylko nie wiem za bardzo dlaczego zmienna ntpclientportL była w przykładzie od tak inkrementowana. Czy to znaczy, że może mieć dowolną wartość?

3. Odbiór odpowiedzi
Na podstawie przykładu skręciłem coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Niestety, nie chce to działać. Diody w gnieździe ethernetowym podpowiadają, że coś się dzieje.

Adresy ip itd.:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak siebie znam to pewnie jest gdzieś banalny błąd, ale pierwszy raz podchodzę do tematu i jeszcze wielu rzeczy nie rozumiem. Widzi ktoś gdzie jest problem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lip 2015, o 16:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 cze 2014
Posty: 47
Pomógł: 0

Dobra, przyznam się szczerze że troszkę spanikowałem na widok rozmiarów pętli głównej w przykładzie z tuxgraphic. Ostatnio troszkę przysiadłem i udało się uruchomić klienta DHCP i przez ARP wyciągnąć z routera jego adres MAC :D Tylko, że główna funkcjonalność na której mi zależało, czyli NTP nadal nie odpowiada. Do jego obsługi powołałem takie zdarzenie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Przed jego wywołaniem znajduje się taka konstrukcja:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wyrzucenie danych na uarta ma mi powiedzieć, kiedy przyjdzie odpowiedź i czy będzie miała jakiś sens.

Metodą "ledowego debuggera" doszedłem, że przychodzący pakiet nie jest pakietem ipv4, a wyrzucająć przez uart jego identyfikator ustaliłem, że jest to pakiet ARP, mimo że zapytanie o mac wysyłam tylko raz na początku programu.(sprawdzone "debuggerem")

Czasem zdarza się, że pakiet przejdzie ten test, ale wtedy wysypuje się na trzecim ifie z tej funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Do sprawdzania poprawności ip nigdy nie udało się dojść.

Pokazałem wyżej w zasadzie cały kod obsługi sieci oprócz inicjalizacji, która, wnioskując z działania DHCP i tego, że mac GW jest dobry, jest poprawna.
Widzi któryś kolega co robię źle?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lip 2015, o 18:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 cze 2014
Posty: 47
Pomógł: 0

Ehh i okazuje się że tylko syf na forum zrobiłem... Wystarczyło zmienić serwer NTP z którego korzystałem i wszystko ruszyło :D :D :D.
Zostawiam kod dla innych początkujących, na razie jest tam tylko inicjalizacja i zdobycie czasu unixowego, ale mając to będzie o wiele łatwiej.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lip 2015, o 20:09 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

robi99956 napisał(a):
Wystarczyło zmienić serwer NTP z którego korzystałem i wszystko ruszyło

To są właśnie "fajne" klimaty i niestety - takich uszkodzeń hmmm ala uszkodzeń trzeba szukać samemu najczęściej ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO