Ich grüße euch,

ich bin zwar auch nicht der Asm-Profi, aber ich versuche mal mitzuteilen wo (auch) ich eventuell ein Problem sehe.
Genau wie Besserwessi schon geschrieben hat, sehe ich auch an den gleichen Stellen ein grundsätzliches Problem.

Ich beziehe mich auf den einzigen geposteten Code von dir HeSt aus dem Post an dieser Stelle.

Wenn ich richtig geschaut habe, landen deine 3 Interrupt-Funktionen (und auch die nicht genutzten über main) alle wieder an einem "rjmp pwrdwn". Nun geht das main so von oben in diese sleep-Funktion.

Jetzt wird also mit dem "sleep" die CPU geparkt, und der erwartete Interrupt sollte seine Arbeit machen und wieder mit dem "rjmp pwrdwn" aus der ISR bzw. den aufgerufenen Funktionen irgendwie wieder, von oben zum "sleep" kommen.

Was aber dann nicht in den ISR-Funktionen ausgeführt wird ist der Befehl "reti".
Genau hier würde ich nun das Problem erwarten, da die AVR's (und wohl auch alle andere CPUs) das I am reti nutzen um einige Bits und Bytes in der Interrupt-Hardware/Register zu richten.

Da ich nun nicht weiß, ob dieses von dir benutzte Schema grundsätztlich funktioniert in dieser CPU, kann ich natürlich auf dem Holzweg sein.
Ich habe auch nicht geprüft, ob diese nicht durchgeführte Aktion vom fehlenden reti, in deinem Programm überhaupt eine Auswirkung hätte.

Meine ASM's hatte ich immer so geschrieben:
main
- init-Code
- sprungmarke: sleep
- jump sprungmarke

ISR
- tu was zu tun ist
- reti

--> reti wird ausgeführt, und im main geht es nach dem sleep mit speed wieder zum sleep. Genau so hatte Besserwessi ja auch schon geschrieben.
--> Ansonsten können nun die ISRs machen was sie wollen, und ich muss nicht darauf achten, dass sie alle wieder mit dem "rjmp pwrdwn" von oben zum sleep kommen. Sonst fehlt ja tatsächlich danach ein weiterer Befehl.

Zitat Zitat von HeSt
überflüssiges cli entfernt und am ende von "pwrdwn" ein rjmp auf den anfang eingefügt/angehängt.
Hast du das, was ich gerade so umständlich beschrieben habe, somit schon erledigt? (Besserwessi hat nur ca. 2% meiner Wortanzahl benötigt )
Wohin springst du, wenn du ".. auf den anfang .." springst?

Ich hoffe, wir kommen gut in den Winter-Sleep und auch wieder raus.
Gruß Sternthaler