ATNEL tech-forum https://forum.atnel.pl/ |
|
ds3231 https://forum.atnel.pl/topic20992.html |
Strona 1 z 1 |
Autor: | mateusz19955 [ 14 lip 2018, o 15:31 ] |
Tytuł: | ds3231 |
Witam, bawię się układem zegara rtc DS3231. Zegar i kalendarz uruchomiłem i działa fajnie, ale mam problem z alarmami. Może mi ktoś napisać jak sterować tymi alarmami? Potrzebuję zrobić program, który będzie reagował na przerwania od tego rtc i wybudzał procesor, następnie robił jakiś pomiar zapisywał do eepromu i procesor znów się będzie usypiał. Alarm ten chciałbym ustawiać aby to przerwanie na wyjściu SQW/INT występowało co 6 minut. Oczywiście ten program sobie sam napiszę, ja tylko chcę aby ktoś mi napisał jak uruchomić i jak ustawiać czas w tym alarmie. |
Autor: | mczarny [ 14 lip 2018, o 16:29 ] |
Tytuł: | Re: ds3231 |
cześć Jak ustawiasz sobie datę i czas przy starcie DS-a po raz pierwszy? Zrób tak samo dla alarmu tylko ustawiając czas zapisujesz rejestry 0x00,0x01,0x02 dla daty 0x03 do 0x06 Teraz dla alarmu poczynając od rejestru 0x07 czyli sekundy a kończąc na 0x0A czyli dzień miesiąca Funkcja mogłaby wyglądać tak język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. funkcja nie jest sprawdzona wiec przetestuj. Pamiętaj również o ustawieniu przerwania na INT scalaka dla alarmu pozdrawiam |
Autor: | chi.cygni [ 14 lip 2018, o 20:17 ] |
Tytuł: | Re: ds3231 |
Nie bardzo widzę, w jaki sposób jesteś w stanie otrzymać przerwanie od tego zegara co 6 minut. Na stronie 12 noty katalogowej tego zegara masz wyszczególnione sytuacje, które można ustawić, aby wystąpiło przerwanie (co sekundę, co minutę, gdy odpowiadają sobie minuty i sekundy, gdy odpowiadają sobie godziny i minuty, itp). Przerwanie nastąpi, gdy bieżący czas (adresy rejestru 00h do 06h) jest równy temu ustawionemu przez Ciebie w tych wierszach rejestru, które są odpowiedzialne za alarm (czyli 07h do 0Dh). Oczywiście, nie wszystkie pozycje muszą być ustawione jednocześnie, a tylko te, które Cię interesują. Wracając do tego przerwania co 6 minut. Ja zrobiłbym to już w mikrokontrolerze. Odebrał przerwanie co 1 sekundę (a to ma "fabrycznie" ustawione jako jedną z opcji generowania przerwania na pinie INT/SQW), ustawił zmienną, inkrementował ją co przerwanie aż dojdzie do 360 i wtedy zmienną zerował, a aktywował zdarzenie. Albo ustawił przerwanie na co minutę i .... (dalej jak powyżej). Zapoznaj się też z tym wątkiem (a szczególnie z ostatnim wpisem): https://forum.atnel.pl/topic16307.html |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |