Forum: Compiler & IDEs Unterschied zwischen sleep_cpu () und sleep_mode () ?


von derbrain (Gast)


Lesenswert?

Hallo,
in der avr/sleep.h gibt es ja die Funktionen sleep_cpu (void) und
sleep_mode (void). Erklärung bei beiden: "Put the device into sleep
mode." Was ist denn da der Unterschied? Und gab es nicht auch mal
einfach sleep()?

Grüße
--derbrain

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Erklärung bei beiden: "Put the device into sleep
> mode." Was ist denn da der Unterschied?

Du hast nur den Teil der Erklärung selektiv für dich gelesen,
der gleich ist zwischen beiden.  Der Unterschied ist in dem
Teil der Erklärung dokumentiert, der nicht gleich ist:
sleep_cpu() ist der reine SLEEP-Befehl, der Aufrufer muss sich
um SE selbst kümmern.  Das zu haben war reiner ,,Kundenwunsch'':

https://savannah.nongnu.org/patch/?func=detailitem&item_id=4611

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

p.s.:

> Und gab es nicht auch mal einfach sleep()?

In Unix, ja.  Wartet die entsprechende Anzahl an Sekunden.  Das
ist (weil's Hardware braucht) jenseits des Aufgabengebietes der
avr-libc.  Damit man es nicht verwechselt, hat Marek seinerzeit
die entsprechende avr-libc-Funktion sleep_mode() genannt.

von derbrain (Gast)


Lesenswert?

Danke für die Antworten :)
Ich hatte gedacht das mit dem SE fehlt da einfach, weil im Datenblatt
steht, dass man das immer setzen und wieder deaktivieren soll. Den Sinn
hab ich nicht ganz verstanden, weil als Begründung dasteht, dass der
Controller nur dann schlafen soll, wenn es der Programmierer auch will.
Und ich nehme an, wenn man sleep_mode() schreibt, dann will man das auch
haben... Ist das mit dem SE also hinfällig?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nein, das ist mit dem SE nicht hinfällig.  Siehe den patch
comment, es gab halt nur Leute, die den sleep gern separat
vom SE erledigen können wollten, um zwischendrin ein sei
noch zu haben.

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.