You are on page 1of 9

DIGITAL FILTER IMPLEMENTATION

CODE FOR FIR


/* ========================================
*
* Copyright YOUR COMPANY, THE YEAR
* All Rights Reserved
* UNPUBLISHED, LICENSED SOFTWARE.
*
* CONFIDENTIAL AND PROPRIETARY INFORMATION
* WHICH IS THE PROPERTY OF your company.
*
* ========================================
*/
#include "project.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"

volatile uint8 n;
volatile int set=1,flag=1,m;
volatile char a='5';
volatile int b[11]={0,0,0,0,0,0,0,0,0,0,0},
b1[11]={127,245,345,450,521,553,537,474,385,269,179},
b2[11]={224,551,831,973,883,605,260,-18,-133,-115,36},
b3[11]={438,1365,1818,1115,-86,-563,-189,170,107,-69,2};

CY_ISR(UARTISR)
{
if (flag==1)
flag=0;
a=UART1_GetChar();
switch(a)
{
case '\0': break;
case 'q' : for(m=0;m<=10;m++)
b[m]=b1[m];
UART1_PutString("500 Hz");
break;
case 'w' : for(m=0;m<=10;m++)
b[m]=b2[m];
UART1_PutString("1 KHz");
break;
case 'e' : for(m=0;m<=10;m++)
b[m]=b3[m];
UART1_PutString("2 KHz");

}
}

CY_ISR(AISR)
{
if(set==1)
set=0;
}
int main(void)
{

CyGlobalIntEnable; /* Enable global interrupts. */


CLK_Start();
PWM_Start();
ADC_Start();
UART1_Start();
VDAC_Start();
ADCISR_StartEx(AISR);
UISR_StartEx(UARTISR);
/* Place your initialization/startup code here (e.g. MyInst_Start()) */
int x[11]={0,0,0,0,0,0,0,0,0,0,0},i;
uint32 c=0,t=0,y=0;
UART1_PutString(" q : 500 Hz w: 1KHz e: 2Khz " );

for(;;)
{
/* Place your application code here. */
// Control_Reg_Write(1);
while(set)
{ }
//Control_Reg_Write(0);
n=ADC_GetResult8();
//VDAC_SetValue(n);
//ADC_IsEndConversion(ADC_WAIT_FOR_RESULT);
x[10]=x[9];
x[9]=x[8];
x[8]=x[7];
x[7]=x[6];
x[6]=x[5];
x[5]=x[4];
x[4]=x[3];
x[3]=x[2];
x[2]=x[1];
x[1]=x[0];
x[0]=n;
for(i=0;i<=10;i++)
{
c=( ( (uint32)x[i] ) * ( (uint32)b[10-i] ) );
y=y+c;
}

VDAC_SetValue((2*y>>14));
y=0;c=0;
set=1;
flag=1;

PWM_ReadStatusRegister();

/* [] END OF FILE */

WAVEFORM
FIR 500HZ

FIR 1KHZ

FIR 2KHZ
CODE FOR FIR

/* ========================================
*
* Copyright YOUR COMPANY, THE YEAR
* All Rights Reserved
* UNPUBLISHED, LICENSED SOFTWARE.
*
* CONFIDENTIAL AND PROPRIETARY INFORMATION
* WHICH IS THE PROPERTY OF your company.
*
* ========================================
*/
#include "project.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"

volatile uint8 n;
volatile int set=1,flag=1,m,sum=0;
volatile char ch='5';
volatile int b[2]={0,0},
b1[2]={63,63},
b2[2]={125, 125},
b3[2]={184, 184},
b4[2]={242, 242},
b5[2]={299, 299},
b6[2]={354, 354},
b7[2]={407, 407},
b8[2]={459, 459},
b9[2]={510, 510},
b10[2]={560,560},
b11[2]={609,609},
b12[2]={656,656},
b13[2]={703,703},
b14[2]={748,748},
b15[2]={793,793},
b16[2]={837,837},
b17[2]={880,880},
b18[2]={922,922},
b19[2]={964,964},
b20[2]={1004,1004};
volatile int
a=0,a1=3969,a2=3846,a3=3727,a4=3611,a5=3498,a6=3389,a7=3282,a8=3177,a9=3075
,a10=2976;
volatile int
a11=2879,a12=2784,a13=2691,a14=2599,a15=2510,a16=2422,a17=2336,a18=2252,a19
=2169,a20=2087;
CY_ISR(UARTISR)
{
if (flag==1)
flag=0;
ch=UART1_GetChar();
switch(ch)
{
case '\0': break;
case 'q' : for(m=0;m<2;m++)
b[m]=b1[m];
a=a1;
UART1_PutString("50 Hz");
break;
case 'w' : for(m=0;m<2;m++)
b[m]=b2[m];
a=a2;
UART1_PutString("100 Hz");
break;
case 'e' : for(m=0;m<=2;m++)
b[m]=b3[m];
a=a3;
UART1_PutString("150 Hz");
break;
case 'r' : for(m=0;m<2;m++)
b[m]=b4[m];
a=a4;
UART1_PutString("200 Hz");
break;
case 't' : for(m=0;m<2;m++)
b[m]=b5[m];
UART1_PutString("250 Hz");
a=a5;
break;
case 'y' : for(m=0;m<2;m++)
b[m]=b6[m];
a=a6;
UART1_PutString("300 Hz");
break;
case 'u' : for(m=0;m<2;m++)
b[m]=b7[m];
a=a7;
UART1_PutString("350 Hz");
break;
case 'i' : for(m=0;m<2;m++)
b[m]=b8[m];
a=a8;
UART1_PutString("400 Hz");
break;
case 'o' : for(m=0;m<2;m++)
b[m]=b9[m]; a=a9;
UART1_PutString("450 Hz");
break;
case 'p' : for(m=0;m<2;m++)
b[m]=b10[m];
a=a10;
UART1_PutString("500 Hz");
break;
case 'a' : for(m=0;m<2;m++)
b[m]=b11[m];
a=a11;
UART1_PutString("550 Hz");
break;
case 's' : for(m=0;m<2;m++)
b[m]=b12[m];
a=a12;
UART1_PutString("600 Hz");
break;
case 'd' : for(m=0;m<2;m++)
b[m]=b13[m];
a=a13;
UART1_PutString("650 Hz");
break;
case 'f' : for(m=0;m<2;m++)
b[m]=b14[m];
a=a14;
UART1_PutString("700 Hz");
break;
case 'g' : for(m=0;m<2;m++)
b[m]=b15[m];
a=a15;
UART1_PutString("750 Hz");
break;
case 'h' : for(m=0;m<2;m++)
b[m]=b16[m];
a=a16;
UART1_PutString("800 Hz");
break;
case 'j' : for(m=0;m<2;m++)
b[m]=b17[m];
a=a17;
UART1_PutString("850 Hz");
break;
case 'k' : for(m=0;m<2;m++)
b[m]=b18[m];
a=a18;
UART1_PutString("900 Hz");
break;
case 'l' : for(m=0;m<2;m++)
b[m]=b19[m];
a=a19;
UART1_PutString("950 Hz");
break;
case 'z' : for(m=0;m<2;m++)
b[m]=b20[m];
UART1_PutString("1000 Hz");
a=a20;
break;

}
}

CY_ISR(AISR)
{
if(set==1)
set=0;
}
int main(void)
{
CyGlobalIntEnable; /* Enable global interrupts. */
CLK_Start();
PWM_Start();
ADC_Start();
UART1_Start();
VDAC_Start();
ADCISR_StartEx(AISR);
UISR_StartEx(UARTISR);
/* Place your initialization/startup code here (e.g. MyInst_Start()) */
int y=0,x[2]={0,0},g=0;
//UART1_PutString("q : 50 Hz w: 100Hz e:150Hz r:200Hz t:250Hz
y:300Hz u:350Hz i:400Hz o:450Hz p:500Hz");
UART1_PutString("a:550Hz s:600Hz d:650Hz f:700Hz g:750Hz
h:800Hz j:850Hz k:900Hz l:950Hz z:1000Hz");

for(;;)
{
/* Place your application code here. */
while(set)
{ }
n=ADC_GetResult16();

x[1]=x[0];
x[0]=n;
y=((x[0]+x[1])*b[0])+a*g;
VDAC_SetValue((y>>12));
g=y>>12;
set=1;flag=1;
PWM_ReadStatusRegister();

}
}

/* [] END OF FILE */
WAVEFORM
IIR 1 KHZ

IIR 500HZ

PITS AND FALLS


• Wrong coding
• Wrong concept
• Adjustments in Oscilloscope
DESCRIPTION

FIR
Clock=24 Mhz
Period=100 microseconds
IIR
Clock = 12 Mhz
Period =100 microseconds

You might also like