Forum: Digitale Signalverarbeitung / DSP / Machine Learning sinus funktion bei ezdsp f28335


von sinus funktion bei ezdsp f28335 (Gast)


Lesenswert?

hi zusammen,

ich benutze grad ezdsp f28335 floating point von TI,um AC Motor zu 
regeln.Dabei muss ich sinus funktion benutzen.Ich hab <math.h> eingefügt 
und drin gibts doch funktion sinus. Aber wenn ich sie aufrufe,kommt eine 
fehlermeldung von CCS dass die funtion nicht gefunden.

als zweites, möchte ich gern fragen, bei floating point prozessor kann 
ich formel wie "natur" benutzen? also meine ich wie in matlab, ein 
formel ganz natur beschrieben wie z.b.
float a,b,x;
y = ax + b, usw.

Bei fixed point (wie bei f2812 von TI) sollte man IQmath benutzen? Was 
ist genau unterschied weiß ich noch nicht:(

Könnt ihr mal mir helfen?

vielen dank im voraus:-)

Gruß aus uni Hannover:-)

von Tim R. (mugen)


Lesenswert?

Zur Berechnung von Sinus-Funktionen ist bei diesem DSC auch IQ-Math zu 
verwenden. Über math.h müsste dies aber auch möglich sein, aber damit 
habe ich mich noch nicht beschäftigt. Und meine andere Frage in diesem 
Subforum bleibt ja leider offen. Zunächst muss die neuste iqmath Library 
besorgt werden. Konfiguration im Linker (Speicherbereichszuweisung) 
müssen auch durchgeführt werden. Eine Sinus-Kalkulation sieht dann im 
Source wie folgt aus:

void math_test(void)
{
    _iq l_iq_in1,l_iq_out1
//====================================================================== 
================================

// Hier ein paar Trigonometrische Beispiele:
//l_iq_in     immer wenn float ins IQ Format gewandelt wird
//l_iq_out    immer wenn eine IQ-Funktion ein IQ Wert (l_iq_in) 
berechnet - Ausgabe im IQ Format
//g_float_...   g=globale Variable - Definiertes Format von Variablen 
für   die Funktion _IQNtoF,_IQNint

l_iq_in1    =_IQ(PI/5);
l_iq_out1    =_IQsin(l_iq_in1); //Execution Cycles = 46
g_float_sin1  =_IQtoF(l_iq_out1);     //Execution Cycles = 22
}


Wegen knapper Zeit kann ich keinr weitere Hilfestellung geben, aber ich 
hoffe damit etwas geholfen zu haben.

von sinus funktion bei ezdsp f28335 (Gast)


Lesenswert?

Danke Tim für dein Antwort:-)

was macht eigentlich diese IQmath? wie in matlab , man kann doch direckt 
sinus oder y = ax+ b benutzen oder? ich denke bei foating point 
prozessor muss es gehen ,bin mir aber nicht sicher:(

für sinus funktion hab ich so gemacht:
1
#include <math.h>
2
void clack( float32 x, float y)
3
{
4
   //....
5
   y = sin(x);
6
   //....
7
}

Code Composer studio sagt dann :
......
......
<Linking>

 undefined  first referenced
  symbol        in file
 ---------  ----------------
 _Cos       D:\\Programme\\MyProjects\\RL_3phase\\Debug\\park_sinus.obj
 _Sin       D:\\Programme\\MyProjects\\RL_3phase\\Debug\\park_sinus.obj
 _park_calc D:\\Programme\\MyProjects\\RL_3phase\\Debug\\RL_3phase.obj
.....

Frage ist ,ob es mir noch sorce file fehlt,"math.c" oder bibliothek file 
"math.lib" z.b.?

von Martin L. (Gast)


Lesenswert?

Mathe Library beim Linken mit angeben. GCC-Syntax ist -lmath. CCS evt. 
ein bisschen anders.

Viele Grüße,
 Martin L.

von tequila aus hannover (Gast)


Lesenswert?

danke Martin:-)

ich glaube das ist mein fehler:D die header file noch nicht in richtige 
ordner reinzukopieren:D

wünsche euch noch schöne weihnachtszeit:-)

ciao

von tequila aus hannover (Gast)


Lesenswert?

dringend bitte helfen:(

ich hab math.h gefunden und in file includen.aber es zeigt gleiche 
fehlermeldung.

kann jemand mir helfen?
 und die offene frage bei floating point operator?

danke euch im voraus!

von tequila aus hannover (Gast)


Lesenswert?

schon Fehler gefunden:)
das war ein dummer fehler von mir. Ich hab "Sin(x)" geschrieben es ist 
"sin(x)" in math.h deklariert:D:D:D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.