mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik if in einer Interrupt Routine


Autor: Phase IV (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe folgendes Problem (mit einem 80c51 und Keil):

wenn ich eine if abfrage in einer interrupt routine verwende, wird sie 
immer ausgeführt, egal ob true oder false. wie kommt das?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[Glaskugel] Weil die Variable, die Du da abfragst, nicht als "volatile" 
deklariert ist und daher der Optimierer des von Dir verwendeten 
Compilers annimmt, daß die Variable sich in der Interruptroutine nicht 
ändert.

Autor: Martin F. (martin-f)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein, Du hast das zweite gleich in Deiner If bedingung vergessen, Du 
machst da 'ne zuweisung. das ergibt immer true.
Da bin ich ganz sicher, meine Glaskugel lügt nie.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also meine Glaskugel hat gesagt, daß eine Variable auf einen Bereich 
getestet wird, in dem sie immer liegt, also z.B. sowas wie 
vorzeichenbehafteter char < 200.

Autor: Willi Wacker (williwacker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch eine Glaskugel und die sagt: Du hast einen Stacküberlauf

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Reservekugel meinte noch, daß irgendwo drüber ein

#define if(x)

steht, aber die ist noch nicht richtig justiert.

Autor: Wurst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weltklasse, das erste Mal, dass einer Hilfe bekommt, bei einer nicht 
allzu klar fomulierten Frage! (Und keine Standpauke zu der Art ein 
Problem zu schildern und dann eine klare Frage zu stellen)
Gratulation an eure Glaskugeln

Autor: Willi Wacker (williwacker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wurst wrote:
> Weltklasse, das erste Mal, dass einer Hilfe bekommt, bei einer nicht
> allzu klar fomulierten Frage! (Und keine Standpauke zu der Art ein
> Problem zu schildern und dann eine klare Frage zu stellen)
> Gratulation an eure Glaskugeln

Danke

Autor: Chrisi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Glaskugel sagt: Strichpunkt direkt hinter if-Anweisung :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.