Atmega32 probleme mit math.h

Gast #3617769
Lesenswert?

Hallo,
ich brauche ein paar Funktionen aus der math.h um eine analoge 
Eingangsgröße in meinem µC zu linearisieren. Jedoch macht der Compiler 
Probleme.
1
c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr5\libc.a(floatsisf.o): In function `__floatunsisf':
2
(.text.fplib+0x0): multiple definition of `__floatunsisf'
3
c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/avr5\libgcc.a(_usi_to_sf.o):(.text+0x0): first defined here

Das spuckt der aus.

Ich habe folgenden Programmcode:
1
#include <math.h>
2

3
double a,b;
4

5
//......
6
//......
7

8

9
// so klappt es:
10
a=log10(5);
11

12
// so nicht: (da kommt der Fehler)
13
// "b" soll den Messwert aus meinem ADC darstellen
14
b=5;
15
a=log10(b);

Leider werde ich aus dem Fehlercode nicht schlau. Habe auch alles in 
double deklariert und die math.h schön included.
Wäre super wenn mir jemand weiterhelfen könnte. Danke!!!
Gast #3617825
Lesenswert?

Hallo und vielen Dank für die schnelle Antwort!

Daran könnte es durchaus liegen, jedoch weiß ich nicht wie ich bei AVR 
Studio4 zu der Linkeroption komme... Im Internet gibt es zwar 
anleitungen wie man es bei AVR Studio 5 macht aber bei 4 sieht das alles 
naja sehr abgespeckt aus.

Hast du vielleicht eine Idee?

Grüße
#3617849
Lesenswert?

Der scheint eher mehrere __floatunsisf zu linken. Was natürlich zu einem 
Konflikt führt. Warum linkt er

c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr5\lib 
c.a
UND
c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/avr5\libgcc.a

Ist das normal? Ich denke eher nicht.
Gast #3617860
Lesenswert?

Wie gesagt, sobald ich die Variable aus der Log.-Fkt. entferne ist alles 
cool. Egal ob die Variable nun ein einfacher double Wert ist, den ich 
für den Testzweck mit double a; definiert habe, oder tatsächlich mein 
Messwert vom ADCH. Beides macht den gleichen Fehler.

Gruß
Gast #3617897
Lesenswert?

[code]
Build started 15.4.2014 at 11:34:47
avr-gcc -mmcu=atmega32 -lm  -Wl,-Map=Midi.map Midi.o     -o Midi.elf
c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr5\lib 
c.a(floatsisf.o):  In function `__floatunsisf':
(.text.fplib+0x0): multiple definition of `__floatunsisf'
c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/avr5\libgcc.a(_usi_to_sf.o): 
(.text+0x0):  first defined here
make: *** [Midi.elf] Error 1
Build failed with 1 errors and 0 warnings...
[code]

Nun macht der das wenn ich -lm beigefügt habe.
#3617972
Lesenswert?

Der da schrieb:
> c:/winavr-20090313/

ist ja selbst für WinAVR eine uralt-Version. Die letzte verfügbare 
Version (2010...) funktioniert ohne Probleme.

Der da schrieb:
> Naja, habe es hinbekommen... Lösung: Habe einfach zu AVR Studio 5
> gewechselt

Das allerdings ist die schlechteste aller Lösungen. Studio 5 hat wohl 
niemals richtig funktioniert. Wenn schon, nimm wenigstens Version 6.1 
oder 6.2

Oliver

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