mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schaltuhr/Schaltwerk


Autor: D. S. (jasmin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vorweg; ja ich habe schon gesucht, die gefundenen Info's brachten mich 
aber nicht weiter.

Problem:

Eines Schaltuhr soll programmiert werden.
Dabei soll die Software aber auch nach einem Wiederanlauf des Systems 
(reset/Stromausfall) wieder in den richtigen Status gelangen.
Die Uhrzeit steht natürlich durch eine RTC immer korrekt zur Verfügung.
Daten im EEprom speichern ist notwendige, aber nicht hinreichende 
Bedingung;-).

Wer hat Ideen zur Vorgehensweise, reps. einen Pseudocode für mich ?

Ich stehe momentan etwas auf dem Schlauch bezüglich der 
"Wiederanlauffähigkeit"; die Schaltuhr selbst ist recht trivial.

Danke !

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Status zyklisch im Ram der RTC sichern und nach reset/Wiederanlauf 
wieder setzen ?

Autor: D. S. (jasmin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast,

sorry, aber das löst keins der genannten Pobleme.

Autor: E. B. (roquema) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dietmar S. wrote:
> @ Gast,
> sorry, aber das löst keins der genannten Pobleme.
Das Problem ist eher:
Was ist das Problem? Ich seh garkeine richtige Frage. Suchst Du Code zum 
Ansteuern der RTC oder zum Speichern im EEPROM?
Ansonsten: Bei Systemstart liest der Controller die aktuelle Uhrzeit aus 
der RTC und die Schaltzeiten aus dem EEPROM, bei Ändern der Schaltzeiten 
werden diese im EEPROM gesichert... Wo ist das Problem?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>sorry, aber das löst keins der genannten Pobleme.

Aus deiner Beschreibung lässt sich eigentlich kein richtiges Problem 
ableiten.

>Dabei soll die Software aber auch nach einem Wiederanlauf des Systems
>(reset/Stromausfall) wieder in den richtigen Status gelangen.

Vielleicht beziehst du dich darauf. Aber wer soll wissen, was du z.B. 
mit 'Status' meinst.

MfG Spess

Autor: D. S. (jasmin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@spess53

ja, Du hast recht wenn man nicht selbst etwas tiefer hinterfragt.
Es geht hier um den Status des "Schaltwerkes".

Eine "triviale" Schaltuhr driftet bei näherer Betrachtung schnell in die 
Untiefen einer sog. Zustandsmaschine ab, vgl. 
http://de.wikipedia.org/wiki/Endlicher_Automat

Wenn die Schaltuhrlogik als einfaches Beispiel nur eine Lampe zu 
bestimmten Zeiten an/ausschalten soll, so ist nach einem Stromausfall 
der tatsächlich geforderte Zustand zum Zeitpunkt des Wiederanlaufs nicht 
ganz einfach zu ermitteln.

Eine mechanische Schaltuhr hat dieses Problem nicht weil sie einfach 
stehen bleibt (vorausgesetzt sie ist auch elektrisch betrieben).
Sie fängt dann einfach mit der Zeit des Straomausfalls wieder an zu 
laufen.

Man muss sich schon etwas tiefer in dieses Problem hineindenken um die 
"Nichttrivialität" zu entdecken.

Das tun aber die Zuhörer und Beantworter von Fragen (im Allgemeinen) 
nicht gern; auch ich oftmals nicht ;-).

Ich muß mir dann oftmals von meiner Allerliebsten anhören "Erst Hirn 
einschalten, dann antworten".

Das ist jetz nicht auf die Antworten der anderen Leser bezogen !


Dietmar

Autor: Ron (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist denn das Problem? Die Schaltuhr muss nur beim Einschalten aus der 
Zeit und den gespeicherten Regeln den korrekten Schaltzustand bestimmen 
und in diesen Zustand wechseln. Bei einem Zustandsautomaten gibt es also 
einen Einsprungszustand, von dem aus in die Zustände "An" und "Aus" 
gesprungen werden kann. Sinnigerweise sind diese Zustände jeweils mit 
der entsprechenden Ausgabe, also Steuerung, verknüpft. (Es handelt sich 
also um einen Moore-Automaten.)

Gruß, Ron

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Da habe ich wirklich ein Verstandnisproblem. Wenn du ein Schaltwerk 
willst, das an der Stelle weiter macht, an der es stehen geblieben ist 
wozu brauchst du dann eine RTC. Wenn eine Schaltuhr (mit RTC) mit der 
aktuellen Zeit weiterläuft ist der letzte Zustand irrelevant, weil zum 
aktuellen Zeitpunkt möglicherweise falsch.

MfG Spess

Autor: D. S. (jasmin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ spess

Ich will eben nicht ein Schaltwerk welches an der Stelle weitermacht wo 
es stehengeblieben ist, sondern den tatsächlich geforderten Zustand 
einnimt !!!

Sonst würde "die Lampe" ja eigeschaltet obwohl es schon längst hell ist 
;-), klar ?

Zur Umgebung:
die RTC läuft auch bei Stromausfall weiter und setzt nach diesem dann 
auch die tatsächliche Zeit für das System und damit die Schaltuhr.

However, mittlerweile habe ich auf dem Sofa die Problempunkte durchdacht 
und bin mir auch klar wie ich jetzt plausibel vorgehen werde/muß.

Danke, Dietmar

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Ich will eben nicht ein Schaltwerk welches an der Stelle weitermacht wo

Na endlich mal ne klare Aussage.
Du musst ja irgendwo die Ein-/Ausschaltzeiten speichern (vorzugsweise 
EEPROM). Die Liste gehst du mit der aktuellen Zeit durch und 
vergleichst:

Ein<=Zeit<Aus -> Einschalten / Aus<=Zeit<Ein -> Ausschalten, Was ist so 
schwer daran.

MfG Spess

Autor: D. S. (jasmin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schwer ist immer relativ.

Beispielsweise das es so einfach :

Ein<=Zeit<Aus -> Einschalten / Aus<=Zeit<Ein -> Ausschalten.

nicht funktionieren wird !

Ich bin jetzt wech,

Danke.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dietmar S. wrote:

> Man muss sich schon etwas tiefer in dieses Problem hineindenken um die
> "Nichttrivialität" zu entdecken.
>
> Das tun aber die Zuhörer und Beantworter von Fragen (im Allgemeinen)
> nicht gern; auch ich oftmals nicht ;-).

Nein, umgekehrt wird ein Schuh draus, Du must Dich tiefer hineindenken 
und die Frage unmißverständlich und umfassend stellen.
Der springende Punkt ist dabei, oftmals fällt einem dann schon die 
Antwort ein.
Daher ist das auch sehr effektiv, man hat keine Wartezeit auf die 
Antwort.
Und wenn nicht, erhöht sich ungemein die Chance einer passenden Antwort.


Ich vermute mal, Du hast eine Ausschalt- und eine Einschaltzeit, dann 
muß Du nur die Differenz zur aktuellen Zeit bilden und schon weißt Du, 
ob das Gerät eingeschaltet oder ausgeschaltet sein soll. Die kleinere 
Differenz gewinnt.

Edit:
Ganz so einfach ist es doch nicht, man muß noch 24h (86400s) abziehen, 
bis der Rest <24h ist, d.h.:
(zeit - ein) % 86400


Sinnvoller Weise sollten dazu alle Zeiten als 32Bit Wert dargestellt 
werden, dann rechnet es sich leichter. Deshalb rechnen PCs auch intern 
immer mit 32Bit-Zeiten.
Blöder Weise liefern die meisten RTCs irgendein kryptisches Digitformat.


Peter

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.