Forum: Projekte & Code wake up from Power-Down-Mode


von Robert Staeber (Gast)


Lesenswert?

Hallo,

ich möchte den ATMEGA8515 aus dem Power-Down-Mode per Key-Press wecken. 
Es gibt keine Probleme den Power-down-Modus zu setzen, aber danach 
bekomme ich den Atmel einfach nicht mehr wach.

void sleeptest(void)
{
  double i;
  sbi(MCUCR,4);
  sbi(MCUCR,5);
do {
  asm volatile("sleep");
}while(bit_is_clear(PIND, PIND2));
// oder mit:
// while(!bit_is_clear(PIND, PIND2));

cli();
wdt_reset();
wdt_enable(3);
}

Kann jemand helfen?

Danke, Rob

von Michael (Gast)


Lesenswert?

Hier findest Du ein Beispiel für einen S2313. Wichtig ist, den Interrupt 
freizugeben, bevor der Prozessor schlafen geht. Andernfalls kann er 
nicht aufgeweckt werden.

http://www.mino-elektronik.de/power_at90s/powerat90.htm

von Michael (Gast)


Lesenswert?

Sorry, falsches Forum, falscher Link: noch einmal mit 's' wie suchen: 
http://www.mino-elektronik.de/power_at90s/powerat90s.htm

von Robert (Gast)


Lesenswert?

Danke Michael,

ich konnte es inzwischen in C lösen. Trotzdem ein guter Link!

von Winfried Alex (Gast)


Lesenswert?

Hallo Robert,

würdest Du mir sagen, wie Du das Aufwecken in C gemacht hast?
Ich kann meinen 128er zwar schlafen legen, aber das mit dem Wecken 
klappt nicht.

Danke für Deine Hilfe.
Gruß Winfried

von Robert (Gast)


Lesenswert?

Hallo Alex,
ich hab's Dir per mail geschickt. Es funktioniert per Interrupt. Gruß 
Robert

von Hannes N (Gast)


Lesenswert?

...das Problem scheint schon gelöst zu sein, richtig?

Anyway...ich kenne mich mit C nicht aus...dh. meine AVR Programme werden 
in Assembler geschrieben...aber ich glaube das ist in diesem Fall egal.

Ich bin vor ein paar Wochen auch mal in so einen Dornröschen-Schlaf 
gerutscht, aus dem der AVR (in meinem Fall der 2313) nicht mehr heraus 
wollte. Woran ich dabei nicht gedacht habe, war dass man aus den Sleep 
Modi, bzw. genauer: dem Power-Down nur mit einem LEVELgetriggerten 
Interrupt herauskommt - damals hatte ich nur Flankengesteuerte 
Interrupts eingestellt -> Da lag der Fehler...

Wenn man das Datenblatt mit Verstand liest (so, wie ich es damals nicht 
getan hatte), würde man diesen Fehler nicht machen.

Mich wundert es auch, warum das in den meisten Tutorials nicht erwähnt 
wird, bzw. nicht größerer Beachtung gewidmet wird. Z.B. die Sache mit 
dem Initialisieren des SRAMs wird ja auch überall als zum Haare-raufen 
bringender Anfängerfehler tituliert...ich finde, dass dem Thema 
"Aufwecken über Interrupts aus den Sleepmodi" in Anfängertuts mehr 
Beachtung geschenkt werden sollte.

Naja...learning by doing hat ja auch was ;)

H.

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.