User manual

mikroC PRO for dsPIC
MikroElektronika
671
IIR_Radix
Prototype
unsigned IIR_Radix (const int BScale, const int AScale, const signed *ptrB,
const signed *ptrA, unsigned FilterOrder, unsigned *ptrInput, unsigned
InputLen, unsigned *ptrOutput, unsigned Index);
Description This function applies IIR lter to ptrInput.
Parameters - BScale: B scale factor.
- AScale: A scale factor.
- ptrB: pointer to B coefcients (in program memory).
- ptrA: pointer to A coefcients (in program memory).
- FilterOrder: order of the lter + 1.
- ptrInput: address of input samples.
- InputLen: number of samples.
- ptrOutput: pointer to output samples. Output length is equal to Input length.
- Index: index of current sample.
Returns
Requires Nothing.
Example
const unsigned int BUFFER_SIZE = 8;
const unsigned int FILTER_ORDER = 6;
const signed int COEFF_B[FILTER_ORDER+1] = {0x0548, 0x1FAE, 0x4F34, 0x699B,
0x4F34, 0x1FAE, 0x0548};
const signed int COEFF_A[FILTER_ORDER+1] = {0x4000, 0xB3FE, 0x5389, 0xD4D8,
0x10DD, 0xFCB0, 0x0052};
const unsigned int SCALE_B = 2;
const unsigned int SCALE_A = -1;
unsigned int inext; // Input buffer index
ydata unsigned int input[BUFFER_SIZE]; // Input buffer
ydata unsigned int output[BUFFER_SIZE]; // Output buffer
...
unsigned int CurrentValue;
CurrentValue = IIR_Radix(SCALE_B,
SCALE_A,
COEFF_B, // b coefcients of the lter
COEFF_A, // a coefcients of the lter
FILTER_ORDER+1, // Filter order + 1
input, // Input buffer
BUFFER_SIZE, // Input buffer length
output, // Input buffer
inext); // Current sample
Notes Input and output samples must be in Y data space.
IIR Filter Library
mikroC PRO for dsPIC30/33 and PIC24 includes a library for Innite Impulse Response (IIR) lter. All routines work
with fractional Q15 format.
A innite impulse response (IIR) lter is a type of a digital lter, whose impulse response (the lter’s response to a delta
function) is non-zero over an innite length of time.
Library Routines
IIR_Radix