Goto page Previous 1, 2
Grzegorz Niemirowski
Guest
Tue Oct 17, 2023 1:21 pm
Jacek Konieczny <jajcus@jajcus.net> napisał(a):
Quote:
RTC może oznaczać różne rzeczy. Dla Ciebie to zegar podtrzymywany baterią
(tym jest 'RTC' w PC i tym są 'moduły RTC' które można kupić do jakiegoś
Arduino), ale jako element mikrokontrolera to po prostu jeden z zegarów,
ten który zawsze liczy sekundy/godziny, a nie jakieś inne cykle i może np.
obudzić maszynę o zadanej porze ze stanu uśpienia, ale bez normalnego
zasilania nie działa.
Jacek
Otóż można się zdziwić. W NRF52 jest RTC, ale skrót rozwija się jako Real
Time Counter i jest pojedynczym licznikiem, bez rejestrów godzin czy minut.
I nie liczy sekund, tylko właśnie te "inne cykle".
--
Grzegorz Niemirowski
https://www.grzegorz.net/
M M
Guest
Tue Oct 17, 2023 4:15 pm
Bo właściwym sposobem liczenia czasu jest liczyć sekundy względem umownego początku w UTC, a potem tylko wyświetlać użytkownikowi zgodnie z lokalnymi zwyczajami - strefy czasowe, letni/zimowy (niestety nadal, już niedługo) itp. Chociaż w końcu po 50 latach postanowiono skasować sekundy przestępne...
Grzegorz Niemirowski
Guest
Tue Oct 17, 2023 4:29 pm
M M <marekm72@gmail.com> napisał(a):
Quote:
Bo właściwym sposobem liczenia czasu jest liczyć sekundy względem
umownego początku w UTC, a potem tylko wyświetlać użytkownikowi zgodnie z
lokalnymi zwyczajami - strefy czasowe, letni/zimowy (niestety nadal, już
niedługo) itp. Chociaż w końcu po 50 latach postanowiono skasować sekundy
przestępne...
Tak się tam właśnie robi, tylko są potrzebne pewne kombinacje. Ten licznik
ma tylko 12-bitowy preskaler, więc przy kwarcu zegarkowym największe okresy
jakie odmierza to 1/8 sekundy. Trzeba więc jego wartość dzielić przez 8.
Dodatkowo licznik też ma mało bitów, więc tym wspomnianym początkiem nie
może być rok 1970. W praktyce można liczyć od zera, tylko w momencie
inicjalizacji zapamiętać jaki był aktualny czas i potem dodawać przy
zwracaniu wartości.
time_t rtc::getCurrentTime(void) {
return rtc_inst.p_reg->COUNTER / 8 + timeDiff;
}
void rtc::setCurrentTime(time_t time) {
timeDiff = time;
nrfx_rtc_counter_clear(&rtc_inst);
}
--
Grzegorz Niemirowski
https://www.grzegorz.net/
io
Guest
Tue Oct 17, 2023 6:49 pm
W dniu 17.10.2023 o 13:21, Grzegorz Niemirowski pisze:
Quote:
Jacek Konieczny <jajcus@jajcus.net> napisał(a):
RTC może oznaczać różne rzeczy. Dla Ciebie to zegar podtrzymywany
baterią (tym jest 'RTC' w PC i tym są 'moduły RTC' które można kupić
do jakiegoś Arduino), ale jako element mikrokontrolera to po prostu
jeden z zegarów, ten który zawsze liczy sekundy/godziny, a nie jakieś
inne cykle i może np. obudzić maszynę o zadanej porze ze stanu
uśpienia, ale bez normalnego zasilania nie działa.
Jacek
Otóż można się zdziwić. W NRF52 jest RTC, ale skrót rozwija się jako
Real Time Counter i jest pojedynczym licznikiem, bez rejestrów godzin
czy minut. I nie liczy sekund, tylko właśnie te "inne cykle".
A co to za różnica?
io
Guest
Tue Oct 17, 2023 6:50 pm
W dniu 17.10.2023 o 16:15, M M pisze:
Quote:
Bo właściwym sposobem liczenia czasu jest liczyć sekundy względem umownego początku w UTC, a potem tylko wyświetlać użytkownikowi zgodnie z lokalnymi zwyczajami - strefy czasowe, letni/zimowy (niestety nadal, już niedługo) itp. Chociaż w końcu po 50 latach postanowiono skasować sekundy przestępne...
Gdzie tak postanowiono?
Grzegorz Niemirowski
Guest
Tue Oct 17, 2023 8:05 pm
io <io@op.pl.invalid> napisał(a):
Quote:
A co to za różnica?
Dla Ciebie może być nieistotna, dla innego istotna.
Ale różnic jest więcej. Np. brak możliwości ustawienia alarmu tak jak w
normalnych RTC, np. codziennie 8:00. Można tylko ustawić jakąś wartość, przy
której jednokrotnie będzie przerwanie. Nie ma też podtrzymania bateryjnego.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Piotr Gałka
Guest
Tue Oct 17, 2023 10:01 pm
W dniu 2023-10-17 o 13:21, Grzegorz Niemirowski pisze:
Quote:
Otóż można się zdziwić. W NRF52 jest RTC, ale skrót rozwija się jako
Real Time Counter i jest pojedynczym licznikiem, bez rejestrów godzin
czy minut. I nie liczy sekund, tylko właśnie te "inne cykle".
Taki RTC (min 32 bitowy licznik sekund) od zawsze nam się marzy.
Ciągłe przeliczanie z daty na sekundy i z powrotem to rodzaj idiotyzmu.
Ale skoro już dawno to opanowane to i to przeliczanie jest do przeżycia.
Jako podstawę nasze kontrolery mają czas Greenwich w sekundach i z takim
czasem wszystkie zdarzenia są zapisywane. Pozwala to np. uniknąć
niejednoznaczności przy zmianie czasu na zimowy.
A strefa czasowa i czy jest zmiana czasu to tylko parametry.
P.G.
Grzegorz Niemirowski
Guest
Tue Oct 17, 2023 10:15 pm
Piotr Gałka <piotr.galka@cutthismicromade.pl> napisał(a):
Quote:
Taki RTC (min 32 bitowy licznik sekund) od zawsze nam się marzy.
W NRF52 zrobili 24-bitowy, co przy taktowaniu 8 Hz powoduje przepełnianie
się licznika co 3 tygodnie :)
Quote:
Ciągłe przeliczanie z daty na sekundy i z powrotem to rodzaj idiotyzmu.
Ale skoro już dawno to opanowane to i to przeliczanie jest do przeżycia.
Jako podstawę nasze kontrolery mają czas Greenwich w sekundach i z takim
czasem wszystkie zdarzenia są zapisywane. Pozwala to np. uniknąć
niejednoznaczności przy zmianie czasu na zimowy.
A strefa czasowa i czy jest zmiana czasu to tylko parametry.
Słuszne podejście.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Piotr Gałka
Guest
Wed Oct 18, 2023 12:37 pm
W dniu 2023-10-17 o 22:15, Grzegorz Niemirowski pisze:
Quote:
W NRF52 zrobili 24-bitowy, co przy taktowaniu 8 Hz powoduje
przepełnianie się licznika co 3 tygodnie
Nie wiem co to NRF52 i nie chce mi się sprawdzać, ale skoro na
supercapie zakładam podtrzymanie czasu przez 10 dni to przepełnianie
chodzącego wtedy licznika co 3 tygodnie jest do przyjęcia.
Wystarczy zapamiętać stan licznika w momencie zaniku i przy powrocie
zasilania będzie wiadomo, czy trzeba zwiększyć wyższy licznik o jeden
czy nie, a więcej przepełnień i tak kondensator nie utrzyma.
P.G.
Goto page Previous 1, 2