Hallo,
ab Seite 9, http://datasheets.maximintegrated.com/en/ds/DS3231.pdf
laut meinem Verständnis vom Datenblatt, muß man jeweils das 7. Bit der Register 07h bis 0Dh wie gewünscht setzen und im Control-Register 0Eh die gewünschten Alarme aktivieren damit ein Interrupt oder Takt am Ausgang INT/SQW geschalten wird.
Wenn ich jetzt im Control-Register 0Eh die Bits RS1 und RS2 auf 0 setze und INTCN auf 0 setze, dann taktet der Ausgang INT/SQW wie beschrieben sichtbar mit 1Hz.
Das 7. Bit von Register 07h bis 0Dh ist auf 1 gesetzt.
Wenn ich jetzt INTCN auf 1 setze und die Alarmsettings mit A1IE auf 1 aktiviere, dann sollte doch der Ausgang einmal pro Sekunde takten bzw. auslösen? Oder nicht? Ich sehe jedoch nichts takten und auch mittels Logikanalyser sehe ich keine Impulse. Laut Beschreibung ist der Ausgang low aktiv. Bin mir nicht sicher was das bedeutet. Ist der in Ruhe High und für das Interruptsignal kurz auf low oder ist der normalerweise low und geht kurz auf High wenn er muß. Auch lese ich im Datenblatt keine zeitliche Angabe wie lange er im aktiven Zustand sein Signal ändert. Hat jemand damit schon rumgespielt und Erfahrung gesammelt?
Bsp.
bitWrite(addr_0E, 0, 1); // Control Register 0x0E Bit 0 A1IE (Alarm 1 Settings enabled/disabled)
bitWrite(addr_0E, 1, 0); // Control Register 0x0E Bit 1 A2IE (Alarm 2 Settings enabled/disabled)
bitWrite(addr_0E, 2, 1); // Control Register 0x0E Bit 2 INTCN (0 = Takt aktiv, 1 = Alarm Register
bitWrite(addr_0E, 3, 0); // Control Register 0x0E Bit 3 RS1 (Takteinstellung wenn INTCN = 0
bitWrite(addr_0E, 4, 0); // Control Register 0x0E Bit 4 RS2 (Takteinstellung wenn INTCN = 0
RTC_DS3231_Register_007.ino (12.9 KB)
Hallo,
ich bin das Datenblatt nochmal durchgegangen. Jeweils das 7. Bit muß gesetzt werden laut der Tabelle, ich habe alle gesetzt. Von 07h bis 0Dh. Dann muß INTCN gesetzt sein, 0Eh Bit 2. Und A1IE ist gesetzt, 0Eh Bit 0. Jetzt sollte doch der Ausgang INT/SQW einmal pro Sekunde schalten? Tut er aber nicht. Was ist falsch?
Registeradresserinhalte:
07: 10000101
08: 10000000
09: 10000000
0A: 10000000
0B: 10000000
0C: 10000000
0D: 10000000
0E: 00000101
0F: 10001011
Hallo,
muß man denn wirklich alles selber machen ... 
Sobald man die Alarm Time/Date Register nutzen möchte, muß man immer dafür sorgen die Alarmflags vor Auslösung und danach zu löschen. Sonst wird das nüsch'd. That's it. Sonst bleibt der Ausgang dauerhaft auf Low bis man den Alarm praktisch löscht. Das wäre Bit 0 und/oder Bit 1 im Register 0Fh. Darf man nur mit 0 beschreiben.
Jou cool, kann man das essen? 
Hallo,
"kann man das essen" verstehe ich jetzt nicht.
Wenn ich meinen µC schlafen legen möchte, muß ich den irgendwie wieder aufwecken von außen. Was bietet sich da besser an als die ohnehin vorhandene RTC zu nutzen. Damit kann ich im Minutentakt den µC beschäftigen.
Du kannst das auch über den internen Watchdogtimer machen 
Hallo,
ja ich weis, dass ist mir aber zu aufwendig um auf vernünftige Aufwachintervalle zu kommen. Wie gesagt, die RTC ist eh vorhanden. Zudem lerne ich die Funktionen der RTC richtig kennen.
Hättest auch ein paar Tage warten können. Habe ein paar nakte DS3231 ICs zu hause liegen. Hab bislang noch nicht den vollen Umfang ausgeschöpft. Wollte erst das setzen etc richtig haben. Mit den Alarmsettings noch nicht auseinander gesetzt.
Hallo,
wer wartet schon gern.
Wenn ich manchmal nicht weiterkomme frage ich. Parallel dazu bleibe ich natürlich am Ball, soweit möglich. Hier hats mal wieder geklappt die Lösung selbst zu finden. Ich hänge meine "wilden" Funktionen" mal ran. Also wie es derzeit auch wirklich funktioniert. Aktuell löst er jede Sekunde über das Alarmregister aus und muß per Taster gelöscht werden. Das ist nicht zu verwechseln mit dem Square Wave 1Hz Takt. So zum testen eben. Eine Minute wäre zu lange zum warten. Bestimmt kann man die eine oder andere Funktion kürzer schreiben oder Wiederholungen in Schleifen zusammenfassen. Keine Ahnung. Die Funktionen kann man einzeln verwenden. Oder als Anregungen. Man muß nur aufpassen beim stellen einer Alarmzeit. Ob die RTC in Winter oder Sommerzeit oder völlig andere Zeitzone läuft. Ich habe für mich festgelegt das meine RTC immer auf Berliner Winterzeit läuft und ich im Sketch nur die Sommerzeit um eine Stunde korrigiere. Ich hänge mein bisheriges mal ran.
RTC_DS3231_Register_009.ino (16.6 KB)
Hallo,
gibt noch ein kleines Update. Ohne Bounce2 Library und ohne festes delay in der loop. Mit aktuellen Einstellungen löst der Alarm aller 30sec. aus, weil beide Alarmregister entsprechend gesetzt sind. Nach 3sec. erlischt die LED Anzeige.
Könnt damit machen was ihr wollt. Als Anregung oder sonstwas. Hoffe damit etwas zurückgeben zu können was ich sonst immer erhalten habe an Hilfestellungen und Code Bsp.
RTC_DS3231_Register_012.ino (16.9 KB)
Super, dann kann ich in den langen kommenden Winterabenden mit meider DS auch mal rumspielen, die seit Monaten rumliegt ...
Hallo,
bis zum Winter ist es hoffentlich noch lang.
Wenn man parallel dazu das Datenblatt vom DS3231 liest, sollte schnell klar werden wie das funktioniert mit dem Bits setzen. Mein Projekt soll eigentlich bis zum Winteranfang fertig sein. Mal sehen ... könnte knapp werden.
Update:
wegen Sommerzeitkorrektur. Der Rest sollte im Sketch erklärt sein.
RTC_DS3231_Register_013.ino (17.3 KB)