PCF8583 soll alle 120s Controller wecken

OP #1124833
Lesenswert?

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 #1124982
Lesenswert?

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
OP #1125091
Lesenswert?

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
Lesenswert?

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
Gast #1125622
Lesenswert?

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
Lesenswert?

> 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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren