C-Programmierung ADC

Gast #3447231
Lesenswert?
• ▲
▼
Hallo, habe eine kleine Frage zu folgender Programmierung:
1
double VREF=1.1;
2
double SpanADC=18200;
3
double adc;
4
double adw;
5

6

7

8
adc = ad_vcc(PORT_SPANNUNG);
9
adc *=VREF;
10
adc /=1024;
11
adc *=SpanADC;  //wird beim debuggen übersprungen
12
adw  =adc/200;
13
adw *=1000.0;  //wird beim debuggen übersprungen
Die beiden kommentierten Zeilen werden beim debuggen immer übersprungen 
und somit ist das Ergebnis falsch.

Wieso werden die übersprungen?

Danke
#3447278
Lesenswert?
• ▲
▼
Hansiiii schrieb:

> Wieso werden die übersprungen?

Eventuell weil du den Optimizer eingeschaltet hast und der die 
Anweisungen ein wenig umgruppiert hat.

Das Ergebnis mag temporär falsch sein (durch die Umgruppierung der 
Anweisungen), aber spätestens wenn dann adcw das endgültig verwendet 
wird, zb in einem Funktionsaufruf in dem der Wert ausgegeben wird), muss 
die Zahl dann korrekt sein.

Ergo: Wenn der Optimizer eingeschaltet ist, darf man nicht alles vom 
Debugger für bare Münze nehmen. Manche Werte sind einfach nur deswegen 
falsch, weil die Berechnung vom Optimizer ein wenig verschoben wurde und 
deshalb an der konkreten Stelle an der man im Debugger sich den WErt 
ansieht, noch gar nicht erfolgt ist (sondern erst ein wenig später 
gemacht wird)

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.