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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren