Hi hi, ich möchte meinen PIC im sleep-modus bringen. dazu habe ich ein paar fragen 1) ab wann lohnt sich das? Wahrscheinlich bekommt mein Kontroller nur alle 30 min. ein Befehl, wo er dann ~15min. arbeiten muss. aber ab wann würde sich so etwas lohnen? schon ab 1 sekunde? 2) Lohnt sich so etwas überhaupt? was sind denn die vorteile. Nur der Strom? 3) ist der sleep modus wie ein break? also fängt er beim aufwachen wieder da an, wo er aufgehört hat? Stephan
Der Sleep Modus senkt die Stromaufnahme, aber einige Hardwarefunktionen
fallen dabei aus und die SOftware bleibt auch stehen.
Ob es sich lohnt, hängt von deiner Stromversorgung und den Anforderungen
an die Stromaufnahme ab.
Aber von der Software hängt ab, ob die sleep Modi überhaupt nutzen
kannst.
> fängt er beim aufwachen wieder da an, wo er aufgehört hat?
Jein. Man kann auch mit einem Watchdog-Reset oder Reset aufwachen, dann
läuft das Programm nicht weiter sondern startet neu.
@Stephan (Gast) >1) ab wann lohnt sich das? Wahrscheinlich bekommt mein Kontroller nur >alle 30 min. ein Befehl, wo er dann ~15min. arbeiten muss. aber ab wann >würde sich so etwas lohnen? schon ab 1 sekunde? Teilweise auch bei kürzeren Zeiten. >2) Lohnt sich so etwas überhaupt? was sind denn die vorteile. Nur der >Strom? Ja. Wenn dein Gerät über ein Netzteil versorgt wird, kannst du dir das sparen. >3) ist der sleep modus wie ein break? also fängt er beim aufwachen >wieder da an, wo er aufgehört hat? Meistens.
Stephan schrieb: > 1) ab wann lohnt sich das? Bei Batteriebetrieb. Stephan schrieb: > 3) ist der sleep modus wie ein break? also fängt er beim aufwachen > wieder da an, wo er aufgehört hat? Beim PIC weiß ich nicht. Beim AVR oder 8051 wird erstmal der zum Aufwachen programmierte Interrupt abgearbeitet.
die allermeisten PIC's wachen durch den "event", also ein zb ein interrupt auf und arbeiten genau nach der "sleep" instruction weiter. lohnt sich bei batteriebetrieb fast immer! Aber, viele PIC's sind nicht sehr schnell beim aufwachen, heisst, wenn deine anwendung superschnell reagieren soll, musst du prüfen ob die aufwachzeit zu deiner anwendung passt. die zeit liegt je nach typ und oszilatorconfiguration im mehrstelligen millisekundenbereich.
Es gibt meist verschiedene Arten von Sleep modes - da muss man abwägen zwischen Spareffekt und noch verfügbaren Funktionen und der Zeit für die Reaktivierung. Je nach sleep Mode reduziert sich auch die HF Abstrahlung ganz erheblich. Lohnend ist es vor allem bei Batteriebetrieb - dann auch schon für kurze Zeiten im ms Bereich.
Lurchi schrieb: > Je nach sleep Mode reduziert sich auch die HF Abstrahlung ganz > erheblich. Kann ich nicht bestätigen. Die internen Flashzugriffe dringen kaum nach außen und der Quarz erzeugt nur einen oberwellenarmen Sinus. Man muß schon sämtliche Abblockkondensatoren weglassen, um einen merkbaren Unterschied zu sehen. Wenn was abstrahlt, dann sind das schreibende Portzugriffe, an denen lange Leitungen ohne Dämpfungswiderstände hängen.
Lurchi schrieb: > dann auch schon für kurze > Zeiten im ms Bereich. hast du auch ein beispiel dafür? Also ich glaube dir das, kann mir aber nichts vorstellen, wo es sich lohnt für ein paar ms. strom zu sparen. ansonsten habe ich das jetzt umgesetzt (war einfacher als ich dachte). aber probleme habe ich beim aufwecken. ich möchte gerne, dass der bei einer einkommenden CAN-Nachricht aufwacht (das macht er auch und fängt holt sich aus dem CAN-Interrupt die Daten). Allerdings läuft der Timer im sleep-modus weiter und wenn dieser ebenfalls einen Interrupt auslöst, wird der controller ebenfalls geweckt. kann man das irgendwo definieren, durch welche interrupts der controller geweckt werden soll? das ganze mit einem dspic30f4011.
Stephan schrieb: > kann mir aber > nichts vorstellen, wo es sich lohnt für ein paar ms. strom zu sparen. Das ist ne ganz einfache Rechnung. Wenn z.B. der Idle-Mode 50% verbraucht und Du 50% der Zeit darin bist, hast Du 25% Strom gespart. Z.B. bei einem AVR mit 4mA Verbrauch hast Du 1mA gespart, das wirkt sich in der Gesamtschaltung nur unmerkbar aus.
> hast Du 1mA gespart, das wirkt sich in der > Gesamtschaltung nur unmerkbar aus. Nun, wenn die Gesamtschaltung 1,01mA aufnimmt, dann 1mA weniger schon erheblich. Und dann gibt es ja auch noch (bei AVR) den power-down Modus, in dem der µC nur noch wenige hunder nA aufnimmt. Ich schätze, dass es auch bei PIC solche schlafmodi gibt. Es ist durchaus möglich, einen Mikrocontroller jahrelang an einer kleinen 3V Knopfzelle zu betreiben. Eine Millisekunde schlöafen hört sich nach wenig an. Aber wenn der µC zwischen dem Schlafen nur 0,1mS aktiv ist, dann schläft er schon 90% der Zeit. Wenn dann noch der Rest der Schaltung ebenso sparsam ist, lohnt es sich.
Kannst du deinen Controller auch öfters schlafen schicken? ich möchte meinen auch schlafen lassen, kann es aber nur einmal machen. Wahrscheinlich ist da noch irgendwo ein bit, welches ich beim wecken nicht gelöscht habe (eigentlich lösche ich gar keine bits). Ich benutze einen dspic30f6011a. Da dieser ja der selben pic-family angehört wie deiner, wollte ich fragen, welches bit du gelöscht hast und wo das steht. Johannes
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.