AVRStudio printf float problem

Gast #1592355
Lesenswert?
• ▲
▼
Hallo,

ich weiß das Thema wurde schon ein paar mal diskutiert, aber:
ich habe nach Artikel:

http://www.mikrocontroller.net/articles/FAQ#Aktivieren_der_Floating_Point_Version_von_sprintf_beim_WinAVR_mit_AVR-Studio

die Unterstützung von float-Ausgabe eingeschaltet, es funktioniert aber 
nicht (Es wird "LT3582 vcat = ?V" angezeigt),z.B.
1
double volt=4.8;
2

3
printf("\r\nLT3582 vcat = %5.2fV", volt);
funktioniert nicht.

Der Workaround:
1
double volt=4.8;
2
char buf[10];
3

4
dtostrf(volt, 5, 2, buf);
5
printf("\r\nLT3582 vcat = %sV", buf);
funkioniert aber.

Scheinbar hat das Linken nicht geklappt, kann man das irgednwie 
nachprüfen?
Irgendwelche Ideen warum es nicht geht.
#1592365
Lesenswert?
• ▲
▼
mario schrieb:

> Scheinbar hat das Linken nicht geklappt, kann man das irgednwie
> nachprüfen?


Im AVR-Studio wird im Output Fenster mitprotokolliert, was die einzelnen 
'Erstellungsschritte' machen und mit welchen Argumenten sie aufgerufen 
wurden.
Mach einen Screenshot davon und poste ihn (Bei einem Rebuild all). Dann 
kann man hier mal durchsehen, welchen Schalter du vergessen hast.
Gast #1592392
Lesenswert?
• ▲
▼
Hier ist der output:

Build started 10.2.2010 at 16:41:46
avr-gcc  -mmcu=atmega644p -Wall -gdwarf-2 -std=gnu99 
-DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct 
-fshort-enums -MD -MP -MT main.o -MF dep/main.o.d  -c  ../main.c
../main.c: In function 'main':
../main.c:11: warning: unused variable 'i'
avr-gcc  -mmcu=atmega644p -Wall -gdwarf-2 -std=gnu99 
-DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct 
-fshort-enums -MD -MP -MT TWI_Master.o -MF dep/TWI_Master.o.d  -c 
../TWI_Master.c
../TWI_Master.c: In function 'TWIM_Init':
../TWI_Master.c:11: warning: unused variable 'i'
avr-gcc -mmcu=atmega644p -Wl,-u,-vfprintf  -Wl,-Map=Peripherie-Board.map 
main.o uart_ext.o uart.o I2C_Slave_Handler.o TWI_Slave.o TWI_Master.o 
ADC.o OLED.o LT3582.o    -lprintf_flt -lm  -o Peripherie-Board.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature 
Peripherie-Board.elf Peripherie-Board.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" 
--change-section-lma .eeprom=0 --no-change-warnings -O ihex 
Peripherie-Board.elf Peripherie-Board.eep || exit 0
avr-objdump -h -S Peripherie-Board.elf > Peripherie-Board.lss

AVR Memory Usage
----------------
Device: atmega644p

Program:   17496 bytes (26.7% Full)
(.text + .data + .bootloader)

Data:       1077 bytes (26.3% Full)
(.data + .bss + .noinit)


Build succeeded with 2 Warnings...

Wie man erkennen kann, werden die Linkeroption "-Wl,-u,-vfprintf" und 
die libraries "-lprintf_flt" und "-lm" eingebunden...
#1592778
Lesenswert?
• ▲
▼
Matthias K. schrieb:
> Libraries einbinden:
> libprintf_flt.a
> libm.a
>
> Custom Options (Linker Options):
> -Wl,-u,vfprintf -lprintf_flt

mario schrieb:
> Wie man erkennen kann, werden die Linkeroption "-Wl,-u,-vfprintf" und
> die libraries "-lprintf_flt" und "-lm" eingebunden...

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.