AtmelStudio 6.2 kann keine float-Variabeln im Debbug-Watch anzeigen

Gast #4344101
Hallo zusammen

Ich habe ein Problem betreffend AtmelStudio 6.2
Folgendes Situation:
Ich programmiere einen Atmega16A.
In meinem C-Programm benutze ich eine float-Variable.
In ihr speichere ich einen Berechneten Wert.
Dieser Wert wird aus einem int-Wert und einer Gegebenen Formel in einer 
separaten Funktion-x berechnet.
In meiner Main-Funktion wird dann der Berechnete Wert in diese 
float-Variable übergeben.
Nun kome ich zum folgenden Problem:
Ich will wissen welcher Wert in der flow-Variable ist.
Wen ich das C-Program mit meinem AtmelStudio 6.2 debugge und die 
Variable im Watch-Fenster anzeigen lasse, Steht in der Value-Kollone der 
Variable: "could not evaluate".
Er kann den Wert also nicht Anzeigen?
Ich habe bereits den Trick mit dem "Project/ XX Properties.../ Advanced/ 
Haken bei Use GDB" probiert und es funktioniert trotzdem nicht.
Habe bereits auf Googel gesucht, konnte aber nicht viel hilfreiches 
finden...

Kann mir jemand helfen?
Danke schonmal im Vorraus :)
Gast #4344109
Sarah H. schrieb:
> Er kann den Wert also nicht Anzeigen?

eventuell weil der Code optimiert ist. Sie steht eventuell nur ein 
Registern. Schalte mal die Optimierung ab - dann geht aber keine delay 
mehr sauber.

oder mache ein globale float variable die volatile ist und weise ihr den 
Wert zu,
Gast #4344175
Hallo :)
Danke vielmals für deine Antwort.

> oder mache ein globale float variable die volatile ist und weise ihr den
> Wert zu,

Ich habe jetzt meine Variable folgendermassen global initiallisiert: 
"volatile float fLiterwert = 0;"

Der Haken bei Use GDB, habe ich so gelassen.
Jetzt scheint aber die Berechnung nicht zu klappen. während der 
Simmulation bleibt der Wert immer auf 0.
Hier noch ein kleiner Ausschnit vom Programm:
In der Main-Funktion:

while(1)/* Endlos-Loop */
{

   //Frequenzzähler
   zaeler = FrequenzZaeler(zaeler);//Zählt die fallenden Flanken des 
Signal-Eingangs.

   //Umrechner: Frequenzwert in Liter.
   fLiterwert = LiterRechner(iSignalFrequenz);//Berechnung der Einheit 
Liter mittels Übergabe des Frequenzwerts.

   //b = fLiterwert * 3;


}

Und hier noch die Berechnungsfunktion:

float LiterRechner(int f) //float LiterRechner(int f)
{

   float Liter; //Zwischen-Variable.

   Liter = (f/3200)*60; //Liter = (Frequenzwert/3200)*60

   return Liter; //Der Wert in Liter wird zurückgegeben.

}
Gast #4344220
Habe jetzt die unter-Funktion verbessert:

float LiterRechner(float f)  //float LiterRechner(int f)
{

  float Liter; //Zwischen-Variable.

  Liter = (f/3200)*60; //Liter = (Frequenzwert/3200)*60

  return Liter;  //Der Wert in Liter wird zurückgegeben.

}


So funktionierts.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.