mikrocontroller.net

Forum: Compiler & IDEs Printf float mit Eclipse und Winavr


Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle,

Ich kann mit Avr eclipse Zeichen und ganze Zahlen über printf ausgeben.
Leider ich kann keine Fliesskommazahlen ausgeben.

Beispiel:
float f = 1.0098;
printf("f = %f\n", f);

Ausgabe: f = ?

Die Libraries: printf_flt.a und m.a sind über Eclipse eingebunden.

Compiler Einstellung sind:

Building file: ../src/main.c
Invoking: AVR Compiler
avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums 
-funsigned-char -funsigned-bitfields -Wl,-u,vfprintf -lprintf_flt -lm 
-mmcu=atmega8 -DF_CPU=3686400UL -MMD -MP -MF"src/main.d" -MT"src/main.d" 
-c -o"src/main.o" "../src/main.c"

Linker Einstelungen:

Invoking: AVR C Linker
avr-gcc -Wl,-Map,Temperature_Sensor.map -mmcu=atmega8 
-o"Temperature_Sensor.elf"  ./src/main.o  ./src/drivers/i2c.o 
./src/drivers/lm75A.o ./src/drivers/serial.o   -lprintf_flt -lm

Danke im Voraus.

: Verschoben durch Admin
Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das "-Wl,-u,vfprintf" muss in den Linker-Aufruf. Beim Compilieren hat 
das nichts zu suchen (wie übrigens auch -lprintf_flt und -lm).

Autor: Pause (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan, durch -Wl wird das durch das Compiler-Frontend an den Linker 
alles richtig übergeben. Das ist richtig so.
Warum die Ausgabe nicht funktioniert sehe ich gerade auch nicht.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pause schrieb:
> Stefan, durch -Wl wird das durch das Compiler-Frontend an den Linker
> alles richtig übergeben. Das ist richtig so.

Aber nicht, wenn bei dem gcc-Aufruf überhaupt nichts gelinkt wird, 
sondern nur übersetzt. Und da, wo dann tatsächlich gelinkt wird, fehlt 
die Option.

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, Pause

ich habe das jetzt geändert:

Invoking: AVR Compiler
avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums 
-funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=3686400UL 
-MMD -MP -MF"src/drivers/serial.d" -MT"src/drivers/serial.d" -c 
-o"src/drivers/serial.o" "../src/drivers/serial.c"
Finished building: ../src/drivers/serial.c

Invoking: AVR C Linker
avr-gcc -Wl,-Map,Temperature_Sensor.map -Wl,-u,vfprintf -lprintf_flt -lm 
-mmcu=atmega8 -o"Temperature_Sensor.elf"  ./src/main.o 
./src/drivers/i2c.o ./src/drivers/lm75A.o ./src/drivers/serial.o 
-lprintf_flt -lm
Finished building target: Temperature_Sensor.elf

Trotzdem geht das nicht.

Autor: Daniel V. (danvet)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robert schrieb:
> Hallo, Pause
>
> ich habe das jetzt geändert:
>
> Invoking: AVR Compiler
> avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums
> -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=3686400UL
> -MMD -MP -MF"src/drivers/serial.d" -MT"src/drivers/serial.d" -c
> -o"src/drivers/serial.o" "../src/drivers/serial.c"
> Finished building: ../src/drivers/serial.c
>
> Invoking: AVR C Linker
> avr-gcc -Wl,-Map,Temperature_Sensor.map -Wl,-u,vfprintf -lprintf_flt -lm
> -mmcu=atmega8 -o"Temperature_Sensor.elf"  ./src/main.o
> ./src/drivers/i2c.o ./src/drivers/lm75A.o ./src/drivers/serial.o
> -lprintf_flt -lm
> Finished building target: Temperature_Sensor.elf
>
> Trotzdem geht das nicht.

probier mal das '-lm' als letzte Option zu übergeben, und vor dem 
Output, also:

Invoking: AVR C Linker
avr-gcc -Wl,-Map,Temperature_Sensor.map -Wl,-u,vfprintf
-mmcu=atmega8   ./src/main.o ./src/drivers/i2c.o ./src/drivers/lm75A.o 
./src/drivers/serial.o -lprintf_flt -lm -o"Temperature_Sensor.elf"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.