FFT Analyse

Gast #104700
Lesenswert?

Hallo

ich versuche eine FFT-Anaylse mit einem Microcontroller (PIC) zu
realisieren. Aufgabe: AD-Wandler digitalisiert ein Signal, das dann
analysiert werden soll (Frequenzen). Ich habe schon einiges dazu
gelesen, auch im Internet, aber ich verstehe immer noch Bahnhof. Wer
hat schon mal ne FFt programmiert ( in C oder Assembler) ? Wer hat ne
gute verständliche Anleitung oder ien Beispielprogram ?

Gruß
Gerhard
Gast #104704
Lesenswert?

"die funkt aber nicht."

Hallo,

mich würde mal interessieren, was an dem Microchip-Beispiel falsch ist,
da ich mich mit solchen Beispielen mal befassen wollte und nicht
unnötig Zeit mit einem fehlerhaften Beispiel verbringen möchte.

Gruß
Gast #104705
Lesenswert?

Hallo Chris

http://www.piclist.com/techref/microchip/fft/picspect.htm

ich weiß es nicht, ich verlasse mich hier auf das, was unter dem Link
steht.

Wenn Du den Link liest, findest Du ein Projekt zu einer FFT. Hab ich
auch gelesen. Aber nix verstanden. Ich suche was für Dummies. Ich hab
zwar schon mal was von Fourier gehört, aber alle Beispiele die ich
bisher gefunden habe verlassen sich darauf, daß die Leute schon
Spezialisten sind. Schaus mal an, vielleicht kannst Du mir sagen was
das Prog macht: z.B. wo hinterher das Ergebnis steht.


Gehrhard
Gast #104706
Lesenswert?

Hallo,

na ja, also die FFT wird im Unterprogramm "Real FTT" ausgerechnet.
Der C-Code wurde dann wohl compiliert und der daraus entstandene
Assembler ist etwas abstrakt. Ausgabe erfolgt in Data[1] und Data[2]
vermute ich mal. Letztendlich produziert das Programm eine grafische
Ausgabe auf einem VGA-Display. Schaltbild fehlt, oder?

Gruß

"Algorithm from "Numerical recipes in C", manually compiled in
assembler
; and adapted...
;
; Calculate FFT of a set of 256 real values stored in data[0..511]
; (2 bytes per value, MSB first).
;
; Replace these data by the positive frequency half of the FFT
; (128 frequencies, complex values). First and last frequencies (which
are
; real) are in data[1] and data[2] respectively."

" This project is a complete audio spectrum analyser with output on a
; standard VGA display, done entirely with a PIC17C756 microcontroler"
Gast #104707
Lesenswert?

In diesem beispiel, aber auch in so manchen anderen, vermisse ich eine
Doku, was das Programm macht, und wo die Ergebnisse stehen. das gilt
auch für dieses Beispiel. Eine FFT-Analyse liefert doch ne Menge
Informationen: Frequenz1+zugehörige Größe, Frequen2+zugehörige Größe...
Wo steht das ? Ich kapiers nicht.


Gerhard
Gast #104708
Lesenswert?

Hallo,

stimmt schon, was Du bemängelst, geht mir nicht anders. Was denn genau
in data[1] und data[2] steht, habe ich auf die Schnelle auch nicht
heraus gefunden. Die Erklärung müßte bei der C-Quelle zu finden sein,
die da angegeben ist:
"Algorithm from "Numerical recipes in C"
Die gibt's irgendwo im Internet zum Download, sind aber auf Englisch
und wie immer nicht einfach zu verstehen, da es eine mathematische
Abhandlung ist mit Umsetzung in C-Code. Meistens sind das weiter
entwickelte Algorithmen, die Rechenzeit sparen gegenüber dem Standard.

Gruß
Gast #104709
Lesenswert?

Betreff obigem Link,

Ne, kaufen musste da nix, ist alles in der demo dabei (v.a.D
C-Quellcodes).

Kannste sogar laufen lassen, da die FFT nur ein paar kB belegt, Demo
geht aber bis 8k. Du brauchst lediglich 'ne 8051 mit etwas externem
RAM... Ist aber nicht besonder Echtzeitfaehig.

Esam
Gast #104712
Lesenswert?

Hallo Gerhard!

Schau Dir den Quelltext in Ruhe an, es ist alles genau erklärt:

http://www.piclist.com/techref/microchip/fft/picspect.htm

<i>;==================================================================== 
========
; PROJECT     : PIC'SPECTRUM
;
; FILE        : FFT.INC
;
; VERSION     : 1.0
;
; DESCRIPTION :
;
; 256 points FFT routines, using s/2/13 format for numeric
computations
; (through the fixed.inc library). All data are stored in the internal
; registers of the 17C756 (array DATA).
;
; Execution time on a PIC17C756/32MHz : around 50ms without concurrent
; video generation (resulting in a 90-100ms refresh time with spectrum
; power calculation, analog acquisition and video refresh)
;
;======================================================================= 
=====
;                Developped & Copyrighted by Robert LACOSTE
;======================================================================= 
=====

;----------------------------------------------------------------------- 
-----
; Complex FFT, radix-1, decimation in place, 128 points
;
; Algorithm from "Numerical recipes in C", manually compiled in
assembler
; and adapted...
;
; <b>Input : 128 complex values (each on 4 bytes), stored in
data[0..511]
;         For each data : byte 0 = MSB of real part
;                         byte 1 = LSB of real part
;                         byte 2 = MSB of complex part
;                         byte 3 = LSB of complex part
;
; Replace data[0..511] by its FFT (128 frequencies, complex
values)</b>
;----------------------------------------------------------------------- 
-----</i>

und:

<i>;-------------------------------------------------------------------- 
--------
; Real FFT
;
; Algorithm from "Numerical recipes in C", manually compiled in
assembler
; and adapted...
;
; <b>Calculate FFT of a set of 256 real values stored in data[0..511]
; (2 bytes per value, MSB first).
;
; Replace these data by the positive frequency half of the FFT
; (128 frequencies, complex values). First and last frequencies (which
are
; real) are in data[1] and data[2] respectively.</b></i>

Gruß
Uwe

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