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 !
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?
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
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 | RtcControlval EQU 00000100B ;Ladewert fuer RTC Control/Status-Register |
2 | ; |||||||+---------------- Status TimerInt |
3 | ; ||||||+----------------- Status AlarmInt |
4 | ; |||||+------------------ AlarmFunktion |
5 | ; ||||+------------------- |
6 | ; |||+-------------------- | |
7 | ; ||+--------------------- +clock mode |
8 | ; |+---------------------- |
9 | ; +----------------------- |
10 | RtcAlmControlOff EQU 00001001B ;Ladewert fuer RTC Alarm Control-Register (Uhren-Alarm-Off) |
11 | RtcAlmControlOn EQU 10011001B ;Ladewert fuer RTC Alarm Control-Register (Uhren-Alarm-On) |
12 | ; |||||||+---------------- | |
13 | ; ||||||+----------------- | |
14 | ; |||||+------------------ +timer function |
15 | ; ||||+------------------- timer interrupt enable |
16 | ; |||+-------------------- | |
17 | ; ||+--------------------- +clock alarm function |
18 | ; |+---------------------- timer alarm enable |
19 | ; +----------------------- alarm interrupt enable |
20 | ; |
Das bedeutet, es gibt noch Reserven. Du könntest z.B. wählen:
1 | RtcAlmControlxxx EQU xxxxx010B |
..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
> 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.
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
> 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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.