📄 main_program.c
字号:
/******************************************************************************************/
/* Main C Program Shell for the 21065L EZ-LAB */
/* ------------------------------------------ */
/* This routine initializes the 65L EZ-LAB's SDRAM, I/O Flags, SPORTs and AD1819A */
/* The AD1819A SPORT audio routines are also included in this file for processing */
/* a user DSP algorithm. */
/* */
/* This version uses the SPORT1 Tx Interrupt Vector to process audio data */
/* The SPORT tx DMA buffer is extended to 7 words, and 7 channels active. */
/* */
/* John Tomarakos */
/* Analog Devices DSP Applications */
/* 9/27/99 */
/* Rev 1.0 */
/******************************************************************************************/
#include <signal.h>
#include <def21065l.h>
#include <21060.h>
#include <signal.h>
#include <sport.h>
#include <macros.h>
#include <trans.h>
#include <math.h>
#include <filters.h>
#include "functions.h"
#include "myhead.h"
/////////definition the subrutine///////////
////////////////////////////////////////////
float g_equ=0.5,q_equ=0.5,fc_equ=1000,fc_sin=1000,fc_filter=1000;
int * DelayLine;
int turn_num=0,turn_equ=0;
//int taps=4;
////////////main/////////////////
void main ()
{
DelayLine = (int *) 0x03000000;
Init_DSP();
Init_65L_SDRAM_Controller(); /* Initialize External Memory */
/* This is required for disabling and modifying SPORT config for EZLAB RS232 debugger */
Clear_All_SPT1_Regs(); /* Clear and Reset SPORT1 and DMAs */
Program_SPORT1_Registers(); /* Initialize SPORT1 registers and begin codec communications */
Program_DMA_Controller(); /* Setup Serial Port 1 tx and rx DMA Transfers */
/* Initialize & program AD1819 */
interrupts (SIG_SPT1I, Sport1_Transmit_Dummy);
AD1819_Codec_Initialization();
interrupts (SIG_SPT1I, SIG_IGN);
///////////my initial runtine////////////////////////
fc_sin=1000;
v_true=0;
// hp_fil_bessel_2or(fc);
// hp_fil_buttwith_4or(fc);
lp_fil_buttwith_2or(fc_filter,1.4142136,a_eq_2,b_eq_2);
equ_compu(fc_equ,g_equ,q_equ,a_eq_1,b_eq_1);
mysine(fc_sin);
/////////////////////////////////////////////////////
/* Install SPORT1 TX Audio Processing Function */
interrupts (SIG_SPT1I, Sport1_tx_isr_function);
Blink_LEDs_Test(); /* Tell us if we are alive? */
// fc=1000;
v_true=0;
fc_sin=1000;
while(1)
{
//-------------------------------//
asm("wait_flag0:");
asm("if not flag0_in jump flag0_over;");
asm("flag0_release:");
asm("if flag0_in jump flag0_release;");
if(turn_num>=2)turn_num=0;
else turn_num=turn_num + 1;
asm("flag0_over:");
if(turn_num==0)//sin
{
asm("bit set ustat1 0x0f;");
asm("bit clr ustat1 0x01;");
//asm("dm(IOSTAT)=ustat1;");0x2f
asm("dm(0x2f)=ustat1;");
v_base=fc_sin;
v_step=50;
inc_scan();
fc_sin=v_base;
if(fc_sin<=50)fc_sin=50;
if(fc_sin>=15000)fc_sin=15000;//15k
if(v_true==1){mysine(fc_sin);v_true=0;}
}
else if(turn_num==1)//filter
{
asm("bit set ustat1 0x0f;");
asm("bit clr ustat1 0x02;");
//asm("dm(IOSTAT)=ustat1;");
asm("dm(0x2f)=ustat1;");
v_base=fc_filter;
v_step=50;
inc_scan();
fc_filter=v_base;
if(fc_filter<=100)fc_filter=100;
if(fc_filter>=12000)fc_filter=12000;//12k
if(v_true==1){lp_fil_buttwith_2or(fc_filter,1.4142136,a_eq_2,b_eq_2);v_true=0;}
}
else if(turn_num==2)//equ
{
asm("bit clr ustat1 0x03;");
//asm("dm(IOSTAT)=ustat1;");
asm("dm(0x2f)=ustat1;");
asm("wait_flag1:");
asm("if not flag1_in jump flag1_over;");
asm("flag1_release:");
asm("if flag1_in jump flag1_release;");
if(turn_equ>=2)turn_equ=0;
else turn_equ=turn_equ + 1;
asm("flag1_over:");
if(turn_equ==0)//g
{
asm("bit set ustat1 0x0c;");
asm("bit clr ustat1 0x04;");
//asm("dm(IOSTAT)=ustat1;");
asm("dm(0x2f)=ustat1;");
v_base=g_equ;
v_step=0.5;
inc_scan();
g_equ=v_base;
if(g_equ<=-15)g_equ=-15;
if(g_equ>=15)g_equ=15;//g
if(v_true==1){equ_compu(fc_equ,g_equ,q_equ,a_eq_1,b_eq_1);v_true=0;v_true=0;}
}
else if(turn_equ==1)//Q
{
asm("bit set ustat1 0x0c;");
asm("bit clr ustat1 0x08;");
//asm("dm(IOSTAT)=ustat1;");
asm("dm(0x2f)=ustat1;");
v_base=q_equ;
v_step=0.02;
inc_scan();
q_equ=v_base;
if(q_equ<=0.02)q_equ=0.02;
if(q_equ>=1)q_equ=1;//Q
if(v_true==1){equ_compu(fc_equ,g_equ,q_equ,a_eq_1,b_eq_1);v_true=0;v_true=0;}
}
else if(turn_equ==2)//fc_equ
{
asm("bit clr ustat1 0x0c;");
//asm("dm(IOSTAT)=ustat1;");
asm("dm(0x2f)=ustat1;");
v_base=fc_equ;
v_step=50;
inc_scan();
fc_equ=v_base;
if(fc_equ<=100)fc_equ=100;
if(fc_equ>=12000)fc_equ=12000;//12k
if(v_true==1){equ_compu(fc_equ,g_equ,q_equ,a_eq_1,b_eq_1);v_true=0;v_true=0;}
}
}
//-------------------------------//
//v_base=fc_sin;
//v_step=50;
//inc_scan();
//fc_sin=v_base;
//if(fc_sin<=50)fc_sin=50;
//if(fc_sin>=15000)fc_sin=15000;
// if(fc<=100)fc=100;
// if(fc>=12000)fc=12000;
// if(v_true==1){hp_fil_buttwith_4or(fc);v_true=0;}
// if(v_true==1){hp_fil_buttwith_2or(fc_filter,1.4142136,a_eq_1,b_eq_1);v_true=0;}
// if(v_true==1){hp_fil_bessel_2or(fc) ;v_true=0;}
// if(v_true==1){equ_compu(fc,10,0.1);v_true=0;}
//if(v_true==1){mysine(fc_sin);v_true=0;}
// asm("idle;");
}
}
void Sport1_tx_isr_function()
{
Record_AD1819A_audio_input();
// fil_out=myc_iir(sample,a_eq_1,b_eq_1,w_eq_1,taps);
// playback_audio_data();
}
// Dummy routine for initialization
void Sport1_Transmit_Dummy()
{
}
void mysine(float fc)
{
aa=2*cosf(2*PI*fc/48000);
y0=sinf(2*PI*fc/48000);
y1=aa*y0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -