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?
raspbian
timekeeping
system-clock
SDsolar
źródło
źródło
Odpowiedzi:
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ą.
źródło
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
źródło
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ę:
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
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 0
go poprawnie wyłączałem, aby obrazować kartę SD za pomocą Win32DiskImager na PC.To zajmuje chwilę, jak widać 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:
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?
źródło