Forum: Mikrocontroller und Digitale Elektronik sleep-modus fragen


von Stephan (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@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.

von Peter D. (peda)


Lesenswert?

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.

von Peter C. (peter_c49)


Lesenswert?

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.

von Lurchi (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Stephan (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

> 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.

von Johannes (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.