Go Down

Topic: Stromversorgung (Read 787 times) previous topic - next topic

postmaster-ino

Hi

Dein delay(3600000); ist ganz großer Mist - dann kannst Du auf Schlafen und Wachhund auch verzichten.

Was passiert, wenn der Wachhund bellt?
- das aktuelle Programm wird angehalten (wenn der µC nicht eh gerade pennt), die aktuelle 'Adresse' wird sich gemerkt und dann wird zur Wachhund-ISR gesprungen - darin steht normal nur ein iret (oder reti? müsste nachsehen).

Viel wichtiger ist hier, daß NACH dem Interrupt (wir sind ja jetzt wach) genau Da weiter gemacht wird, wo wir vorhin unterbrochen wurden.

Wenn wir den µC vorher schlafen geschickt haben, ist Der jetzt genau hinter dem Schlaf-Befehl.

Dort prüfen wir, ob 'Zeit' ist, wenn ja, erledigen wir unseren Job.
Wenn nein, springen wir direkt dahin, wo wir wieder einschlafen wollen - dahin kommen wir auch, wenn unser Job ausgeführt wurde - also gepennt wird in jedem Fall wieder - ist nur die Frage, ob wir vorher noch was machen, oder nicht.

Dein loop() wird dann ungefähr so aussehen:
- Wachhund starten
- Schlafen legen
- prüfen, ob 'Zeit' ist
-- Ja - erledige den Job

Danach wird wieder der Wachhund gestartet und im Anschluss wieder geschlafen.
KEIN delay(); - denn Das wäre Dein Programm, Welches abgearbeitet wird, BEVOR wir wieder schlafen können.

Dein delay() braucht nur Strom - und Den wolltest Du doch eigentlich sparen?
Also schick den µC pennen!

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Go Up