www.mikrocontroller.net

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


Autor: Robert Staeber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

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

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Michael,

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

Autor: Winfried Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Robert (Gast)
Datum:

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

Autor: Hannes N (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.