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 !
Hallo, Status zyklisch im Ram der RTC sichern und nach reset/Wiederanlauf wieder setzen ?
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?
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
@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
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
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
@ 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
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
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.
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
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.