Interrupt Probleme

Gast #25626
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
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
Gast #25630
aber mit CPI ändere ich doch nichts?
ich verwende kein register in der Interruptroutine dass ich auch in der 
normalen routine verwende

atmel typ`?? des mit stack pointer initialisieren hab ich abgeschrieben 
ich hab nur obn die def eingegeben des wars!

grüße

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.