mikrocontroller.net

Forum: Compiler & IDEs NTP/SNTP-Request failed


Autor: Morph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander!

Die Grundlage meines Projektes bildet ein AT90CAN128 mit dem 
Ethernet-Controller WiZ810MJ. Bisher funktioniert alles wunderbar. 
DNS-Auflösung klappt. Die Kommunikation über Ethernet mit den 
Software-Modulen funktioniert auch wunderbar.

Eine unabdingbare Grundlage für das Projekt, ist eine aktuelle Uhrzeit. 
Diese soll mit Hilfe von NTP/SNTP synchronisiert werden. Das Problem 
hierbei ist, dass ich kein Response bekomme ... Ja, wahrscheinlich mach 
ich was falsch. Ich steh nur momentan total auf dem Schlauch, woran es 
liegen könnte. Ich sitzte schon 3 Tage an diesem Prob und komm nicht 
weiter. Vllcht kann hier mir ja wer auf die Sprünge helfen ;).

Den NTP/SNTP-Request bau ich wie folgt auf:
  uint8_t txbuffer[52];
  uint8_t *ptr;

  ptr = &txbuffer[0];
  *ptr++ = 0xdb;   // ntp hdr flgs
  *ptr++ = 0x0;   // stratum
  *ptr++ = 0x04;  // poll-intervall
  *ptr++ = 0xfa;  // precision
  // root-belay 32bit
  *ptr++ = 0x0;
  *ptr++ = 0x1;
  *ptr++ = 0x0;
  *ptr++ = 0x1;

  for (uint8_t i=8;i<52;i++) *ptr++=0; // zero rest of data
        // Send packet
  wiznet_open_writebuffer(socket);
  for (uint8_t i=0;i<52;i++){
    wiznet_write_writebuffer(socket, txbuffer[i]);
  }
  wiznet_close_writebuffer(socket);

Die Pakete werden an den UDP-Port: 123 gesendet.

Die Versuche von den folgenden 3 NTP-Servern eine Antowrt zu erhlaten, 
ware leider bisher vergebens:

ptbtime1.ptb.de
time.nist.gov
ts1.univie.ac.at

so far so long
mfg & voller hoffnung
-Morph

Autor: doc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, versenden kann man an die NTP-Server so ziemlich alles, nur die 
Flags müssen passen, damit sie antworten.

D.h. nur das erste Byte muss != 0 sein.
Am verschicken liegts daher vermutlich weniger... wobei, mit dem 
Wiznet-Kram kenne ich mich nicht aus.

Ich seh auch nirgendswo einen Empfangsteil..

Autor: doc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei..hm.. 52 Byte ? Beim versenden reichen 48 Byte, soweit ich weiss..

Autor: Morph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh menno ...thx, das stimmt... 48bytes sind ausreichen. ich hab k.a. wie 
ich auf 52 gekommen bin ... wer zählen o. lesen kann ist halt klar im 
vorteil *gell :D

jetzt bekomm ich auch von jedem der 3 server eine 56-byte lange antwort 
*jippi

den empfangsteil hatte ich bisher noch gar nicht ... ich hab nur erstmal 
überhaupt auf ein antwortpaket gewartet ...

jetzt bin ich dabei die antwort auszuwerten, wozu ich auch gleich noch 
eine frage habe. im antwort-paket sind ja 4 zeitstempel enthalten. ein 
zeitstempel davon ist der transmit-timestamp. der zeitstempel 
repräsentiert doch den zeitpunkt, an dem die antwort seitens des servers 
abgesendet wird oder?!

ein zeitstempel besteht jeweils aus 64Bit (ersten 32Bit geben die 
vergangenen Sekunden seit dem 1.1.1900 0:00 UTC an, die folgenden 32Bit 
geben den sekundenbruchteil an.) wenn man jetzt die zeit vernachlässigt, 
die das paket vom server zum client unterwegs war, dann müssten doch 
ersten 32Bit die vergangenen Sekunden seit dem 1.1.1900 0:00 UTC 
repräsentieren oder irr ich da?!

Autor: Morph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so ich habs nun, thx @doc dass du mir auf die sprünge geholfen hast :) 
...

mfg morph

Autor: debugger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stehe momentan vor einer ähnlichen Aufgabe :
Die aktuelle Zeit soll von einem ntp-Server abgerufen werden.
Das klappt auch grundsätzlich, aber der ntp-Server (ptbtime1.ptb.de) 
antwortet in ca. der Hälfte der Fälle nicht innerhalb von 3 Sekunden auf 
die Anfrage (länger warte ich nicht).

Was habt ihr für Erfahrungen gemacht ?

- Ist es normal, dass nicht immer eine Antwort kommt ?
- Was macht ihr bei fehlender Antwort ? (länger warten, ggf. wie lange 
?, nochmal beim gleichen Server probieren, bei einem anderen Server 
anfragen, Kombilösung ?)
- welche ntp-Server antworten nach Eurer Erfahrung am schnellsten ?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.