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
Hier lesen: http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html#ga3b98c0d17b35642c0f3e4649092b9f1
Hm, was willst Du mir damit sagen ? Die Compiler-Optionen "-Wl,-u,vfprintf -lprintf_flt -lm" bringen leider keine Veränderung. Und da Volt als Double deklariert ist stimmt das Formatkennzeichen "%f" ebenfalls.
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)
@Karl hein Buchegger: Wie ich bereits erwähnte habe ich die im Link angegebenen Libs eingebunden, und die Compileroptionen auch gesetzt. Passiert nur leider nix @Thilo: Bringt leider auch nix, hätte mich auch gewundert.
Das muß eine Linker-Option sein. Das Problem hatte ich auch schon mal :-)
Hier ist die Einstellung beschrieben, dürfte di Selbe sein wie deine: http://winavr.scienceprog.com/avr-gcc-tutorial/using-sprintf--function-for-float-numbers-in-avr-gcc.html Muss man nicht math.h mit einbinden? Irgendwas habe ich da noch im Hinterkopf ...
OKIDOK, ich habs .-) Ich hatte die Optionen "-WI, -u, vfprintf" bei9 den Complier-Options, und nicht bei den Linker-Options eingetragen *lol Danke für die Tips
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.