FIR-Filter mit C167

Gast #203799
Lesenswert?

Hallo
weiß jemand ob und wie sich ein FIR-Bandpaß mit einem 80C167 aufbauen
lässt? bin in dem bereich mikrocontroller und digitalfilter leider ein
newbie.
am liebsten würde ich in c programmieren, aber habe schon gehört, dass
man digitalfilter aus effiziensgründen nur in assembler schreiben
sollte.
wenn möglich würde ich gerne aus anderen gründen keinen DSP verwenden
wollen, sondern eben den C167.
bin über jede info dankbar - gerne auch weiterführende links
vielen dank - faber
Gast #203800
Lesenswert?

http://www-users.cs.york.ac.uk/~fisher/mkfilter/

Damit lässt sich direkt C-Code für verschiedene Filter erzeugen.
Funktioniert sehr gut. Ich verwende ein Tiefpass 4.Ordnung auf 4
Kanälen auf einem 8051, allerdings bei nicht allzu hoher
samplingfrequenz.
Ich denke, der c167 sollte da keine Probleme haben, je nach Auslegung
des Filters. Falls es dennoch nicht reichen sollte, würde ich als
erstes statt float- integer-arithmetik benutzten.
Gast #203802
Lesenswert?

Vielen Dank Herr Friedrich - ich werde mich auf der Homepage mal
umsehen.


Herr Kleinwort: Da bin ich mir noch nicht sicher, da ich zunächst eine
Messung an einem Objekt vornehmen muß, um exakte Daten zu erhalten.
Ich muß einen Frequenzbereich von ca. 800Hz zwischen dem Spektrum von
5kHz-7kHz herausfiltern. Also brauche ich je nachdem mindestens
ungefähr 14kHz Samplingfrequenz?!
Größe des Filters=Ordnungszahl??? Dazu kann ich auch noch keine Aussage
machen.
Gast #203803
Lesenswert?

Die Samplingfrequenz fs richtet sich nach dem Spektrum. Überhalb der
halben fs dürfen keine Signalanteile mehr vorhanden sein, oder sie
müssen entsprechend herausgefiltert werden. Audio-AD-Wandler benutzen
deshalb Oversampling-Techniken, die das ganze sehr entschärfen. Mit
einem "normalen" AD-Wandler wirst Du aber bei 14khz Sampling und 7khz
Signal Probleme bekommen.

Einfacher ist die Verwendung einer höheren fs, was aber leider einen
wesentlich höheren Rechenaufwand für die CPU bedeutet.

Auf einem C167 wird das sicher nicht einfach bis unmöglich. Für einen
DSP dagegen ein Klacks ... Vorteil der DSPs übrigens auch: die
Wandlerschnittstellen sind bereits vorhanden.

Vor der FIR-Filterroutine in Assembler solltest Du übrigens keine Angst
haben, auf einem DSP ist das ein(!) Befehl ...

Viele Grüße, Stefan
Gast #203804
Lesenswert?

Möglicherweise interessiert Dich nur das Vorhandensein eines bestimmten
Frequenzanteils. Dann gibts z.B. Goertzelfilter, die das weniger
Rechenzeitkritisch machen. Oder wenn allgemein Echtzeitnah reicht,
erstmal die Samples in ein Speicher sammeln und n paar ms später damit
"offline" rumrechnen.
Gast #203805
Lesenswert?

Hallo,

bei der Gelegenheit möchte ich zu dem durch "mkfilter" automatisch
generierten C-Code noch etwas fragen:
C-Code ist doch in der Regel nicht für alle Mikrocontroller exakt
gleich. Heißt das, man nimmt den automatisch generierten C-Code als
Ausgangspunkt und passt ihn so an, daß er vom jeweils verwendeten
Compiler korrekt verstanden wird?
Bin in C noch am Anfang.

Gruß
Gast #203806
Lesenswert?

Hi

idealerweise unterscheiden sich solche algorithmischen Dinge überhaupt
nicht von µC zu µC und von Compiler zu Compiler. Bei reiner Rechnerei
(mehr ist so ein dig. Filter ja nicht) sollte es eigentlich keine
Unterschiede geben.

Matthias

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