mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP FIR-Filter mit C167


Autor: Faber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias Friedrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Faber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Faber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.