0% found this document useful (0 votes)
57 views9 pages

Digital Filter Implementation-1

The document describes code for implementing digital filters including FIR and IIR filters. It includes code snippets for FIR filters at different frequencies generated by buttons. It also includes code for an IIR filter with adjustments needed in the oscilloscope. The document discusses topics like wrong coding, concepts and adjustments needed in measurement equipment for analysis.

Uploaded by

sithara s
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views9 pages

Digital Filter Implementation-1

The document describes code for implementing digital filters including FIR and IIR filters. It includes code snippets for FIR filters at different frequencies generated by buttons. It also includes code for an IIR filter with adjustments needed in the oscilloscope. The document discusses topics like wrong coding, concepts and adjustments needed in measurement equipment for analysis.

Uploaded by

sithara s
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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