mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP C-code in Code Composer Studio 3.3


Autor: Tu Tequila (tequila)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich bin ganz neu in dsp,und benutze grad ezdsp28335 um ACI 
feldorientiert zu regeln.Ich hab TI-beispielcode für f280x geguckt,aber 
nicht alles verstanden.

OriginalCode von TI:
typedef float  float32;
typedef unsigned long Uint32;
typedef struct {float32 duty3;
                void (*update)();
                }PWMGEN;
typedef PWMGEN *PWMGEN_handle;

#define PWMGEN_DEFAULTS {0.0,(void (*)(Uint32))PWM_Update}

void PWM_Update(PWMGEN_handle v);

PWMGEN pwmgen = PWMGEN_DEFAULTS;


void main(void)
{
  pwmgen.update(&pwmgen);
}

void PWM_Update(PWMGEN_handle v){}

Könnte jemand mir erklären,was für eine syntax ist dies
(void(*)(Uint32))PWM_Update 
??also was für eine typumwandlung ist das?

Ich hab nach meiner art so gemacht,und fehlerfrei kompiliert aber wenn 
der cursor auf
pwmgen.update(&pwmgen);
 dann CCS sagt "symbol definition not found".Woran liegt es?
typedef float  float32;
typedef struct struct_PWM{  float32 duty3;
          void (*update)(struct struct_PWM*);
       }PWMGEN;

typedef PWMGEN *PWMGEN_handle;

#define PWMGEN_DEFAULTS {0.0,PWM_Update}

void PWM_Update(PWMGEN_handle v);

PWMGEN pwmgen = PWMGEN_DEFAULTS;


void main(void)
{
   pwmgen.update(&pwmgen);
}

void PWM_Update(PWMGEN_handle v){}

vielen vielen dank im voraus!
gruß aus uni hannover:-)

Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Könnte jemand mir erklären,was für eine syntax ist dies
>
> (void(*)(Uint32))PWM_Update
>
> ??also was für eine typumwandlung ist das?
Ich tippe auf einen Funktionszeiger. Da es ja auch eine Funktion namens 
PWM_Update gibt, macht diese Vermutung auch Sinn. Diese Funktion hat 
keinen Rückgabewert (void) und erwartet einen 32bit-Wert (Uint32).

> Ich hab nach meiner art so gemacht,und fehlerfrei kompiliert aber wenn
> der cursor auf
>
> pwmgen.update(&pwmgen);
>
>  dann CCS sagt "symbol definition not found".Woran liegt es?
Vielleicht daran dass du
typedef struct ...
geändert hast!?

Warum lässt du das Ganze nicht wie es ist bzw. was willst du mit der 
Änderung erreichen?

Autor: Tu Tequila (tequila)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi Michael,danke für deinen antwort:-)
> Diese Funktion erwartet einen 32bit-Wert (Uint32).
Du meinst,die parameter von dieser funktion ist eine 32bit-wert-adresse?

> Vielleicht daran dass du
typedef struct ...
geändert hast!?
Ich hab nachgedacht,und vermutte mal,das liegt daran dass der poiter 
"update" nicht auf die erwartete funktion
void PWM_Update(PWMGEN_handle v)
 gezeigt,wenn es um meinen code geht.

> Warum lässt du das Ganze nicht wie es ist bzw. was willst du mit der
> Änderung erreichen?
Weil ich möchte verstehen diese originalsyntax,(bis jetzt hab ich noch 
nicht kapiert:(( ) und ich denke meine änderung würde gleiche aufgabe 
machen und würde auch funktionieren aber leider nicht,auch nicht 
verstanden wieso mein code nicht funktioniert:((

bitte bitte hilf mir!

vielen dank noch mals:-)

viele grüße aus uni hannover:-)

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Diese Funktion erwartet einen 32bit-Wert (Uint32).
> Du meinst,die parameter von dieser funktion ist eine 32bit-wert-adresse?
Siehe diese Deklaration:
void PWM_Update(PWMGEN_handle v);
Parameter ist ein PWMGEN_handle und der ist wohl 32-Bit breit. Uint32 
ist nicht ganz zutreffend, sorry!

> Weil ich möchte verstehen diese originalsyntax,(bis jetzt hab ich noch
> nicht kapiert:(( ) und ich denke meine änderung würde gleiche aufgabe
> machen und würde auch funktionieren aber leider nicht,auch nicht
> verstanden wieso mein code nicht funktioniert:((
Mit Funktionspointern hab ich's auch nicht so, aber ein C-Buch sollte 
dir da weiterhelfen können.

Autor: Tu Tequila (tequila)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab schon grad schon viele bücher nachgeguckt aber kein erfolg:(( 
keine bücher beschreiben ähnliche sachen:((

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich hab schon grad schon viele bücher nachgeguckt aber kein erfolg:((
> keine bücher beschreiben ähnliche sachen:((
Hast du es bei Google auch schon versucht?

Autor: Tu Tequila (tequila)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja mit dem syntax schon mit goggle aber nichts gefunden:(

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.