Mikroelektronika MIKROE-724 データシート
638
mikoBasic PRO for dsPIC30/33 and PIC24
MikroElektronika
IIR_Radix
Prototype
sub function IIR_Radix(dim BScale, AScale as integer, dim ptrB, ptrA,
FilterOrder, ptrInput, InputLen, ptrOutput, Index as word) as word
Description This function applies IIR filter to
ptrInput
.
Parameters -
BScale:
B scale factor.
-
AScale:
A scale factor.
-
ptrB:
pointer to B coefficients (in program memory).
-
ptrA:
pointer to A coefficients (in program memory).
-
FilterOrder:
order of the filter + 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 BUFFER_SIZE = 8
const FILTER_ORDER = 6
const COEFF_B as word[FILTER_ORDER+1] = (0x0548, 0x1FAE, 0x4F34, 0x699B,
0x4F34, 0x1FAE, 0x0548)
const COEFF_A as word[FILTER_ORDER+1] = (0x4000, 0xB3FE, 0x5389, 0xD4D8,
0x10DD, 0xFCB0, 0x0052)
const SCALE_B = 2
const SCALE_A = -1
dim inext as word ‘ Input buffer index
input as word[BUFFER_SIZE] ydata ‘ Input buffer
output as word[BUFFER_SIZE] ydata ‘ Output buffer
...
dim CurrentValue as 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.
IIR Filter Library
mikroBasic 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