Forum: Mikrocontroller und Digitale Elektronik Wo läuft das Programm nach dem Aufwachen weiter?


von Peter (Gast)


Lesenswert?

Mahlzeit,

Wenn ich meinen AVR Schlafen leg (PowerDown) und wecke ihn mit einem 
Externen Interrupt auf, wo gehts dann weiter im Programm?

Nach der
1
sleep_cup();
 -Anweisung?

Wird vorher die entsprechende ISR durchlaufen?

schönen Sonntag noch

Gruß

1
#include <avr/interrupt.h>
2
    #include <avr/sleep.h>
3
4
    ...
5
      set_sleep_mode(<mode>);
6
      cli();
7
      if (some_condition)
8
      {
9
        sleep_enable();
10
        sei();
11
        sleep_cpu();
12
        sleep_disable();
13
      }
14
      sei();

von Purzel H. (hacky)


Lesenswert?

Na. Zuerst wird der externe Interrupt abgearbeitet, dann springt er 
zurueck auf die erste Anweisung nach dem Sleep. Die funktion 
sleep-disable wird unnoetig sein, da diese eh erst nach dem Sleep 
erreicht wird. Mit den cli & sei stimmt auch was nicht. Ich denk es geht 
eher so

 setup-sleep
 sleep
 .. und weiter geht's

allenfalls waere die genaue Bedeutung der Commands anzuschauen.

von Peter (Gast)


Lesenswert?

Ok, danke

das war nur ein Auszug aus der sleep.h um euch daran zu erinnern was ich 
mein

von 112 (Gast)


Lesenswert?

meine Fragen schließen sich ebenfalls an die sleep.h an...

Was macht die Funktion sleep_enable()? gehe ich recht der Annachme, dass 
damit das SE Bit gesetzt wird?

Der Befehl sleep_cpu führt den Rechner dann in den vorher gewählten 
Schlafmodus...? richtig?

sleep_disable(); setzt dann SE wirder zurück?

warum werden noch cli() und sei() mit genutzt?

mfg

von Purzel H. (hacky)


Lesenswert?

Libraries, die man nicht kennt, sollte man sich anschauen. Und falls das 
nicht geht - nicht verwenden. Einfach Annehmen, glauben, is nicht.

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.