Jak dokładny jest pomiar czasu Raspberry Pi?

17

Zdaję sobie sprawę, że ponieważ Raspberry Pi nie ma wbudowanego sprzętowego zegara czasu rzeczywistego, mogą pojawić się pewne problemy z dokładnym mierzeniem czasu, nawet jeśli wytrwałość podczas restartów nie jest wymagana .

Można to w dużej mierze złagodzić, uruchamiając demona NTP, który będzie stale poprawiał czas lokalny, ale NTP nie jest opcją, jeśli Raspberry Pi nie jest podłączony do sieci.

Więc jeśli pozostawię włączony Raspberry Pi na początku z dokładnym czasem, o ile powinienem oczekiwać, że raportowany czas będzie odchodził od rzeczywistego czasu lokalnego?

A może pomiędzy ponownymi uruchomieniami?

SDsolar
źródło
To będzie oprogramowanie utrzymujące czas, gdy nie będzie podłączone, kto to? Powiedziałbym, że utrzymanie czasu oprogramowania jest z natury dokładne.
Jivings
1
Mówisz o maksymalnie 10 minutach w najgorszym roku (ekstremalne temperatury -20 i niższe / +60 i wyższe) (zoptymalizowane do pracy w 20 stopniach). Nie jest tak źle. Zegar czasu rzeczywistego teraz jest używany tylko do przechowywania czasu atomowego ... jak ... bardzo precyzyjne funkcje matematyczne, które muszą mierzyć czas wykonania lub coś gorączkowego. Wiele urządzeń upuszcza kryształ 32 kHz, ponieważ oscylatory są wystarczająco dobre do generowania sygnałów RF lub sygnału wideo bez poważnych komplikacji.
Piotr Kula,
@ppumkin Czy masz na to jakieś źródła? Spodziewałem się mniej dokładności z powodów, o których wspomniał Chris Stratton (brakowało przerw i tym podobnych).
1
Przepraszamy - tylko moja ogólna wiedza w tej dziedzinie i doświadczenie w używaniu oscylatorów zamiast kryształów. Brakujące przerwania będą mega ekstremalne! Gdyby było tak źle, nie wszyscy by to zrobili.
Piotr Kula,
To pytanie dotyczy bardziej Raspbian niż samego Pi. Pomysł ciągłego działania Pi przez ponad rok jest tak mało prawdopodobny, że sprawia, że ​​powyższe statystyki są nieistotne w porównaniu do tego, co dzieje się podczas ponownego uruchamiania.
SDsolar

Odpowiedzi:

9

Naprawdę są dwa problemy:

1) Dokładność samego oscylatora - który ma zmienne takie jak niepowtarzalność, wiek, temperatura itp. Szybki przegląd katalogowy sugeruje, że typowe kryształy zegara mikroprocesora są rzędu +/- 10-100 części na milion

2) Jeśli istnieje coś, co może powodować błędy pomiaru czasu w stosunku do oscylatora kwarcowego. To by było na przykład pominięte przerwanie lub problemy z przejściem, jeśli użyty zegar jest po mnożniku PLL - lub wpływ na dławienie zegara (jeśli jest używany).

Nawiasem mówiąc, NTP, chyba że bardzo dobrze wdrożone, może w rzeczywistości pogorszyć precyzyjne taktowanie względem siebie w krótkim okresie, ponieważ oznacza to, że zegar lokalny można zmienić tak, aby był zgodny z zewnętrznym autorytetem, a nie pozostawał zgodny z samym sobą.

Chris Stratton
źródło
8

Będzie to zależeć od użytego kryształu, może około 10 ppm. Naprawdę nie możesz na to liczyć, chyba że gdzieś zostanie to określone. Możesz być w stanie korzystać z GPS, jeśli nie jest podłączony do sieci. W przeciwnym razie można dodać układ RTC.

Będziesz potrzebował czegoś lepszego niż tylko czasu na oprogramowanie, jeśli istnieje szansa, że ​​RPi straci moc lub ulegnie awarii.

Mam nadzieję, że niedługo dołączę RTC do GPIO

John La Rooy
źródło
3
Kevin Sangeelee opublikował szczegółowy opis dodawania RTC do Raspberry Pi susa.net/wordpress 2012
Steve Robillard
1
Inną alternatywą dla nie podłączonego do sieci Pi jest wykorzystanie radiowych sygnałów czasowych, jak omówiono tutaj designspark.com/de/content/atomic-time-raspberry-pi
Steve Robillard
+1 Do podłączenia RTC do GPIO, jeśli potrzebny jest dokładniejszy czas. Może nawet odbiornik atomowy .. :-) fajna sugestia!
Piotr Kula,
Nie mam tutaj wielkiego doświadczenia, ale chciałbym powiedzieć, że „stacja radiowa WVVB lub CHU” jest dokładniejszym deskryptorem niż „odbiornik radiowy atomowy” lub podobny. :) Dobry pomysł. Dla osób w zasięgu CHU jest nawet kod c, aby pobrać dźwięk i parsować czas.
Tai Viinikka
1
OK, oto rozwiązanie GPS: raspberrypi.stackexchange.com/questions/68816/...
SDsolar
6

Interpretacja pytania dotyczącego Raspberry Pi z Raspbian.

System operacyjny ma dominujący wpływ na sposób, w jaki Rapberry Pi utrzymuje czas.

Odpowiedź: Bez zewnętrznego źródła wewnętrzny zegar jest wysoce nieprzewidywalny, jeśli chodzi o samodzielne utrzymywanie czasu.


Najnowsze studia przypadków:


To jest wykres z rejestratora danych Raspberry Pi 3 B, który nagle stracił moc na około godzinę:

wprowadź opis zdjęcia tutaj

Widać wyraźnie, że po przywróceniu zasilania uruchomiło się i ponownie uruchomiło rejestrowanie danych.

Ale zegar Raspbian cofa się w czasie.

Następnie możesz zobaczyć, jak przeskakuje do właściwej godziny, gdy tylko otrzyma aktualizację od time.nist.gov


National Bureau of Standards zaleca użycie time.nist.gov, ponieważ jest to inteligentny adres URL, który znajduje najszybszy i najdokładniejszy dostępny czas. Zarówno Linux (ubuntu, jak i Raspbian) i Windows domyślnie używają pul, które mogą być o wiele przeskoków od Master Clock.

Jak ustawić Raspbian, aby używał podstawowego serwera czasu time.nist.gov?


Oto znowu nowsza fabuła z tego samego systemu.

Ponieważ wczoraj przerwał (patrz wykres powyżej), zawsze sudo init 0go poprawnie wyłączałem, aby obrazować kartę SD za pomocą Win32DiskImager na PC.

To zajmuje chwilę, jak widać tutaj.

wprowadź opis zdjęcia tutaj

W tym możesz zobaczyć, jak Raspbian ponownie uruchomił swój zegar dokładnie tam, gdzie go przerwał. Wygląda na to, że zarejestrował dobre dane (podskakuje) w ciągu minuty.

Następnie pokazuje, co się stanie, gdy otrzyma aktualizację czasu. Skacze do przodu w prawo.

Skok do przodu (kilka godzin) to czas, który został pominięty przez Raspbian podczas tworzenia karty SD.


Oto zaskakujący zwrot akcji.

System po prostu zamarł. Świecą się zarówno czerwone, jak i zielone światła, bez migotania.

Ogłoszone (za pomocą espeak) w ciągu kilku minut przez zadanie cron oparte na pingach głównego serwera, które monitoruje rejestratory danych pod kątem takiego zdarzenia. Więc nie było wolne dłużej niż kilka minut.

Wyciągałem moc przez kilka sekund. Uruchomiłem go ponownie - diody LED wyglądają normalnie.

Oto jak ta usterka wpłynęła na rejestrowanie danych:

wprowadź opis zdjęcia tutaj

Zegar Raspbian skoczył o 2 godziny do przodu, gdy system został ponownie uruchomiony.

Następnie aktualizacja czasu z time.nist.gov cofa ją.


Odpowiedź: Bez zewnętrznego źródła zegar wewnętrzny jest nieprzewidywalny, jeśli chodzi o utrzymanie czasu rzeczywistego na własną rękę.


Jak ustawić Raspbian, aby używał podstawowego serwera czasu time.nist.gov?

SDsolar
źródło
1
Mogę to potwierdzić. Bez połączenia z Internetem lub daty i godziny RTC z malin jest bezużyteczne.
Łukasz Jakubek,
Są odbiorniki radiowe VLF z demodulatorami zegarowymi. Na przykład tutaj jest dostrojony do 60 kHz słychać WWV w Kolorado w całej Ameryce Północnej. amazon.com/CANADUINO-60kHz-Atomic-Clock-Receiver/dp/B01KH3VEGS Są to te same moduły, których używają w niektórych zegarach. Współpracują z Arduino i Pi.
SDsolar