IIR Filter Library
mikroBasic PRO for PIC32 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 |
sub function IIR_Radix(dim const BScale as integer, dim const AScale as integer, dim ptrB as ^const integer, dim ptrA as ^const integer, dim FilterOrder as word, dim ptrInput as ^integer, dim InputLength as word, dim ptrOutput as ^integer, dim Index as word) as integer |
|---|---|
| Description |
This function applies IIR filter to |
| Parameters |
|
| Returns |
Function returns value of the
|
| Requires |
Nothing. |
| Example |
' Filter setup:
' Filter kind: IIR
' Filter type: Lowpass filter
' Filter order: 2
' Design method: Butterworth
program IIR
const FILTER_ORDER as word = 2
COEFF_B as integer[FILTER_ORDER+1] = (0x344D, 0x689A, 0x344D)
COEFF_A as integer[FILTER_ORDER+1] = (0x4000, integer(0xA003), 0x2687)
SCALE_B as integer = 4
SCALE_A as integer = -1
dim
inputSamples as integer[3]
outputSamples as integer[10]
i as word
sub procedure Init()
inputSamples[0] = 0x4000
inputSamples[1] = 0x2000
inputSamples[2] = 0x1000
end sub
main:
Init()
for i = 0 to 9
outputSamples[i] = IIR_Radix(SCALE_B, SCALE_A, @COEFF_B, @COEFF_A, FILTER_ORDER+1, @inputSamples, 3, @outputSamples, i)
next i
asm nop end asm
' outputSamples[0] = 1/(2^SCALE_B)*COEFF_B[0]*inputSamples[0]
' outputSamples[1] = 1/(2^SCALE_B) * (COEFF_B[0]*inputSamples[1] + COEFF_B[1]*inputSamples[0]) - 1/(2^SCALE_A)*(COEFF_A*outputSamples[0])
end.
|
| Notes |
None. |
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!




