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
Składnia: [ Pobierz ] [ Ukryj ]
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/