mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik spritf() Problem


Autor: Denis Jakel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe ein kleines Problem mit dem sprintf(string,"esl> %1.3lf um",x) 
bzw der Variable x. Nach der atof tritt das Problem auf. Wenn ich die 
Berechnung x=offset+x*factor; auskomentiere, funktionier alles 
einwandfrei. Das komplette Programm ist im Anhang. Wenn ich die Zeile 
drin lasse bekomme ich beim kompilieren die folgende Fehlermedung.


Bitte um eure Hilfe oder oder nen Tip.

Grüße

Denis Jakel

--------------------------------------------------------------------
Programmausschnitt:


x=atof(string+3);
x=offset+x*factor;  // make problems in combination with sprintf...
//
//_delay_ms(1000);
//
sprintf(string,"esl> %1.3lf um",x);

--------------------------------------------------------------------
Fehlermedung beim kompilieren:

C:\ethernut-4.4.1\nutapp\rs232d>make install
avr-gcc -c -mmcu=atmega128 -Os -fno-delete-null-pointer-checks -Wall 
-Wstrict-pr
ototypes -Wa,-ahlms=rs232d.lst -DETHERNUT2 -D__HARVARD_ARCH__ 
-IC:/ethernut-4.4.
1/nutbld/include  -IC:/ethernut-4.4.1/nut/include  rs232d.c -o rs232d.o
avr-gcc rs232d.o -mmcu=atmega128 
-Wl,--defsym=main=0,-Map=rs232d.map,--cref -LC:
/ethernut-4.4.1/nutbld/lib -Wl,--start-group 
C:/ethernut-4.4.1/nutbld/lib/nutini
t.o -lnutpro -lnutos -lnutarch -lnutdev -lnutarch -lnutfs -lnutnet 
-lnutcrt -Wl,
--end-group -o rs232d.elf
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\lib 
c.a(log.
o): In function `log':
(.text.fplib+0x3e): relocation truncated to fit: R_AVR_13_PCREL against 
symbol `
__mulsf3' defined in .text section in 
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.
2/avr5\libgcc.a(_mul_sf.o)
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\lib 
c.a(log.
o): In function `log':
(.text.fplib+0x50): relocation truncated to fit: R_AVR_13_PCREL against 
symbol `
__addsf3' defined in .text section in 
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.
2/avr5\libgcc.a(_addsub_sf.o)
make: *** [rs232d.elf] Error 1

C:\ethernut-4.4.1\nutapp\rs232d>

--------------------------------------------------------------------

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
libm.a vergessen?

Autor: Denis Jakel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
du menst die matha lib für berechnungen???

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denis Jakel wrote:
> du menst die matha lib für berechnungen???

So siehts allerdings aus

....
C:/ethernut-4.4.1/nutbld/lib/nutini
t.o -lnutpro -lnutos -lnutarch -lnutdev -lnutarch -lnutfs -lnutnet
-lnutcrt -Wl,
....

ich seh hier nirgends ein -lm

Autor: Denis Jakel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann aber eigentlich nicht sein, da er mir beispiele wie

x=2*6;

berechnet.

Haben sie noch ne Idee???

Autor: Denis Jakel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem gelößt....

-lm im Makefile eingefügt


Viele Dank

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denis Jakel wrote:
> kann aber eigentlich nicht sein, da er mir beispiele wie


doch. Kann sein.
Schau dir den make Output an.
-lm ist nicht aufgeführt.

>
> x=2*6;
>
> berechnet.

Und?

2 ist ein Integer. 6 ist ein Integer.
Also braucht der Compiler zur Berechnung von 2*6 welche Multiplikation?
(Unn mal abgesehen davon, wird der Compiler diesen Ausdruck zur 
Compilezeit auswerten. Im Maschienencode steht dann nur noch x = 12

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau Dir mal das Kapitel über vfprintf in der AVR-GCC Doku an.

Da ist beschrieben, welche Libs eingebunden werden müssen.

Gerade für die xprintf Funktionen gibt es verschiedene Libs, die je nach 
Anforderung (Floating Point oder nicht) eingebunden werden können 
(müssen).

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.