IIR Filter Library
mikroPascal PRO for dsPIC30/33 and PIC24 includes a library for Infinite Impulse Response (IIR) filter. All routines work with fractional Q15 format.
A infinite impulse response (IIR) filter is a type of a digital filter, whose impulse response (the filter's response to a delta function) is non-zero over an infinite length of time.
Library Routines
IIR_Radix
Prototype |
function IIR_Radix(BScale: integer; AScale: integer; ptrB: word; ptrA: word; FilterOrder: word; ptrInput: word; InputLen: word; ptrOutput: word; Index: word) : word; |
---|---|
Description |
This function applies IIR filter to |
Parameters |
|
Returns |
|
Requires |
Nothing. |
Example |
const BUFFER_SIZE = 8; const FILTER_ORDER = 6; const COEFF_B: array[FILTER_ORDER+1] of word = (0x0548, 0x1FAE, 0x4F34, 0x699B, 0x4F34, 0x1FAE, 0x0548); const COEFF_A: array[FILTER_ORDER+1] of word = (0x4000, 0xB3FE, 0x5389, 0xD4D8, 0x10DD, 0xFCB0, 0x0052); const SCALE_B = 2; const SCALE_A = -1; var inext : word; // Input buffer index input : array[BUFFER_SIZE] of word; ydata; // Input buffer output : array[BUFFER_SIZE] of word; ydata; // Output buffer ... var CurrentValue : word; CurrentValue := IIR_Radix(SCALE_B, SCALE_A, word(@COEFF_B), // b coefficients of the filter word(@COEFF_A), // a coefficients of the filter FILTER_ORDER+1, // Filter order + 1 word(@input), // Input buffer BUFFER_SIZE, // Input buffer length word(@output), // Input buffer inext); // Current sample |
Notes |
Input and output samples must be in Y data space. |
Copyright (c) 2002-2012 mikroElektronika. All rights reserved.
What do you think about this topic ? Send us feedback!
What do you think about this topic ? Send us feedback!