Mikroelektronika MIKROE-724 データシート

ページ / 726
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