MSP430, IAR Warnung

Gast #350349
Lesenswert?
• ▲
▼
Hallo

beim compilieren mit IAR erhalte ich immer folgende Warnung:

Warning[Pa082]: undefined behavior: the order of volatile accesses is
undefined in this statement

der dazugehörige Code aus der ADC ISR:
Mess_S1_ES1_Offset = (ADC12MEM0 + ADC12MEM2 + ADC12MEM4 +
ADC12MEM6)/4;

wie kann ich dem Compiler begreiflich machen das die Register (ADC12..)
einen definieren Wert haben, denn wenn ich in die ADC ISR eintrete haben
die Register den Wandlungswert.

Gruß Eltman
Persönliche Seite #350350
Lesenswert?
• ▲
▼
Die Fehlermeldung besagt nicht, daß die Register keinen definierten wert
hätten, sondern daß die Reihenfolge des Zugriffs nicht festgelegt
ist.

Um das zu vermeiden, solltest Du sowas schreiben:

  temp = ADC12MEM0;
  temp += ADC12MEM2;
  temp += ADC12MEM4;
  temp += ADC12MEM6;
  Mess_..Offset = temp / 4;

Wenn Dir an dieser Stelle die Reiehenfolge des Zugriffs unwichtig ist,
dann kannst Du
- die Warnung ignorieren
oder
- herausfinden, wie man die Warnung gezielt unterdrücken kann. Bei
einigen Compilern gibt es dafür eigene pragma-Anweisungen.
Gast #350352
Lesenswert?
• ▲
▼
Die Warnungen gänzlich auszuschalten ist vielleicht etwas weniger
geschickt. Denn manchmal können sie sehr helfen, seltsamem Fehlern
vorzubeugen. z.B. wenn mit verschiedenen Datentypen hantiert wird und
dabei Daten verloren gehen können oder Variabeln gar nie benutzt
werden.....
Da sind die Hinweise des Compilers sehr nützlich.

Wenn Du so machst wie Rufus schreibt, dann schreibst Du zwar ein wnig
mehr, aber der compilierte Code sollte eigentlich nicht grösser werden.
Gast #350353
Lesenswert?
• ▲
▼
""Hab jetzt im IAR die Einstellung auf nur Errors anzeigen gestellt,

Nicht gut ! Als Beispiel: if(i = 1) ...
gibt eine Warnung, weil ein == erwartet wird. Ohne diese Warnung kann
man viele Probleme bekommen.

Antwort schreiben

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.

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.