Fleißkommafehler beim AVR

OP #1803501
Lesenswert?

Hallo zusammen,
ich habe hier einen Mega16 mit einem Display und möchte nun die 
Analogeingänge nutzen.
Im Prinzip geht es auch.
Also ich lege eine Spannung an den ersten Eingang (0..5V, interne 
Referenz Vcc, Kondensator an Aref). Den gewandelten Wert lasse ich mir 
auf dem Display ausgeben, sowohl als Countwert als auch umgerechnet in 
Volt.
Der Countzwert geht einwandfrei, es kommen Werte zwischen 0 und 1023. 
Aber bei der Umrechnung in Spannung geht nix, auf dem Display erscheint 
nur ein Fragezeichen. Habe ich eine Bibliothek vergessen ? Derzeit binde 
ich die "libm.a" und die "libprintf_flt.a" mit ein (ach ja: AVR Studio 
und gcc).
Ich habe versucht das Ganze im Simulator zu debuggen, aber im 
Watch-Fenster zeigt er immer 0 an für beide Variablen (was ja aber auch 
sein kann,d a habe ich ja keinen echten Analogwert).

Mein Codeauszug:
    if (adc_count >= 1000)
    {
  adc_count=0;
  AdcResult = ADC_Read_Avg(0,100);
  Volt = AdcResult*5.0/1024.0;
  sprintf(buffer,"%04d - %f V", AdcResult, Volt);
  lcd_setcursor(0,1);
  lcd_string(buffer);
    }

Greets
Karlheinz
Gast #1803538
Lesenswert?

Karlheinz Druschel schrieb:
> sprintf(buffer,"%04d - %f V", AdcResult, Volt);

Hast du mal versucht, die Stellen anzugeben?
1
sprintf(buffer,"%04d - %4.3f V", AdcResult, Volt);
2
                        ^^^

Im AVRStudio kenne ich mich nicht aus, im Makefile sieht's mit den Libs 
dann so aus:

# If this is left blank, then it will use the Standard printf version.
PRINTF_LIB = $(PRINTF_LIB_FLOAT)
#PRINTF_LIB = $(PRINTF_LIB_MIN)
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)

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