www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PCF8583 soll alle 120s Controller wecken


Autor: Klaus K. (keili)
Datum:

Bewertung
0 lesenswert
nicht 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 !

Autor: Antwortender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Klaus K. (keili)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du meinst, der Controller soll bevor er wieder schlafen geht einen neuen 
Alarm programmieren?

Autor: HolgerT (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus K. (keili)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: HolgerT (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
RtcControlval    EQU     00000100B               ;Ladewert fuer RTC Control/Status-Register
;                        |||||||+---------------- Status TimerInt
;                        ||||||+----------------- Status AlarmInt
;                        |||||+------------------ AlarmFunktion
;                        ||||+-------------------
;                        |||+-------------------- |
;                        ||+--------------------- +clock mode
;                        |+----------------------
;                        +-----------------------
RtcAlmControlOff EQU     00001001B               ;Ladewert fuer RTC Alarm Control-Register (Uhren-Alarm-Off)
RtcAlmControlOn  EQU     10011001B               ;Ladewert fuer RTC Alarm Control-Register (Uhren-Alarm-On)
;                        |||||||+---------------- |
;                        ||||||+----------------- |
;                        |||||+------------------ +timer function
;                        ||||+------------------- timer interrupt enable
;                        |||+-------------------- |
;                        ||+--------------------- +clock alarm function
;                        |+---------------------- timer alarm enable
;                        +----------------------- alarm interrupt enable
;
Das bedeutet, es gibt noch Reserven. Du könntest z.B. wählen:
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

Autor: Antwortender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: HolgerT (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Antwortender (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus K. (keili)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.