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