Hallo zusammen, ich möchte den PCF8583 als Echtzeituhr verwenden. Mit einem Controller soll dann die Zeit eingestellt werden. Für Messdaten werden dann vom PCF8583 die aktuelle Uhrzeit und das Datum gelesen. Soweit geht es auch. Meine Frage ist nun, kann der Baustein obwohl er im Uhrenmodus ist, alle 120s den Ausgang /INT bedienen um den Controller aus Sleepmodus zu wecken? Wenn ich das Datenblatt richtig verstanden habe geht dies nur im Timer-Modus. Hat jemand Erfahrung und kann mir Infos geben. Danke !
Gast
#1124935
Laut Datasheet für den Irq: These conditions are clock alarm, timer alarm, timer overflow, and event counter alarm.. Ansosnten setzt du dir halt alle 2Minutene einen Alarm
Du meinst, der Controller soll bevor er wieder schlafen geht einen neuen Alarm programmieren?
Gast
#1124982
Hallo Klaus, ob, das alle 120s geht, denke ich nicht. Vor einiger Zeit habe ich mit dem PCF8583 gearbeitet und das Ganze eben mal kurz wieder aufgefrischt: Im Uhrenmodus des PCF8583 kann auf Speicherzelle 07 zusätzlich eine Timerfunktion (0..99 - Interrupt beim Nullen) ausgeführt werden (vergl. Kapitel 7 im Datenblatt). Mir war es dadurch möglich zusätzlich zur Uhr im 1-Sekunden-Takt einen Interrupt zum uC zu schicken und ihn dadurch zu wecken. Gruß Holger
Hallo Holger, vielen Dank für die Info. Ich werde das im Datenblatt gleich anschauen. Mein Ziel ist, den Controller nach jeweils ca. 120sec aufzuwecken um die Temperaturen zu messen. Danach soll er wieder "schlafen". Ein Wecken pro 1sec. ist mir zu häufig. Ich bedanke mich nochmals für deine Hilfe. Gruß Klaus
Gast
#1125424
Hallo Klaus, noch ein paar kleine Ergänzungen: * Die Timerfunktion im Uhrenmodus ist im Kapitel "7.7 Timer" beschrieben. * Die Ladewerte für das Controlregister sind bei mir wie folgt definiert:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
Das bedeutet, es gibt noch Reserven. Du könntest z.B. wählen:
1 | |
..dann würde alle 100 Sekunden ein Interrupt ausgelöst. (sind auch keine 120s, aber nahe dran). * Ansonsten der Vorschlag jede Sekunde den Interrupt auslösen lassen und in der Interruptbehandlungsroutine im uC bis 120 zählen und nur dann die Temperatur einlesen. Gruß Holger
Gast
#1125437
> Du meinst, der Controller soll bevor er wieder schlafen geht einen neuen > Alarm programmieren? Ja, wenns der PCF8583 sonst nicht kann ist das sicher die einfachste Möglichkeit.
Gast
#1125622
Hallo, >> Du meinst, der Controller soll bevor er wieder schlafen geht einen neuen >> Alarm programmieren? >Ja, wenns der PCF8583 sonst nicht kann ist das sicher die einfachste >Möglichkeit. meiner Meinung nach ist das die komplizierteste Möglichkeit, denn dann muss man im uC eine Kalenderfunktion (einschliesslich Schaltjahr) abbilden - wie sonst will man die Daten: "Aktuelle Zeit + 2min" immer genau erhalten, um den PCF8583 die neue Alarmzeit mitzuteilen? Gruß HolgerT
Gast
#1125774
> denn dann muss man im uC eine Kalenderfunktion (einschliesslich Schaltjahr) > abbilden Man kann den Alarm im "Daily" Mode betreiben (sieh Datasheet Page 9, "The year and weekday bits are ignored in a dated alarm. A daily alarm ignores the month and date bits.") Somit muss man nur die aktuelle Uhrzeit lesen und 2 Minuten dazu zählen. Das sollte nicht so aufwendig sein. Ansonsten den Timer verwenden und mit den "Minuten" zählen lassen. Gruss
Hallo, vielen Dank für die Lösungsvorschläge. Ich melde mich wieder, sobald ich die Varianten getestet habe. Holger, danke ! Gruß Klaus
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.