Interrupt mit if-Anweisung macht was komisches

Gast #4511333
Hi Zusammen

Im Anhang findet ihr ein Programmteil, mit welchem ich ein Display 
ansteuere. Da ich diesen am erweitern bin, nutze ich eine Kontroll-LED, 
um mir die Daten anzeigen zu können. Komischerweise, und das passierte 
schon bei anderen Programmen, funktioniert dieser Programmteil nicht, 
wenn ich eine Abfrage einer Variabel mach (ist fast zu unterst im 
Programmteil):
if (STATUS00 == 0) {PORTB |= (1<<LED_rot);}
Wenn ich diese Afrage lösche bzw. eben mit // deaktiviere, zeigt mir das 
Display die gewünschten Daten an. Sobald ich aber STATUS00 oder eine 
andere Variable abfragen möchte, zeigt mir das Display einfach irgendwas 
an.
STATUS00 ist definiert als
volatile unsigned int STATUS00;
Ich kann auch einfach
if (STATUS00 == 0) {}
abfragen, damit zeigts immer noch einfach irgendwas an.

Wieso passiert sowas bei einer if-Anweisung??? Das dürfts doch nicht 
beeinflussen??? Copiler-Fehler?
Hab Atmel Studio 7.0.634
ATmega644A

Falls gewünscht kann ich auch das ganze Programm hochladen, was aber 
nicht nötig sein dürfte.

lg Sven
Angehängte Dateien:
Gast
Wenn bei der Prüfung der If-Bedingung ein IRQ auftritt, dann werden in 
der IRQ-Routine auch Statusbits geändert und die If-Bedingung nicht 
korrekt ausgeführt.

Also prüfen, ob alle Register und das Statusregister auf dem Stack 
gerettet werden und vor dem verlassen der IRQ-Routine auch zurückgelesen 
werden.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.