Forum: Digitale Signalverarbeitung / DSP / Machine Learning FIR-Filter mit C167


von Faber (Gast)


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

von Matthias Friedrich (Gast)


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.

von Stefan Kleinwort (Gast)


Lesenswert?

Folgende Angaben wären wichtig:
  * Samplingfrequenz
  * Größe der FIR-Filter
  * Auflösung (8, 16,24 Bit?)

Wenn es für Musikfilterung (48khz Stereo) sein soll: vergiss es.

Stefan

von Faber (Gast)


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.

von Stefan Kleinwort (Gast)


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

von Michael M. (Gast)


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.

von Chris (Gast)


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ß

von Matthias (Gast)


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

von Faber (Gast)


Lesenswert?

hi
Goertzelfilter hört sich gut an - mich interessiert ein frequenzbereich
von etwa 800Hz breite...
hast du dazu evtl mehr infos bzw links? wäre klasse...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.