• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Dokładne ustawianie czasu w DS3231?
#1
Dziewczynki i chłopcy Smile

Jak ustawić dokładny czas w DS3231?

Można ustawić czas kompilacji dodając linię:


Kod:
clock.setDateTime(__DATE__, __TIME__);

Ale ona NIE ustawia dokładnego czasu - występuje opóźnienie (u mnie dokładnie 10s)
wynikające prawdopodobnie z tego, że kompilacja i wgranie trwa chwile.
Po zakomentowaniu tej linii i ponownym wgraniu czas jest opóźniony o te 10s.

Pomijając ręczne ustawianie za pomocą klawisz, których narazie nie ogarnąłem -
czy da się to jakoś skorygować?

Teraz wpadłem na pomysł, że można przy kompilacji ustawiać czas na aktualny + 10s
ale to jest leczenie wstydliwej choroby kremem Nivea ;Winkie podoba mi się Sad

Inne pomysły?

P.W.L.
 
Odpowiedź
#2
Esp 01 pobrac czas z neta i ustawiac raz na jakis czas?

Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Odpowiedź
#3
Wgrać szkic i przez port szeregowy ustawić ?
 
Odpowiedź
#4
Na czym to stoi?
Jaki uc?

Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Odpowiedź
#5
Stoi na Arduino Wink Mega2560.

Przez RS oczywiście można grzebać ale wolałbym automatycznie...
Netu nie ma i nie będzie.

P.W.L.
 
Odpowiedź
#6
To skad wezmiesz czas? Pozostaje recznie przez terminal

Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Odpowiedź
#7
(14-01-2019, 08:16)PierwszyWolnyLogin napisał(a): Teraz wpadłem na pomysł, że można przy kompilacji ustawiać czas na aktualny + 10s
To złe rozwiązanie, bo nie jest to 10 sekund tylko około 10 sekund. Zależnie od wielu czynników np wielkości programu, przesuniecie czasu może być mniejsze lub większe.
Jak dodasz 10 sekund gdy czas w komputerze będzie wskazywał np 55 sekund? Jak rozwiążesz ten problem, to co gdy w komputerze minuty/sekundy będą wskazywać 59:57. Jak to rozwiążesz....i tak dojdziemy do roku przestępnego. Dodawanie czasu realizuje się prze przeliczenie daty z formatu "ludzkiego" na sekundy od wybranego okresu, wykonanie operacji i ponowne przeliczenie. Wiesz jak to zrobić?

Na koniec zostawiłem najważniejsze!
Próbowałeś co się stanie jak za np godzinę po wgraniu softu wykonasz reset uC? Jaki czas pokazuje zegar? Nie zastanawiałeś się nad tym? No to spróbuj i zastanów się dlaczego jest źle, czym jest RTC, jak należy go obsługiwać?


PS
Jesteś bardzo leniwy, bo temat był już poruszany na tym forum! Wystarczyło poszukać i już dawno miałbyś odpowiedź.
Nie masz oscyloskopu, analizatora logicznego? Może wystarczy Zaawansowana Sonda Logiczna?

Kod z Delay i/lub bez WDT to nie kod, to DEMO!
Kod wymaga komentarzy!




 
Odpowiedź
#8
Człowieku - jeśli nie masz ochoty pomagać (co podkreślasz) to może przynajmniej NIE WP.....AJ się ze swoimi mądrościami? Nikogo one nie interesują!

Przeszukałem forum pod kątem DS3231 i nic nie znalazłem. Być może temat jest omówiony gdzieś przy okazji, ale nie znajdę tego łatwo. Tak wiem, ze to nie "dokładnie" 10s - błąd poniżej 1s mi nie przeszkadza. Tak wiem jak zamienić czas na ilość s i z powrotem etc.

Człowiekowi inteligentnemu wystarczy jedno zdanie, żeby komuś pomóc, ty musiałeś napisać az kilka akapitów zeby wykazać jakim jestem ignorantem i nic nie wnieść do wątku. Polepszyło ci się przynajmniej samopoczucie?

Zatrudnij się na elektrodzie - szukają adminów.

P.W.L.
 
Odpowiedź
#9
A moze zrob obsluge pilota i jakies menu do zmiany czasu..nie wiem ci to za urzadze nie, ma lcd?
Jak nie przy pomocy kompa to z pilota jest latwiej..

Kiedys zrobilem taki:

https://youtu.be/fm0RLE2M9W8



Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Odpowiedź
#10
W tym zegarku najłatwiej ustawić czas wysyłając odpowiednią linijkę z terminala. W jednej z bibliotek jest przykład jak to zrobić.
Kod:
// TssmmhhWDDMMYYYY aka set time
   if (cmd[0] == 84 && cmdsize == 16) {
       //T355720619112011
https://github.com/rodan/ds3231.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości