Wie genau ist die Zeitmessung von Raspberry Pi?

17

Mir ist klar, dass Raspberry Pi über keine integrierte Hardware-Echtzeituhr verfügt, sodass sich möglicherweise Probleme mit der genauen Zeitmessung ergeben, auch wenn ein dauerhafter Neustart nicht erforderlich ist .

Dies kann weitgehend durch Ausführen eines NTP-Daemons, der die lokale Zeit kontinuierlich korrigiert, verringert werden. NTP ist jedoch keine Option, wenn der Raspberry Pi nicht mit einem Netzwerk verbunden ist.

Wenn ich also einen Raspberry Pi am Anfang zeitgenau eingeschaltet lasse, wie viel sollte ich dann damit rechnen, dass die gemeldete Zeit von der tatsächlichen Ortszeit abweicht?

Und wie wäre es zwischen Neustarts?

SDsolar
quelle
Es wird Software, die Zeit behält, wenn keine Verbindung besteht. Ich würde sagen, dass die Zeitmessung bei Software von Natur aus genau ist.
Jivings
1
Sie sprechen von maximal 10 Minuten pro Jahr (extreme Temperaturen von -20 und niedriger / +60 und höher) (optimiert für 20-Grad-Betrieb). Ist doch nicht so schlimm. Eine Echtzeituhr, die jetzt ein Tag ist, wird nur für die Atomzeiterfassung verwendet. Zum Beispiel für sehr genaue mathematische Funktionen, mit denen die Ausführungszeit oder etwas Hektisches gemessen werden muss. Viele Geräte lassen 32-kHz-Quarze fallen, da Oszillatoren gut genug sind, um HF-Signale oder Videosignale ohne ernsthafte Komplikationen zu erzeugen.
Piotr Kula
@ppumkin Hast du irgendwelche Quellen dafür? Aus den von Chris Stratton genannten Gründen (verpasste Interrupts und dergleichen) hatte ich weniger Genauigkeit erwartet.
1
Entschuldigung - Nur meine allgemeinen Kenntnisse auf dem Gebiet und meine Erfahrung mit der Verwendung von Oszillatoren anstelle von Kristallen. Fehlende Interrupts werden extrem! Wenn es so schlimm wäre, würde es nicht jeder tun.
Piotr Kula
Bei dieser Frage geht es mehr um Raspbian als um den Pi selbst. Und die Idee, einen Pi über ein Jahr lang ununterbrochen laufen zu lassen, ist so unwahrscheinlich, dass die obigen Statistiken im Vergleich zu dem, was während des Neustarts passiert, bedeutungslos werden.
SDsolar

Antworten:

9

Es gibt wirklich zwei Probleme:

1) Die Genauigkeit des Oszillators selbst - der Variablen wie Einzigartigkeit, Alter, Temperatur usw. aufweist. Eine schnelle Katalogeinsicht legt nahe, dass typische Mikroprozessor-Taktkristalle in der Größenordnung von +/- 10-100 ppm liegen

2) Wenn es irgendetwas gibt, das Zeitmessfehler in Bezug auf den Quarzoszillator verursachen könnte. Das sind Dinge wie verpasste Interrupts oder Übergangsprobleme, wenn der verwendete Takt hinter einem PLL-Multiplikator liegt - oder durch Taktdrosselung beeinflusst wird (wenn er verwendet wird).

Im Übrigen kann NTP, sofern es nicht sehr gut implementiert ist, das genaue, sich selbst betreffende Timing kurzfristig verschlechtern , da es bedeutet, dass die lokale Uhr geändert werden kann, um mit einer externen Behörde konsistent zu sein, anstatt mit sich selbst konsistent zu bleiben.

Chris Stratton
quelle
8

Es hängt von dem verwendeten Kristall ab, vielleicht 10 ppm oder so. Man kann sich nicht wirklich darauf verlassen, es sei denn, es ist irgendwo anders angegeben. Möglicherweise können Sie GPS verwenden, wenn Sie nicht mit einem Netzwerk verbunden sind. Andernfalls kann ein RTC-Chip hinzugefügt werden.

Sie brauchen etwas Besseres als nur Software-Zeit, wenn die Möglichkeit besteht, dass das RPi an Leistung verliert oder abstürzt.

Ich hoffe, bald eine RTC an den GPIO anschließen zu können

John La Rooy
quelle
3
Kevin Sangeelee hat einen detaillierten Bericht über das Hinzufügen einer RTC zum Raspberry Pi veröffentlicht. Susa.net/wordpress/2012/06/…
Steve Robillard
1
Eine andere Alternative für einen nicht vernetzten Pi ist die Verwendung von Funkzeitsignalen
Steve Robillard
+1 Zum Verbinden einer RTC mit einem GPIO, wenn eine genauere Zeit benötigt wird. Vielleicht sogar ein Atomempfänger .. :-) netter Vorschlag!
Piotr Kula
Ich habe hier keine große Expertise, aber ich möchte sagen, dass "Radiosender WVVB oder CHU" ein genauerer Deskriptor ist als "Atomfunkempfänger" oder ähnliches. :) Guter Vorschlag. Für diejenigen, die in der Nähe von CHU sind, gibt es sogar einen C-Code, mit dem der Ton abgerufen und die Zeit analysiert werden kann.
Tai Viinikka
1
OK, dann ist hier eine GPS-Lösung: raspberrypi.stackexchange.com/questions/68816/…
SDsolar
6

Interpretieren Sie die Frage nach einem Himbeer-Pi mit Raspbian.

Das Betriebssystem ist der dominierende Einfluss darauf, wie der Rapberry Pi die Zeit hält.

Antwort: Ohne eine externe Quelle ist die interne Uhr sehr unvorhersehbar, da sie die Zeit alleine hält.


Aktuelle Fallstudien:


Dies ist eine Handlung eines Raspberry Pi 3 B-Datenloggers, der plötzlich für etwa eine Stunde die Stromversorgung verlor:

Bildbeschreibung hier eingeben

Sie können deutlich erkennen, dass beim Wiedereinschalten die Datenprotokollierung gestartet und neu gestartet wurde.

Aber die Raspbian Uhr springt in der Zeit zurück.

Dann können Sie sehen, wie es vorwärts zur richtigen Zeit springt, sobald es ein Update von time.nist.gov erhält


Das National Bureau of Standards empfiehlt die Verwendung von time.nist.gov, da es sich um eine intelligente URL handelt, die die schnellste und genaueste verfügbare Zeit ermittelt. Sowohl Linux (Ubuntu und Raspbian) als auch Windows verwenden standardmäßig Pools, die viele Sprünge von der Master Clock entfernt sein können.

Wie stelle ich Raspbian so ein, dass der primäre Zeitserver time.nist.gov verwendet wird?


Hier ist wieder eine neuere Handlung vom selben System.

Da es gestern unterbrochen wurde (siehe Grafik oben), habe ich sudo init 0es ordnungsgemäß heruntergefahren, um die SD-Karte mit Win32DiskImager auf einem PC abzubilden .

Es dauert eine Weile, wie hier zu sehen ist.

Bildbeschreibung hier eingeben

In dieser ist zu sehen, dass Raspbian seine Uhr zunächst genau dort neu gestartet hat, wo sie aufgehört hat. Es sieht so aus, als hätte es innerhalb einer Minute gute Daten aufgezeichnet (springt hoch).

Dann wird angezeigt, was passiert, wenn die Zeitaktualisierung eingeht. Es springt nach rechts vorwärts.

Der Betrag, um den es nach vorne springt (ein paar Stunden), ist die Zeit, die Raspbian verpasst hat, als die SD-Karte abgebildet wurde.


Hier ist eine überraschende Wendung.

Das System ist einfach eingefroren. Sowohl rote als auch grüne Lichter leuchten, ohne zu flackern.

Ankündigung (Verwendung espeak) innerhalb von Minuten durch den Ping-basierten Cron-Job des Hauptservers, der die Datenlogger auf ein solches Vorkommen überwacht. Es dauerte also nicht länger als ein paar Minuten.

Für ein paar Sekunden Strom gezogen. Neustart - LEDs sehen normal aus.

So hat sich dieser Fehler auf die Datenprotokollierung ausgewirkt:

Bildbeschreibung hier eingeben

Die Raspbian-Uhr sprang beim Neustart des Systems um 2 Stunden vorwärts.

Dann setzt das Zeit-Update von time.nist.gov es zurück.


Antwort: Ohne eine externe Quelle ist die interne Uhr nicht vorhersehbar, da die Echtzeit alleine bleibt.


Wie stelle ich Raspbian so ein, dass der primäre Zeitserver time.nist.gov verwendet wird?

SDsolar
quelle
1
Das kann ich bestätigen. Ohne Internetverbindung oder RTC ist Datum und Uhrzeit von Himbeere unbrauchbar.
Łukasz Jakubek
Es gibt VLF-Funkempfänger mit Uhrendemodulatoren. Zum Beispiel ist hier eine auf 60 KHz eingestellte WWV in Colorado in ganz Nordamerika zu hören. amazon.com/CANADUINO-60kHz-Atomic-Clock-Receiver/dp/B01KH3VEGS Dies sind dieselben Module, die in einigen Uhren verwendet werden. Sie arbeiten mit Arduino und Pi.
SDsolar