mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik dsPIC DAC/FFT Fragen


Autor: Barnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

für eine portable Anwendung brauche ich einen sparsamen µC mit DSP 
Architektur.
Ich habe da an einen dsPIC gedacht.

Nun fällt mir auf, dass kaum ein dsPIC einen DAC besitzt.
Ist das Normal ?

Ich muss eine FFT machen und weil es dafür bereits von Microchip 
Libraries gibt, habe ich an den dsPIC gedacht.

Eine allgemeine Frage noch:

Kann ich mit dem dsPIC (dsPIC33FJ128GP804), der einen DAC hat, 
Frequenzen im mHz Bereich erzeugen ? Mit einem DDS IC würde das 
natürlich gehen.
Aber es sollte auch mit dem dsPIC gehen, oder ?

Ich würde im Betrieb die Sampling Frequenz ändern und damit die 
Ausgangsfrequenz anpassen. Kann ich das über ca. 6 Dekaden machen (10mHz 
- 10kHz) oder geht das nicht so einfach, wie ich mir das denke ?

Ich bin noch neu auf dem Gebiet dsPIC und muss mir erstmal einen 
Überblick verschaffen.

Danke für die Antworten !

MfG

Autor: Gerd Gerd (gege)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Barnes,

falls Du mit dem DAC Audio-Frequenzen erzeugen willst: nimm einen 
Audio-Codec, da sind Filter etc. gleich mit bei und das klingt sehr gut. 
Bei Microchip findest Du Sourcen und Schaltungen dazu.

Gruß

Gerd.

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Barnes

was verstehst du unter sparsam ? Ich habe mit den dsPIC33 noch nicht 
gearbeitet, nur mit dem dsPIC30. Die brauchen bei 8MIPS schon so 40mA. 
Die dsPIC33 sollen sparsamer sein, musst du aber im Datenblatt 
nachlesen.
Zu deinem dsPIC33: gibts den schon ? Bei Microchip hat der den Status 
"future product" (wenn ich mich nicht in der Zeile geirrt habe.)

Du kannst aber auch einen externen DAC verwenden, z.B. einen seriellen 
DAC mit SPI-Schnittstelle. Um damit aber einen 10kHz-Signal, evtl sogar 
als Sinus zu produzzieren musst du mindestens die 10fache 
Geschwindigkeit rechnen. Ob du da nicht mit einem kompletten Baustein a 
la XR2206 oä. bzw DDS besser dran bist ?

Gerhard

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerhard wrote:

> Zu deinem dsPIC33: gibts den schon ? Bei Microchip hat der den Status
> "future product" (wenn ich mich nicht in der Zeile geirrt habe.)

Ja, den gibts schon lange.

Barnes wrote:

> Kann ich mit dem dsPIC (dsPIC33FJ128GP804), der einen DAC hat,
> Frequenzen im mHz Bereich erzeugen ? Mit einem DDS IC würde das
> natürlich gehen.
> Aber es sollte auch mit dem dsPIC gehen, oder ?

Ja, geht wunderbar.

> Ich würde im Betrieb die Sampling Frequenz ändern und damit die
> Ausgangsfrequenz anpassen. Kann ich das über ca. 6 Dekaden machen (10mHz
> - 10kHz) oder geht das nicht so einfach, wie ich mir das denke ?

Ja, aber du scheinst DDS nicht ganz verstanden zu haben. Bei DDS ist die 
Samplerate konstant. Bei 6 Dekaden würde ich einen 24 oder gleich 32bit 
Accumulator verwenden, das ergibt bei 96kHz Samplerate etwa 0,02mHz 
Auflösung.

> Ich bin noch neu auf dem Gebiet dsPIC und muss mir erstmal einen
> Überblick verschaffen.

Dann wünsche ich viel Spaß. Du wirst dich mit Sicherheit mehr als einmal 
über die dsPICs und die vielen Ungenauigkeiten im Datenblatt, den Bugs 
in der Software und noch vieles mehr aufregen. Ich konnte mich 
zumindeste mit den dsPICs nicht anfreunden, da vieles einfach nicht so 
lief wie es laut Datenblatt sollte.

Autor: Barnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für eure Beiträge.

Stimmt, das ist ein Future Product.

Aber ich kann schon die Sampling Frequenz vom DAC über einen Bereich von 
6 Dekaden einstellen oder ?
Das ist sehr wichtig.

Ich will mit dem DAC ein Sinusgemisch erzeugen. Dafür bräuchte ich
mehrere DDS und einen Summierer.
So hätte ich die Stützwerte schon digital und könnte einen nach dem 
anderen umsetzen.


MfG

Autor: Barnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Benedikt,

ich hab mit Sicherheit die DDS-Technik verstanden.
Damit habe ich mich eine Zeit lang befasst.
Die Sampling Rate ist natülich konstant (Masterclock).

Ich habe mich vielleicht oben etwas missverständlich ausgedrückt.

MfG

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Barnes wrote:

> Aber ich kann schon die Sampling Frequenz vom DAC über einen Bereich von
> 6 Dekaden einstellen oder ?
> Das ist sehr wichtig.

Ist das wirklich notwendig ? Oder reicht es nicht aus, den DAC mit einer 
festen Frequenz laufen zu lassen, und alleine per DDS die Frequenz 
einzustellen ?
Die meisten Audiocodecs die ich kenne, können meist nur 5kS/s bis 
200kS/s. Das sind gerade mal 2-3 Dekaden. Ein normaler DAC würde zwar 
auch gehen, aber der braucht dann je nach Samplerate ein umschaltbares 
Antialiasing Filter. Von daher wäre eine feste Samplerate die beste 
Lösung, und dank DDS sollte ein Bereich über viele Dekaden kein Problem 
sein.

Autor: Thornton (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also vielleicht drücke ich mich hier unverständlich aus.

Ein DDS-Ic ist erstmal außen vor.

Ich will ein f-Gemisch mit Frequenzen zwischen 10mHz und 10kHz erzeugen.

Da ich die Summation nicht analog mit mehreren DDS ausschließe, da es 
sehr unflexibel ist, würde ich die Addition digital erledigen.

Die erhaltenen Worte (20) will ich mit einem DAC umsetzen.

Es soll immer dasselbe Signal nur mit unterscheidlichen Frequenze 
erzeugt werden ! Also zuerst 10mHz, dann 100mHz, ..., 10kHz.
Die Ausgangsfrequenz hängt natürlich voll von der Samplerate ab: 
fOUT=fSAMPLE/(20).

Man könnte natürlich bei gleicher Samplerate die Anzahl der 
Punkte/Periode erhöhen. Das wäre auch eine Lösung. Bei kleinen 
Frequenzen würde dann aber die Worte nicht in das RAM passen.

Beispiel: fSAMPLE=100kHz -> fOUT=10kHz für 10 Worte/Periode
          fSAMPLE=100kHz -> fOUT=10mHz für 10 000 000 Worte/Periode

Da sieht man schon, dass 10^7 Worte für eine Frequenz von 10mHz 
gebraucht werden bei einer konstanten Samplerate.

Deswegen würde ich gerne bei kleinen f die Samplerate mit erniedrigen.

MfG

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thornton wrote:

> Beispiel: fSAMPLE=100kHz -> fOUT=10kHz für 10 Worte/Periode
>           fSAMPLE=100kHz -> fOUT=10mHz für 10 000 000 Worte/Periode
>
> Da sieht man schon, dass 10^7 Worte für eine Frequenz von 10mHz
> gebraucht werden bei einer konstanten Samplerate.

Es zwingt dich ja keiner eine 10^7 Word große Tabelle zu nehmen. Dies 
ist total unnötig, denn bei 16bit Auflösung der Amplitude stehen in der 
Tabelle dann mehrmals die gleichen Werte nebeneinander.
Es würde also eine Tabelle mit 16bit reichen. Die hätte dann 128kByte. 
Die sollte in den Flash eines dsPICs passen.
Als nächstes nimmst du einen 32bit großen Accumulator für die DDS und 
dessen 16bit MSBB als Pointer für das 16bit große Array im Flash.

Autor: Barnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

gibt es eigentlich DDS-ICs, deren Look-Up Table man programmieren kann ?

Ich habe in Verbindung mit DDS bisher nur von ROM-Speichern gehört.

MfG

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, wenn man das ganze im FPGA nachbaut z.B.

Rick

Autor: Barnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


Also nochmal.

Ich bräuchte Samplingraten zwischen 320mHz und 32kHz.
Das sind 5 Dekaden.

Kann man die DA Umsetzung nicht per Timer steuern ?
Mit einem Timer kann ich sicherlich diesen Bereich abdecken.

Beim MSP430 geht das.

Müsste dann doch auch bei einem dsPIC gehen, oder ?

MfG

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo barnes

für eine genaue Angabe musst du selber im Datenblatt nachschauen. Die 
dsPIC30 mit nem 12Bit-ADC schaffen 50kHz Samplerate, die 10-bitter 
schaffen um einiges mehr. Ich nehem jetzt mal an, dass der dsPIC33 nicht 
schlechter ist. An Timern dürfte es nicht mangeln. Den ADC kannst du 
auch vom Timer-int starten.

Dein Begriff "Samplerate" macht mich etwas irr. Sprichst du von einer 
AD-Wandlung oder von einer DA-Wandlung ? Den internen DAC des 804 kannst 
du sicher auch über einen Timer steuern. Ist der 804 überhaupt noch 
aktuell für dich, da es den doch noch gar nicht gibt ?!

Gerhard

Autor: Barnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja, von Samplerate spricht man sowohl bei DA- als auch bei AD-Wandlern.

Ich finde es manchmal auch verwirrend.

Wenn es timergetriggert gemacht werden kann, dann bin ich zufrieden.

Danke.

MfG

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Barnes

auch für detaillierte Infos kannst du dich an das Microchip-Forum 
wenden, besonders, da die dsPIC33 doch noch verhältnismässig neu sind.

http://forum.microchip.com

Ist zwar englishsprachig, die Moderatoren dürften aber grossteils 
Mitarbeiter von Microchip sein.

Gerhard

Autor: Barnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke Gerhard !

Und auch an alle anderen.

MfG

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.