MSP430 mspgcc Wurzel ziehen und Winkelfunktionen

Gast #575324
Lesenswert?

Salu zusammen

Ich arbeite mit einem MSP430F149 und dem mspgcc Compiler für Eclipse. 
Nun muss ich in einer Rechnung die Quadratwurzel ziehen. Geht das mit 
dem Befehl sqrt? Habe gehört dass es da zu Problemen kommen kann, oder 
mache ich mir da unnötige Gedanken? Weiter muss ich noch 
Winkelfunktionen ala sin, cos, asin, acos verwenden. Muss ich da was 
einbinden oder stehen mir die Funktionen einfach zur Verfügung? Hoffe 
nicht das ich das noch über Reihen realisieren muss. Wäre über eine 
Antwort dankbar

Merci im Voraus

Greets reflection
Gast #575404
Lesenswert?

Ich habe nun folgendes versucht:

float acc_result = sqrt _PARAMS((acc_x * acc_x) + (acc_y * acc_y) + 
(acc_z * acc_z));

wollte es einmal mit der math.h lösen. Habe diese auch eingebunden, aber 
er bringt immer die Fehlermeldung: Undefined reference to 'sqrt'
Was mich ich denn nu wieder falsch. :o)

Gruss reflection

PS: Auch die sin Funktion kann ich nicht verwenden, erscheint die selbe 
Fehlermeldung beim Compilieren
#575451
Lesenswert?

Dann ist die Funktion nicht implementiert, sonder nur der Funktionsrumpf 
in der Header-Datei. Die muss dann vom User selbst in geeigneter Weise 
bereitgestellt werden. ist genau wie bei printf(), da muss man putc() 
auch selber machen, der Compiler kann ja nicht wissen, wohin man die 
printf() Ausgabe haben will.
Gast #575502
Lesenswert?

rufus wrote: Nein, das ist eher unüblich. Linkst Du auch mit libm.a?

Sorry, traue mich fast nicht das zu sagen, aber ich weiss nicht was Du 
meinst. Bin noch rel. neu mit dem ganzen Thema. Wo sehe ich mit was ich 
linke, in den Project Options?

Greets
Persönliche Seite #575506
Lesenswert?

Damit Floatingpoint-Arithmetik genutzt werden kann, muss die dafür 
zuständige Library zum Programm gelinkt werden (ganz schicke sagen "das 
Programm muss gegen die Library gelinkt werden").
In dieser Library ist der Code enthalten, der erforderlich ist, um 
Floating-Point-Arithmetik auszuführen, also auch der Code für die 
Grundrechenarten etc.
Und die Implementierung der Funktion sqrt gehört auch in diese Library.

Das Linken mit einer Library geschieht beim gcc mit der 
Kommandozeilenoption

  -l<libraryname>

Die Library heißt libm.a, allerdings ist sowohl das Präfix "lib" als 
auch die Dateinamenserweiterung ".a" wegzulassen, so daß die 
Kommandozeilenoption so aussieht:

  -lm

Viel Erfolg.
Gast #575530
Lesenswert?

Tja, wie gesagt, mir hat noch nie jemand etwas über uP erzählt. Habe ich 
mir selber irgendwie zusammengeschustert, anders kann man es nicht 
sagen. Ich habe was versucht aber jetzt geht gar nichts mehr :o( Er 
bringt nur noch einen Error, nämlich das er nichts macht... So long, 
wird wohl wieder ein riesen Akt werden. Also langsam frage ich mich ja 
schon. Kann doch nicht so schwer sein ein Tool zu entwickeln wo ich 
einfach eine Wurzel ziehen kann ohne tausend Sachen zu wissen. Langsam 
aber sicher denke ich, dass ich von uP's die Finger lasse und mich 
wieder der Analog Technik widme, da hab ich wenigstens einigermassen nen 
Plan.

Danke aber für Hilfe, auch wenn ichs nicht hin kriege

Greets
Gast #575542
Lesenswert?

So, der Fehler ist raus. Ich habe einfach unter den Project Preferences 
beim ersten Fenster dort wo msp430-gcc steht noch ein -m angehängt. Der 
Fehler mit dem sqrt ist behoben, aber dafür habe ich 5 neue Errors.
Angehängte Dateien:
#575546
Lesenswert?

Jo, Irrtum von mir, man muss dem Linker "nur" passend sagen, er soll die 
libm.a einbinden. Das ist über das Eclipse-Plugin ganz schön russisch 
gelöst, aber naja, Open-Source-Gefrickel eben.

Siehe Bild, so klappts bei mir dann mit sqrtf(..) kann ich Wurzel aus 
float ziehen. Frisst aber auch mal locker 3,5kByte ROM für eine einzige 
Wurzel :-/
Angehängte Dateien:
Gast #575551
Lesenswert?

Salu zusammen

Sorry, aber wir haben wohl aneinander vorbeigeredet. Ich habs natürlich 
im Linker eingetragen. Das Problem war bei mir, dass er mir einen Fehler 
bringt mit sqrt. Wechsle ich den Befehl zu sqrtf funktioniert es. Ist 
sqrt nur für Integer zulässig?

Danke für die Hilfe, hats also doch noch geklappt :o) Tut mir echt leid 
für Euch, bin sonst schon der der sich einliest ect. aber im Moment 
fehlt mir die Zeit um lange zu probieren, auch wenn es interessant wäre.

Greets und hoffentlich bis "nicht" so bald, sonst gibts wieder Arbeit 
:o)

reflection

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