Bruchteile der sekunde PTB

Weiss zufällig jemand welche bytes beim NTP- Protokoll man auslesen muss um die bruchteile der sekunden zu erhalten?

Bruchtteil einer Sekunde ist über DCF77 der PTB nicht vorgesehen. Das hätte dir Google aber auch sagen können. :-X :-X

https://de.wikipedia.org/wiki/DCF77

Seine im Sekundenrhythmus gesendeten Zeitzeichen übertragen die mitteleuropäische Zeit bzw. mitteleuropäische Sommerzeit,

Ich meinte nicht DCF77 sondern das NTP -Protokoll,nicht funk sondern internet, dies soll nämlich die Bruchteile enthalten.

McCurtis: Ich meinte nicht DCF77 sondern das NTP -Protokoll,nicht funk sondern internet, dies soll nämlich die Bruchteile enthalten.

Siehe: http://www.ietf.org/rfc/rfc5905.txt

Mal kurz geblättert: Die Bruchteile von Sekunden stehen in den NTP-Paketen direkt hinter den ganzen Sekunden.

Tut mir leid aber ich glaub ich bin zu doof die Seite zu finden könntest du mir einfach sagen welche bytes

also wenn ich nach dem Beispiel aus dem Forum gehe dann sind die sekunden in den 41-44 bytes, dann

wären die bruchteile der sekunden 45-48 aber ich bin mir nicht sicher. Könntest du mir die Seite nennen

ich bin echt zu doof das zu finden.

McCurtis: Könntest du mir die Seite nennen

Unter "Figure 3: NTP Time Formats" sind auf Seite 13 die drei verschiedenen Zeitformate dargestellt, die in NTP-Packets verwendet werden können.

Im "NTP Timestamp Format" beispielsweise 32 Bits für "Seconds" gefolgt von 32 Bits für "Fraction".

Da steht dann übrigens auch, wie dieser "Fraction" Teil codiert ist:

fraction field resolving 232 picoseconds

D.h. Bruchteile von Sekunden werden als ganze Zahl codiert, die die Anzahl von jeweils 232 Picosekunden seit Beginn der Sekunde repräsentiert.

Bruchteile von Sekunden werden als ganze Zahl codiert, die die Anzahl von jeweils 232 Picosekunden seit Beginn der Sekunde

Bedeutet einfach, dass das höchstwertige Bit 1/2 Sekunde, das nächste 1/4 Sekunde, usw. ist.

Die oberen 16 Bit werden dir vermutlich ausreichen ( 15µs Auflösung ) ;)

Ähm wenn die bits die anzahl der 232 picosekunden seit begin der sekunde sind dann kommt bei 32 bits

(((2^32)-1)*232)/(10^12) aber 0,99643241244 raus dat ist nicht 1

die 232 picoSekunken sind auch nicht der genaue Wert eines Bits, sondern nur die ungefähre Auflösung

2 ^ -32 = 0.00000000023283064365386962890625

Ich würde jedenfalls nicht mit * 232.831 ps rechnen ...

Die echten Probleme sind eher, rauszukriegen, von wann "genau" die Antwort stammt, wenn du eine beträchtliche Antwortzeit bei der ntp Abfrage warten musst.

McCurtis: (((2^32)-1)*232)/(10^12)

You should use 2^32 or you could have a full second as a fraction, which does not make sense. In deiner Formel solltest du 2^32 benutzen, sonst gibt es eine volle Sekunde als Bruchteil.

The 232.83064365386962890625 problem is a different story. Das 232.83064365386962890625 Problem ist davon natürlich unberührt.

Edit: tut mir leid, hatte die Sprache noch nicht umgeschaltet.

In deiner Formel solltest du 2^32 benutzen, sonst gibt es eine volle Sekunde als Bruchteil.

?

McCurtis verwendet doch 2^32 ?

2^32 oder (2^32)-1 ist kein gravierender Unterschied, sondern 0.996432412672 vs. 0,99643241244 ;)

Es muss -1 drinne sein weil die null auch dargestellt wird und zwar wenn alle bits null sind

Nein.

Es gibt 2^32 Möglichkeiten von Bruchteilen, von 0 bis 2^32-1.

michael_x: 2^32 oder (2^32)-1 ist kein gravierender Unterschied,

Na ja, es ist der Unterschied zwischen richtig und falsch (im Sinne von mathematisch korrekt) und den halte ich schon für gravierend. ;)

Das Verständnisproblem mit den Bruchteilen ist allgemein sehr verbreitet, ich habe hier schon zigmal solchen Code gesehen

float mV = 5.0*analogRead(somePin)/1023;

Da liegt der Fehler schon in einer anderen Größenordnung.

Im Dezimalsystem teilt man ja auch durch 10 um Zehntel zu erhalten, obwohl die höchste Nachkommastelle 9 ist.

Whandall:
Das Verständnisproblem mit den Bruchteilen ist allgemein sehr verbreitet,
ich habe hier schon zigmal solchen Code gesehen

float mV = 5.0*analogRead(somePin)/1023;

Da liegt der Fehler schon in einer anderen Größenordnung.

Ein Soziologe, ein Physiker und ein Mathematiker fahren im Zug.
Sie schauen aus dem Fenster und sehen ein schwarzes Schaf.

Soziologe: “Hier gibt es schwarze Schafe.”

Physiker: “Falsch. Hier gibt es mindestens ein schwarzes Schaf.”

Mathematiker: “Immer noch falsch. Hier gibt es mindestens ein Schaf, das auf mindestens einer Seite schwarz ist.”
:stuck_out_tongue:

Und dann zog der Wolf den verfärbten Pelz aus... ;)

Whandall: Na ja, es ist der Unterschied zwischen richtig und falsch (im Sinne von mathematisch korrekt) und den halte ich schon für gravierend. ;)

Nö, ist nicht der Unterschied 8) Falsch ist in

(((2^32)-1)*232)/(10^12)

hauptsächlich das " *232 ", was zu 0,996432412672 oder 0,99643241244 führt.

ob jetzt mit dem "richtigen" Wert 1.0 oder ( 1.0 - 2^-32 ) herauskäme, ist mir als Ingenieur ("Da ist was, das könnte man als schwarzes Schaf verwenden") egal.

Pragmatismus an Stelle exakter Wissenschaft?

Bei Berechnungen?

Dann kann man ja direkt schätzen (stimmt auch oft... im pragmatischen Sinne).

Die nächste Stufe ist dann Raten, dann kommt Würfeln.

;)

Whandall: Pragmatismus an Stelle exakter Wissenschaft?

Bei Berechnungen?

Dann kann man ja direkt schätzen (stimmt auch oft... im pragmatischen Sinne).

Die nächste Stufe ist dann Raten, dann kommt Würfeln.

;)

Hola tengo un problema con un vaivén un motor paso a paso con dos finales de carrera no me funciona porque no puedo a nivel de software enclavar el final de carrera si tienen alguna solución les agradezco