Hallo liebe Forengemeinde, gestern hatte ich wieder mal ein Schlüsselerlebnis. Was passiert eigentlich bei volatile asm ("sleep"::) zzw etwas genauer, was tut das Volatile darin und was haben die Doppelpunkte am Ende zu bedeuten? Ach ja, und wie weckt man den Kollegen aus diesem Dornröschenschlaf dann wieder auf? Da es hier nicht gerne gesehen wird, wenn mehrere Fragen in einem Fred gestellt werden, nerve ich Euch mit Fragen wie "warum frisst das Aas im Sleep-Modus immer noch 3 mA? "wie kann man das weiter reduzieren?" später.
> Was passiert eigentlich bei volatile asm ("sleep"::) zzw etwas genauer, > was tut das Volatile darin und was haben die Doppelpunkte am Ende zu > bedeuten? Das volatile stellt sicher, daß der Compiler nicht auf die Idee kommt, es wegzuoptimieren. Die Doppelpunkte trennen die (in diesem Fall eben leeren) Operandenlisten vom Assemblercode ab. Die könnte man aber auch weglassen. > Ach ja, und wie weckt man den Kollegen aus diesem Dornröschenschlaf > dann wieder auf? Kommt auf die Prozessorarchitektur an. > Da es hier nicht gerne gesehen wird, wenn mehrere Fragen in einem Fred > gestellt werden, nerve ich Euch mit Fragen wie > "warum frisst das Aas im Sleep-Modus immer noch 3 mA? > "wie kann man das weiter reduzieren?" > später. Auch die Antworten darauf hängen stark von der Zielarchitektur ab.
Lies das Tutorial (AVR-GCC-Tutorial) vielleicht noch etwas der gcc Dokumentation und anschließend das Datenblatt des AVR (welche Typ solltest du wissen) das gibt heute garantiert noch ein paar Schlüsselerlebnisse.
Rolf Magnus wrote: > Das volatile stellt sicher, daß der Compiler nicht auf die Idee kommt, > es wegzuoptimieren. Wegoptimieren wird er inline-asm-Code sowieso nicht, aber der Optimizer darf es ohne volatile wohl noch hin und her schieben. Habe ich aber (zumindest bei AVR) noch nie wirklich erlebt. Für den OP: lies dir die Doku zu <avr/sleep.h> einfach mal durch (zusätzlich zum Datenblatt natürlich).
@Wolfram Welch hilfreicher Beitrag. Möge ein ADAC-Mitarbeiter Dir nachts um 10 auf einer einsamen Landstrasse eine genau so grosse Hilfe sein. ;-) @alle anderen Danke erst mal. Mein Prozessor will aber aus dem Schlaf nicht mehr erwachen. Ich habe aber inzwischen einen Stacküberlauf in Verdacht. Ich prüfe das mal dieser Tage.
> @Wolfram > Welch hilfreicher Beitrag. Wie hilfreich er ist, kommt darauf an, ob du es beherzigst. Es ist nämlich durchaus ein guter Rat. Es ist eigentlich immer sinnvoll, erstmal zu versuchen, sich selbst kundig zu machen, statt immer gleich nachzufragen, vor allem, wenn es um eher grundlegende Dinge geht. Letztendlich ist aber die Frage, wie man den Prozessor wieder aufweckt, auch zu unpräzise, um eine konkrete Antwort geben zu können. > Möge ein ADAC-Mitarbeiter Dir nachts um 10 auf einer einsamen > Landstrasse eine genau so grosse Hilfe sein. ;-) Naja, wenn er diesen sowas fragt wie "Wenn ich den Blinker einschalte, geht im Armaturenbrett immer so ein kleines grünes Licht dauernd an und wieder aus, was bedeutet das?", dann wäre eine ähnliche Antwort durchaus gerechtfertigt. ;-) > @alle anderen > Danke erst mal. Mein Prozessor will aber aus dem Schlaf nicht mehr > erwachen. Du hast immer noch nicht erwähnt, was für ein Prozessor. Die anderen nehmen an, daß es irgendein AVR ist. Da du das bisher nicht dementiert hast, wird's wohl auch einer sein. Die Informationen reichen dann aber immer noch nicht für eine Antwort. Bei den AVRs gibt's nämlich mehrere Sleepmodi (welche und wieviele hängt vom Typ ab). Je nach Modus gibt es unterschiedliche Methoden, mit denen man ihn aufwecken kann. Darüber, welchen Modus du verwendest und wie du ihn wieder aufwecken willst, hast du aber auch nichts geschrieben.
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.