Hallo Thomas,
"Wo steht z.B., wie ich die Filter-Koeffizienten im Programm ablegen
kann, ohne dieses File, dass vom kostenpflichtigen "dsPIC Filter
Design"-Programm erstellt wird ?"
Das steht eigentlich alles im Datasheet!
Zum Ablegen der Koeffizienten stehen dir eigentlich 2 Möglichkeiten zur
Verfügung. Du definierst dir ein "fractional Array" und speicherst die
Koeffizienten darin.
a) im Data-Speicher (=RAM) ablegen:
Der dsPIC besitzt 2 RAM Bereiche, X und Y. Die MAC Einheit kann
gleichzeitig auf diese beiden Bereiche zugreifen. z.B. liegen für einen
FIR Filter die Koeffizient im Y-Bereich und die Datan im X-Bereich.
Zusätzlich werden noch die Delay-Werte für die Filterung im X-Bereich
gespeichert.
Der dsPIC holt sich gleichzeitig ein Daten-word aus dem X-Speicher und
einen Koeffizient aus dem Y-Speicher und berechnet "MAC".
b) im Programm-Speicher (=FLASH) ablegen:
Die Koeffizienten werden als Konstante so in dem FLASH abgelegt, dass
sie über den PSV Zugriff gelesen werden können -->C30 Compiler Attribut
"PSV". Durch einen PSV Zugriff wird der FLASH Speicherbereich in den
Y-Speicherbereich gespiegelt. Somit kann die MAC-Einheit darauf, wie auf
einen normalen Speicher zugreifen.
Die Daten und die Delay Werte werden weiterhin im X-Speicher abgelegt.
Aber deine Koeffizienten musst du dir schon selber berechnen z.B.
Octave, Matlab oder diverse Programme. Wenn du nur mit festen
Filterfunktionen arbeitest, dann kannst du sie einfach in wie in b)
beschrieben in den FLASH legen. Brauchst du öfters andere Koeffizienten,
dann musst du sie jedes mal z.B. per PC in den RAM laden oder neu in den
FLASH schreiben.
Stefan