FFT mit 8 Bit Controller

Gast #2845770
Lesenswert?

Hallo zusammen,
bevor ich mich nun lange einlese, wollte ich vorab mal fragen, ob es 
überhaupt denkbar ist, eine FFT mit einem 8 Bit PIC12Fx Controller (also 
kein DS PIC) durchzuführen. Und wie lange würde die Berechnung etwa 
dauern?
Die auszuwertende Messreihe ist etwa 20 ms lang und ich erwarte eine 
überlagerte Frequenz von 150 Hz bis 433 Hz. Die Abtastrate, also 
Taktfrequenz ist vom PIC12Fx vorgegeben (meines Wissens bis 32 MHz).
Für eine grobe Einschätzung wäre ich sehr dankbar!
Viele Grüße
Jörg
Gast #2845925
Lesenswert?

Vielen Dank für die vielen schnellen Antworten. Nochmal zu meinen 
Rahmenbedingungen:
Bei der Frequenz habe ich mich vorhin einen Multiplikator vergessen. 
Tatsächlich variiert die Frequenz zwischen 3600 Hz und 10392 Hz 
stufenlos.
Ich gehe von mindestens 64 Messwerten aus. Besser wären wohl 128.

Am besten Zeige ich euch einfach das Signal, dass ich auswerten möchte. 
Dies ist jetzt eine besonders saubere Messung, teilweise habe ich aber 
auch sehr viel Rauschen dabei.
Angehängte Dateien:
#2846024
Lesenswert?

Hier mal ein kurzer Auszug aus dem Code der Elm Chan FFT bezüglich der 
Performance:

>> ; Points: Input, Execute, Output, Total: Throughput
>> ; 64pts: .17ms, 2.0ms, 1.2ms, 3.4ms: 19.0kpps
>> ; 128pts: .33ms, 4.6ms, 2.4ms, 7.3ms: 17.5kpps
>> ; 256pts: .66ms, 10.4ms, 4.9ms, 15.9ms: 16.1kpps
>> ; 512pts: 1.3ms, 23.2ms, 9.7ms, 34.2ms: 14.9kpps
>> ; 1024pts: 2.7ms, 51.7ms, 19.4ms, 73.7ms: 13.9kpps
Gast #2846095
Lesenswert?

Super, danke! Jetzt habe ich zumindest mal eine Hausnummer.

Steel schrieb:
> Für 10kHz sind 128 Messwerte in 20ms schon ein bischen wenig...
Da hast du Recht. Ich habe mit meinen Werten im ersten Beitrag auch 
etwas gesponnen. Sorry dafür. Genau genommen müsste es genügen immer 
einen Wellenberg zu vermessen (in der Abbildung rot bei 1ms/Div) Also 
müsste ich 6-7 ms messen. Bei 10 KHz und 7 ms käme ich auf mindestens 
140pts. 256pts wäre also wohl besser. Die Länge des Wellenbergs ist 
konstant. Die Frequenz der Oberwellen variiert und ist zu ermitteln.
Gast #2846102
Lesenswert?

.... schrieb:
> Jörg schrieb:
>> Läge die Auswertung von 128 Messpunkten eher im Millisekunden- oder
>> Sekunden-Bereich?
>
> Das schafft man im Millisekundenbereich schon.

Hat der PIC12Fx überhaupt genügend RAM und eine Multiplikationseinheit? 
Für die angestrebte Frequenz werden es statt 128 eher 512 Werte werden.
Gast #2846113
Lesenswert?

Jörg schrieb:
> Da hast du Recht. Ich habe mit meinen Werten im ersten Beitrag auch
> etwas gesponnen. Sorry dafür. Genau genommen müsste es genügen immer
> einen Wellenberg zu vermessen (in der Abbildung rot bei 1ms/Div) Also
> müsste ich 6-7 ms messen. Bei 10 KHz und 7 ms käme ich auf mindestens
> 140pts. 256pts wäre also wohl besser. Die Länge des Wellenbergs ist
> konstant. Die Frequenz der Oberwellen variiert und ist zu ermitteln.

Wie oft wirst du deine Anforderungen noch geändert?
Gast #2846151
Lesenswert?

Wie gesagt, am Anfang habe ich mich vertan. Sorry dafür. Jetzt sollte 
alles stimmen.

Ich wüsste nicht, dass der PIC12Fx eine Multiplikationseinheit hat.

Was das RAM anbetrifft hat der PIC12F1840 beispielsweise nur 256 Byte 
SRAM. Das bedeutet ja mit dem kann ich sowieso maximal 256 8-Bit 
Messwerte speichern, abzüglich der anderen benötigten Variablen. Sehe 
ich das richtig?
Ihr merkt sicher schon, dass ich noch Anfänger im Bereich bin, als 
verzeiht mir meine Unwissenheit...
#2846161
Lesenswert?

Das wird mit der Menge an RAM wohl nichts werden fürchte ich.
Ist schon eine Weile her, dass ich mich damit beschäftigt habe, aber 
wenn mich nicht alles täuscht brauchst du 4 mal so viel RAM wie du 
Samples hast (und dann hat der µC noch nichts anderes gemacht, keinen 
Stack, etc.).
Gast #2846805
Lesenswert?

Ein FFT mit einem PIC12F geht nicht.  Dafür hat Microchip viel bessere 
uCs.

Nehm ein 24er oder gleich ein dsPIC33f mit den FFT bibliotek und gut 
ist.  Mann wurde auch nicht an einem Formel 1 Rennen mit einem alten VW 
Käfer teilnehmen.  :-)

MfG
PICfan

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