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
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.
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
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.
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
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.
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ß
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.