Hallo, ich habe gerade ein paar Startschwierigkeiten beim Versuch einen dsPIC zu benutzen. Die Inbetriebnahme war zwar erfolgreich aber nun klemmt es beim Einbinden der entsprechenden Libary. Ich bin schnell auf diese Seite gestoßen: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023598 Unter getting startet stehen 4 Punkte, mit denen ich eigentlich allen ein Problem habe: -Read the summary section of this web page Sind damit nur die 3 Zeilen am Anfang der Seite gemeint? -Read the HTML Help files in the MPLAB C30 compiler release. Wo finde ich denn diese HTML Help files? -The DSP library file “libdsp.a” should be located in your C30 language tools “lib” folder. In diesem Ordner ist nur eine libdsp-coff.a. Irgendwo habe ich gelesen, dass die jetzt so heißen muss, also ist dieser Punkt eigentlich geklärt. -The DSP library header file “dsp.h” should be located in your C30 language tools “include” folder. Im "include" Ordner ist keine Datei, die so oder ähnlich heißt. Das ist aktuell mein größtes Problem. Muss ich die Datei downloaden? Für ein wenig Klarheit wäre ich sehr dankbar. Interessant wären auch gute Tutorials und Beispielprojekte zu dem Thema.
PIC32 DSP und C30 Compiler passt irgendwie nicht. Aber es geht offensichtlich um den C30.... Für den C30 Compiler (der übrigens seit fast 2 Jahren nicht mehr updated wird) findet sich die Dateie (zumindest bei meiner Installation) in ..../support/generic/h/dsp.h
Chris B. schrieb: > PIC32 DSP und C30 Compiler passt irgendwie nicht. Das macht nichts, es passt auch der Titel nicht zum Inhalt :)
Verdammt, ich meinte im Titel natürlich einen PIC33 bzw. einen dsPIC33FJ32...! Sorry, gestern war nicht mein Tag... -.- Sollte ich dann besser den XC Compiler benutzen? Ist bestehender Code denn vom C30 Compiler auf den XC 16 portierbar oder ändern sich dort wieder alle Bezeichnungen?
Habe ich selbst noch nicht probiert, aber guck mal im MICROCHIP Forum u.ä. http://www.google.at/#q=MICROCHIP+C30++XC16
Martin schrieb: > Sollte ich dann besser den XC Compiler benutzen? Ist bestehender Code > denn vom C30 Compiler auf den XC 16 portierbar oder ändern sich dort > wieder alle Bezeichnungen? Sowohl der C30 als auch der XC16 sind der gcc. XC16 ist nur die neuere Version. MPLABX bietet einem auch den C30 an, so man ihn installiert hat. Die Registernamen sind nicht im Compiler, sondern in einigen hundert Headerfiles. Die ändert keiner ohne Not. MfG Klaus
Also ich verwende nun vorerst MPLAB x mit dem C30 Compiler weil ich das so schon installiert habe und es soweit läuft. Leider fällt es mir aber noch sehr schwer, Infos zu finden, wie ich denn nun praktisch in C mit dem DSP umgehe. Bisher habe ich nicht viel gemacht: dsp.h in Header files eingebunden und includet, libdsp-coff.a in Libaries eingebunden (muss ich hier auch etwas includen?), Prototypen in dsp.h angesehen und 2 Funktionen gefunden, die in Frage kommen:
1 | extern long* FFTReal32bIP( |
2 | int log2N, |
3 | int N, |
4 | long *ipBuff, |
5 | long *tfBuf, |
6 | int factPage |
7 | );
|
und
1 | extern void realFft32bIP( |
2 | int log2N, |
3 | long *ipBuff, |
4 | long *tfBuff, |
5 | int factPage |
6 | );
|
Was gibt die erste Funktion zurück? Und was muss ich hierfür übergeben: long *ipBuff, long *tfBuff und int factPage? Einer der Pointer muss wohl auf mein Array aus Messwerten Zeigen. Aber welcher und wozu ist der Andere? Wo ist das ganze überhaupt dokumentiert? Außerdem habe ich noch eine Frage: Wie definiere ich, in welchem Speicherbereich die Variable liegen sollen (X oder Y)? Oder macht der Compiler das in C automatisch richtig? Ihr merkt, dass ich noch ganz am Anfang stehe und es an allen Ecken hakt. Ich bin schon auf dutzende Dokumente gestoßen, die aber teilweise so mit Abkürzungen gespickt sind, dass ich sie einfach nicht verstehe. Wenn mir jemand konkret sagen könnte, welche Dokumente ich als Anfänger erstmal lesen muss, wäre ich sehr dankbar. Noch besser wäre ein geeignetes Tutorial in C. Erklärungen in Assembler, wie sie in den Unterlagen von Microckip sind, helfen mir meistens nur bedingt weiter.
Ich weiß, dass meine Fragen zum Teil sicher etwas dämlich sind, aber kann sich nicht trotzdem jemand erbarmen, mir ein paar Tips zu geben. So wie ich es jetzt verstehe, kann ich die Grundrechenoperationen nur in Assembler programmieren. Aber Für die FFT gibt es ja extra die Libary und ich will ja eigentlich nur wissen, wie ich eine dieser Funktionen benutzen kann.
Hallo Martin, ich kann dir leider auch nicht direkt helfen. Aber wenn Du den C30 installiert hast, gibt es dort einen Ordner examples/dsPIC30F. Hier sind auch mehrere Beispiele für die Anwendung des DSP. Sind zwar nur für den dsPIC30F, das Grundprinzip sollte beim dsPIC33 allerdings nicht viel anders sein. Außerdem sind im Ordner docs/dsp_lib alle DSP Funktionen mit kleinen Beispielen beschrieben.
Ja und die Beschreibung der Funktionen sollte über die Help-Funktion zugänglich sein. Geht aber auch direkt. z.B. findest du die Beschreibung von <FFTReal32bIP> hier:...../mplabc30/V3.31/docs/dsp_lib/DSP Library.htm Dort geht es weiter mit "DSP Transform function" -->> 4.7 FFTReal32bIP. ......in welchem Speicherbereich die Variable liegen sollen (X oder Y)?.... Sorry, ich kenne mich mir DSP nicht aus!, aber wenn die Messwerte aus einer AD-Wandlung entstehen, dann wird das unter den ADC-Einstellungen zu finden sein bzw. wenn der ADC via DMA "bedient" wird, muss die DMA ensprechend konfiguriert werden
Steffen N. schrieb: > Aber wenn Du den C30 > installiert hast, gibt es dort einen Ordner examples/dsPIC30F. Chris B. schrieb: > Ja und die Beschreibung der Funktionen sollte über die Help-Funktion > zugänglich sein. > Geht aber auch direkt. z.B. findest du die Beschreibung von > <FFTReal32bIP> > hier:...../mplabc30/V3.31/docs/dsp_lib/DSP Library.htm > Dort geht es weiter mit "DSP Transform function" -->> 4.7 FFTReal32bIP. Das ist beides interessant. Werde ich mir mal zu Gemüte führen :) Chris B. schrieb: > Sorry, ich kenne mich mir DSP nicht aus!, aber wenn die Messwerte aus > einer AD-Wandlung entstehen, dann wird das unter den ADC-Einstellungen > zu finden sein bzw. wenn der ADC via DMA "bedient" wird, muss die DMA > ensprechend konfiguriert werden Die Werte ziehe ich mir auf die altmodische Art einzeln aus dem ADC Buffer und speichere sie in einem Array. Die Frage wäre also, wie ich das Array deklarieren muss. Aber jetzt lese ich mal noch ein bisschen, vielleicht bin ich dann schlauer. Vielen Dank!
Hallo nochmal, inzwischen habe ich mir ein Codebeispiel, die Hilfe und einiges mehr angesehen und mir so etwas mehr Klarheit verschafft. Zum Beispiel weiß ich nun, dass ich das Array mit _attribute_ im Y-Bereich anlegen muss. Trotzdem herrscht auch noch viel Verwirrung. Mein Problem ist gerade, dass nach meiner Ansicht die Informationen aus der Hilfe nicht zur dsp.h passen: Aus der Header würde ich mir diese Funktion herauspicken. Die habe ich ja schon mal geschickt. Eine FFT mit realen, 32 Bit Werten, die "in place" arbeitet, also die Eingangswerte überschreibt. Unklar ist mir immer noch, was hier genau zurück gegeben wird und was ich für tfBuf und factPage üebrgeben muss.
1 | extern long* FFTReal32bIP( |
2 | int log2N, |
3 | int N, |
4 | long *ipBuff, |
5 | long *tfBuf, |
6 | int factPage |
7 | );
|
Also habe ich mir die Hife angesehen, in der die Funktionen etwas ausfühlicher erläutert werden. Das hat nun aber leider zur endgültigen Verwirrung geführt. Erstens werden hier plötzlich andere Werte übergeben und zweitens ist auch der Name der Funktion anders. In der Überschrift heißt sie auch FFTReal32bIP, im Code-Beispiel ist das "IP" dann aber plötzlich verschwunden. Das ist doch zum verrückt werden! :(
1 | extern long* FFTReal32b ( |
2 | int log2N - 1, |
3 | int N, |
4 | long* srcCV, |
5 | long* twidFactors, |
6 | int factPage |
7 | );
|
Für etwas Klarheit wäre ich mal wieder ausgesprochen dankbar!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.