-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.P
OSTED!not-for-mail
From: "Grzegorz Niemirowski" <g...@p...onet.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: Biblioteka standardowa time.h i mikrokontrolery
Date: Fri, 14 Sep 2018 11:00:04 +0200
Organization: ATMAN - ATM S.A.
Lines: 56
Message-ID: <pnftak$irt$1@node2.news.atman.pl>
References: <5b98d6f0$0$669$65785112@news.neostrada.pl>
<5b99f9c7$0$675$65785112@news.neostrada.pl>
<pnda19$748$1@node2.news.atman.pl>
<5b9b6444$0$587$65785112@news.neostrada.pl>
NNTP-Posting-Host: 89-74-238-96.dynamic.chello.pl
Mime-Version: 1.0
Content-Type: text/plain; format=flowed; charset="UTF-8"; reply-type=original
Content-Transfer-Encoding: 8bit
X-Trace: node2.news.atman.pl 1536915604 19325 89.74.238.96 (14 Sep 2018 09:00:04 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Fri, 14 Sep 2018 09:00:04 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: OE PowerTool 4.5
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.7451
X-WWW: http://www.grzegorz.net/
Xref: news-archive.icm.edu.pl pl.misc.elektronika:736613
[ ukryj nagłówki ]Atlantis <m...@w...pl> napisał(a):
> Spróbowałem nawet zerowania struktury za pomocą funkcji memset, ale to
> chyba nie to.
W takim razie nie wiem. Niemniej ciągle się kłania monitorowanie wartości
RTC. To też jest odpowiedź na poniższe dwa Twoje akapity. Bez sprawdzenia
poprawności działania RTC nie ma
co się w ogóle zajmować time.h.
> Mam jeszcze jedną hipotezę - zauważyłem, że podczas ustawiania zegara na
> początku pracy programu (kod wygenerowany przez STM32CubeMX) podawane są
> również dodatkowe opcje (np. coś związanego ze zmianą czasu) a także
> dzień tygodnia. W swojej funkcji synchronizującej czas pominąłem te
> linijki. Po powrocie do domu zobaczę, jak będzie się zachowywał
> uzupełniony kod.
Zainicjuj zgodnie z samplami.
sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
sTime.StoreOperation = RTC_STOREOPERATION_RESET;
Nie zostawiaj niezainicjowanych pól w strukturach.
> Tak BTW przyszedł mi do głowy jeszcze jeden pomysł - z tego co pamiętam
> w niektórych modelach PIC32 przed zmianą ustawień zegara konieczne było
> odblokowanie tej możliwości poprze wpisanie odpowiedniej wartości do
> jednego z rejestrów. Może coś takiego ma też miejsce przynajmniej w
> niektórych STM32? W takiej sytuacji oczekiwałbym jednak, że autorzy HAL
> wzięli to pod uwagę. Może jednak trzeba to zrobić osobno?
W STM32 też tak jest i to chyba we wszystkich. Autorzy HAL jak najbardziej o
to zadbali. Obejrzyj sobie kod funkcji ustawiających datę i czas. Jest tam
wykonywane odblokowywanie rejestrów.
>> Przy okazji: zawsze używaj time_t bo nie masz gwarancji, że timestamp
>> będzie 32-bitowy. To się może zmieniać w zależności od wersji
>> kompilatora.
> Hmm... Przecież chyba właśnie na tym polega sens stosowania typów
> zmiennych w formacie *int*_t? Rozumiem, gdybym użył typu unsigned long,
> jednak uint32_t 32-bitową zmienną bez znaku? Czyżbym nie miał racji?
Oczywiście jak najbardziej masz rację, że uint32_t to typ 32-bitowy bez
znaku i masz gwarancję, że zawsze tak będzie. Natomiast mnie chodziło o typ
time_t. Napisałem kiedyś takie coś:
struct tm * t = localtime((time_t *)&seconds);
a seconds było zadeklarowane jako uint32_t
I to działało poprawnie w GCC 5.4. Natomiast w GCC 7.2 przestało,
localtime() zaczęło zwracać bzdury. Dlaczego? Bo time_t zmieniono na
64-bitowy i localtime() pobierało za pomocą wskaźnika nie tylko zmienną
seconds ale także 4 bajty leżące obok w pamięci. Gdybym od razu zadeklarował
seconds jako time_t to nie byłoby problemu przy zmianie wersji GCC. uint32_t
to był nadal uint32_t, ale time_t zmieniono z uint32_t na uint64_t. Pewnie w
Twoim kodzie nie ma takiego problemu, ale pomyślałem, że warto wspomnieć.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Następne wpisy z tego wątku
- 14.09.18 11:09 Marek
Najnowsze wątki z tej grupy
- ciekawy układ magnetofonu
- Mikroskop 3D
- Jak być bezpiecznym z Li-Ion?
- Szukam monitora HDMI ok. 4"
- Obcinaczki z łapaczem
- termostat do lodowki
- SEP 1 kV E
- Aku LiPo źródło dostaw - ktoś poleci ?
- starość nie radość
- Ataki hakerskie
- Akumulatorki Ni-MH AA i AAA Green Cell
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- DS1813-10 się psuje
Najnowsze wątki
- 2024-12-21 ciekawy układ magnetofonu
- 2024-12-21 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2024-12-21 Warszawa => Java Developer <=
- 2024-12-21 Zalesie Borowe => Medical Equipment Service Engineer <=
- 2024-12-21 Żerniki => Specjalista ds. Employer Brandingu <=
- 2024-12-21 jak tacy debile
- 2024-12-20 Precedensy politycznie motywowanego nie wydawania w UE
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-20 czyste powietrze
- 2024-12-20 Katowice => Analyst in the Trade Development department (experience wi
- 2024-12-20 Opole => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-12-20 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=