Keil-Compiler optimiert Variable weg

OP #2444092
Lesenswert?
• ▲
▼
Ich versuche gerade auf einem STM32fx107... µC diverse Sensoren 
auszuwerten. (Gyro, Beschleunigung)
Dafür habe ich ein Teil des Codes, der die Lage der Sensoren berechnen 
soll, über Simulink/Targetlink erstellt.

Das Ergebnis der Berechnungen wird zur Zeit noch nicht weiter verwendet, 
und soll nur zur Auswertung im Debugger genutzt werden. Dummerweise 
optimiert der Compiler den letzten Schritt Berechnung des Ergebnisses 
einfach weg :-(
(in der angehängten Funktion die Zeile: )
1
Sb1_Out_Winkel = Sb3_Switch2;
Wie kann ich das verhindern?

Programmierumgebung: Keil µVision v4.22.15.0
C-Compiler: armcc.exe v4.1.0.791
Angehängte Dateien:
#2444114
Lesenswert?
• ▲
▼
Erik H. schrieb:
> Das Ergebnis der Berechnungen wird zur Zeit noch nicht weiter verwendet,
> und soll nur zur Auswertung im Debugger genutzt werden. Dummerweise
> optimiert der Compiler den letzten Schritt Berechnung des Ergebnisses
> einfach weg :-(

nicht ganz ernstgemeint, interessant ob Compiler
die Variable immernoch wegschmeisst.

int result = f(/*deine berechunung*/), * ptr = &result;
ptr = ptr++;
OP #2444826
Lesenswert?
• ▲
▼
Deklarierung als volatile führt zu Compile-Fehler (welcher, weiß ich 
gerade nicht, da das Programm inzwischen umgeschrieben und momentan 
nicht kompilierbar ist)

Letztendlich habe ich die Variable:
1
static Int32 X_Sb1_Unit_Delay = 0
global deklariert, sodass ich sie in eine watch-Liste einfügen und 
bequem beobachten konnte.

@Daniel: eventuell von anderer Seite wurde mir bereits geraten einfach:
benötigteVariable ++;
benötigteVariable --;
einzusetzen...
ich nehme mal stark an, dass dein Beispiel funktioniert hätte, habe es 
aber nicht getestet, da nicht mehr benötigt.

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.