FFT Analyse

Gast #104700
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
Hallo,

gerade bei Microchip auf der Homepage ist ein Beispiel einer FFT zu
finden mit Code. Rechenzeit dauert aber je nach Auflösung bis 1
Sekunde.

Gruß
Gast
Hallo Chris
danke, die habe ich schon gesehen, die funkt aber nicht.


Hallo Esam
danke für den Link. Den Compiler muß mwan wohl kaufen, oder gibts den
wo umsonst ?

Gerhard
Gast
"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
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.