Probleme mit Sleep Mode

Gast #69227
Lesenswert?

Diesen Befehl sollte man anwenden, wenn der Processor grade nix
zu tun hat, also in einer Schleife auf etwas wartet.
Das könnte z.B. ein interrupt sein vom Timer, I/O Port,
UART, AD-Wandler usw.
Bei dem Befehl fehlte glaube ich noch etwas.

   MCUCR = 0x38;           //entering sleeping mode: power save mode
        #asm("sleep")

So sollte es gehen.
Aber ich hab kein Ahnung von C.
Gast #69228
Lesenswert?

ist es wirklich so schwierig google, die Suche oder das Datenblatt zu
verwenden ??

AT90S8535, Seite 30:
To enter any of the three sleep modes, the SE bit in MCUCR must be set
and a SLEEP instruction must be executed.
SM1 und SM0 im MCUCR bestimmen den sleep-Mode.

Aufwecken kannst du den uP nur durch Interrupts.
Idle Mode: uP reagiert auf alle Ints
Power down Mode: uP reagiert nur auf externen Int. und Watchdog
Power Save Mode: wie Power down, zusätzlich tmr2, falls extern
geclocked.

grüsse leo9
Gast #69230
Lesenswert?

Hallo leo9,

ist schon klar, aber die Frage war, wie man das in C programmiert.
Nun sag es AVRfreak mal wie es genau geht, bitte.
Ich bekomme von C-Code immer Kopfschmerzen und Knoten im Hirn. :-)

Es grüßt,
Arno
Gast #69231
Lesenswert?

Hallo Conlost,
endlich mal ein Mitstreiter, mir gehts mit der c-Syntax genauso. Leider
muß ich mich jetzt aber auch mit c auseinandersetzen, es scheinen
einfach die effektivsten Compiler für AVRs zu sein.

@AVRFreak:
schau mal in die Hilfe von Codevision:
#include <sleep.h>

an der richtigen Stelle im Programm:
sleep_enable();
idle();      // oder powerdown() oder powersave()
             //oder standby() oder extended_standby()

die genauen Beschreibungen dieser fünf Befehle schreibe ich jetzt aber
nicht aus dem Hilfefile ab ;-)

grüsse leo9

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren