Interrupt Probleme

Gast #25626
Lesenswert?

HI Leute

Habe folgendes Problem teste gerade mein lauflicht programm mit dem AVR 
Studio Simulator! und es ist so

es treten timerinterrupts auf und der führt dann etwas aus und dann 
SOLLTE er doch wieder da hinzurück springen wo er aufgetreten ist und 
den BEFEHL ausführen ODER????

jedenfalls macht er das nicht der Interrupt tritt zb bei
cpi bla,0b00000000 und macht des was er soll und wenn er zurück hüpft 
ist er beim nächsten befehl und hat aber den CPI befehl nicht ausgeführt 
denn er wenn es richtig verglichen wäre dann dürfte er nicht mit breq 
nicht springen tut er aber doch!

WAS KANN DAS SEIN?

Sollte das nicht so sein dass der BEFEHL bei dem der Interrupt auftritt 
auf ALLE FÄLLE FERTIG GEMACHT WIRD wenn er angefangen wurde bzw wenn der 
interrupt während des ausführens des befehls auftritt dass er dann 
zumindest nachher fertig gmacht wird bzw neu gestartet wird?????

was kann ich gegen dieses problem tun??

Grüße Posseidon
Gast #25629
Lesenswert?

Stimmt so.

Hast Du den richtigen AtmelTyp angegeben? RAMEND ist anbhängig vom Typ.


Ein Befehl wird nicht neu gestartet. Ein begonnener Befehl wird zuende 
geführt erst dann wird unterbrochen.
Wenn Dein Programm nach dem CPI weitermacht stimmts noch, aber wenn der 
nachfolgende Befehl BEQ falsche Flag erhält, könnte es sein das Du in 
Deiner Interruptroutine die Flags nicht rettest und am Ende 
wiederherstellst. Alle Registerinhalte, die in einer Interruptroutine 
verändert werden, müssen immer auf dem Stack gesichert und wiedergeholt 
werden.

Reiner

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