chrysophylax
Geomaster
ksbender schrieb:Genau so hätte ich es auch gedacht - nur falsch??? ausgedrückt. Mehrfachauslösung bezog sich auf zu langes dranhalten des Magneten. Ganz so wie zu kurzes dranhalten den Text unterbricht.
Oh, das hatte ich vor lauter Trivialität glatt vergessen - nach der Koordinatenausgabe einfach in einer Endlosschleife bis zum Sankt Nimmerleinstag warten. Das braucht auch so gut wie keinen Strom. Oder, wie von anderer Seite vorgeschlagen - einfach schlafen legen bis zum Sankt Nimmerleinstag. Letzteres hab ich auch mal probiert aber wieder verworfen - dann braucht der µC (zumindest mein PIC) so wenig Strom, daß er aus dem Glättungs-Kerko nach dem Unterbrechen der Spannungsversorgung noch reichlich Sekunden "schlafend lebt" und daher in dieser Zeit nicht erneut auslösbar ist. Die Variante mit der Endlosschleife ist zwar deutlich brachialer, aber auch irgendwie funktionaler
ksbender schrieb:Das muß ich nochmal lesen damit ich es genau verstehechrysophylax schrieb:Variante 2 (nicht unelegant): Der µC hängt ständig am Strom, und statt einer Fotodiode hängt der Reed-Kontakt mit einem Pulldown an einem digitalen (!) Portpin des µC. Die Atmels können auch alle "richtig" schlafen, d.h. mit komplett stehenden Oszillatoren (sowohl Haupt-Takt als auch Watchdog). Aufgeweckt werden sie per Interrupt-on-pin-change, den der Reedkontakt auslöst. Damit bist du wahrscheinlich auch bei 1-2µA Ruhestrom. Ist halt ne neue Softwarevariante.
Aaaaalso.... "Schlafen" bedeutet beim µC, daß das Programm an einer exakt definierten Stelle angehalten wird und der Prozessor dort einfach "stehen bleibt". Alle Variablen und sämtlicher Speicher behalten ihren Inhalt - das Ding ist einfach nur quasi eingefroren und braucht so recht wenig Strom. Nun hat man allerdings nur recht wenig davon, wenn ein Programm einfach bis zum Sankt Nimmerleinstag stehenbleibt - für gewöhnlich möchte man, daß es auch irgendwann weiterläuft und seine Aufgabe erfüllt. Um dies zu tun gibt es jetzt bei jedem µC verschiedene Möglichkeiten, ihn wieder "aufzuwecken". Eine davon, die auch hier recht gängig ist, besteht darin, einen klitzekleinen separaten Teil des Prozessors weiterlaufen zu lassen, der eine Timer-Funktion besitzt, und nach einer einstellbaren Zeit den Rest-Prozessor anschubst "los, schaff mal wieder was".
Aus der Luft gegriffenes mehr oder weniger naheliegendes Beispiel: Der nervige Radiowecker, der auch dich wahrscheinlich jeden Morgen weckt. Die Teile haben eine sog. "Schlummer-Funktion". Du schläfst und erholst dich dabei, irgendwann weckt dich der Wecker durch nerviges Gedudel auf. Du schaust auf die Uhr, stellst fest, daß du noch nicht aufstehen mußt, weil es draußen noch nicht hell ist (wir nehmen einfach mal an, du hättest einen Job, den man nur im Hellen ausüben kann), und drückst auf die "Schlummer-Taste". Jetzt gibt dein Radiowecker für ein paar Minuten Ruhe, du schläfst wieder ein, und ein paar Minuten später fängt das nervige Ding wieder an zu dudeln. Schlaftrunken haust du wieder auf die Schlummer-Taste des blöden Dings, und dieses Spiel geht noch mindestens 5mal bis du irgendwann feststellst "jetzt ist es draußen hell" und aufstehst.
Genau das macht der Watchdog-Schlafmodus im Reaktivlicht. Das Programm mißt regelmäßig die Umgebungshelligkeit, stellt fest "is noch zappenduster, da schlaf ich noch ne Runde", haut auf die Schlummer-Taste des Watchdogs, schläft wieder ein, und wacht 130ms später wieder auf, mißt wieder Helligkeit, haut wieder auf die Schlummer-Taste, undsoweiter.
Mensch kann sich vorstellen, daß das zwar weniger stressig ist, als 24h am Tag wach zu sein und nix zu tun, aber immer noch deutlich anstrengender/zermürbender, als solange tief und fest zu schlafen (und nicht nur im Halbschlaf zu hängen), bis ein freundlicher Sonnenstrahl durchs Fenster einen einmal und zum exakt richtigen Zeitpunkt aufweckt.
"Halbschlaf" heißt halt auch "Energieverbrauch", in diesem Falle für den Timer des Watchdogs und für den Taktgenerator, der diesen Timer ansteuert. Wenn der µC "richtig" schläft, kann er auch das beides ausschalten - es ist halt nur nicht mehr möglich, ihn nach einer definierten Zeit Schlafen automatisch wieder aufwecken zu lassen.
Dafür gibt es bei jedem µC aber auch noch andere Möglichkeiten zu schlafen - schließlich gibt es ja auch bei Menschen andere Ereignises außer blöden nervigen zeitgesteuerten Weckern, durch die man sie aufwecken kann. Und das ist der berühmte "Interrupt on Pin change". Beim Einschlafen merkt sich der µC den Zustand aller seiner digitalen Eingänge, und er schläft völlig "taktlos" so lange, bis sich einer dieser Eingänge ändert. Das kann nach Millisekunden sein, das kann aber auch nach Tagen sein. Sobald dieses Ereignis eintritt, wird der Haupt-Takt wieder angeschmissen, das Programm läuft weiter, und man hat irgendwo einen Interrupt-Wunsch hinterlegt und ein paar Register, aus denen man sich zusammenpopeln kann, was einen denn jetzt gerade aufgeweckt hat.
Vorteil: In diesem "Tiefschlaf" braucht der µC nochmal deutlich weniger Strom, als wenn der nur "schlummert" und nebenbei noch der Oszillator für den Watchdog läuft und der Watchdog-Timer selbst. Nachteil: Du hast überhaupt kein Gefühl oder Anzeichen mehr dafür, wie lange der µC denn jetzt geschlafen hat. Da keinerlei "Uhr" "nebenbei" mitläuft, weißt du nach dem Aufwachen nicht, wieviel Zeit seit dem Einschlafen vergangen ist. Wenn du mit dem Watchdog schläfst, weißt du relativ sicher, daß zwischen Einschlafen und Aufwachen immer eine feste definierte Zeit vergangen ist, und kannst mit dieser auch die eine oder andere Nützlichkeit rechnen. Wenn du deinen µC "tiefschlafen" läßt und über einen Reed-Kontakt an einem digitalen Eingang aufweckst, hast du keine Chance festzustellen, ob seit der letzten Auslösung Sekunden ("mach nochmal, ich hab die Koordinaten nicht mitbekommen") oder Monate ("im Winter sucht keine Sau diese Dose") vergangen sind.
In Zahlen: (Gerade mal rasch ein aktuelles Datenblatt vom Tiny24 von Atmel gezogen)
Power down mode (Watchdogtimer enabled, Vcc=3V) Icc typisch 4.5µA
Power down mode (Watchdogtimer disabled, Vcc=3V) Icc typisch 0.15µA
Wäre ich ein reißerischer Verkäufer, würde ich jetz großartig mit einem "Stromverbrauch um den Faktor 30 niedriger bei intelligentem Einsatz vorhandener Features" hausieren gehen
Verständlich genug ? Oder eher zu verwirrend durch das an den Haaren herbeigezogene Wecker-Beispiel ?ksbender schrieb:Variante 2 kannst du vielleicht nochmal genauer erklären.
chrysophylax.de