首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[分享]Realtime6713DSp配套AD源程序

[分享]Realtime6713DSp配套AD源程序



ICETEK-C6713


#include"ICETEK-C6713-A.h"
#include<math.h>


#define AD_CTL *(unsigned char*)0x90100006
#define AD_DATA_BASE 0x90140000
#define ORDER 2
#define L 1024
#define hL 20
#define AD_CHA0 *(unsigned short int*)(AD_DATA_BASE+0*ORDER)
#define AD_CHC0 *(unsigned short int*)(AD_DATA_BASE+1*ORDER)
#define AD_CHB0 *(unsigned short int*)(AD_DATA_BASE+2*ORDER)
#define AD_CHA1 *(unsigned short int*)(AD_DATA_BASE+4*ORDER)
#define AD_CHC1 *(unsigned short int*)(AD_DATA_BASE+5*ORDER)
#define AD_CHB1 *(unsigned short int*)(AD_DATA_BASE+6*ORDER)

void interrupt Timer( void );
void initInterrupt(void);
unsigned short int a,b,c,d,e,f;
short int nChannelA0[L],nChannelA1[L];
short int nAD0[L],nAD1[L],out[L];



main()
{
// unsigned char dbScanCode;

nPointNumber=0;
ADflag=0;
init_emif(); // 初始化emif
InitCTR(); // 初始化ICETEK-CTR
initInterrupt();
while ( 1 )
{
if (ADflag==1)
ADflag=0;
}


}
}
void interrupt Timer( void )
{
int i;
short int nWork;


a= AD_CHA0 ;
b= AD_CHA1 ;
c= AD_CHB0 ;
d= AD_CHB1 ;
e= AD_CHC0 ;
f= AD_CHC1 ;
if ( (a&0x8000)&&(b&0x8000) ) // 数据有效性判断
{
a<<=4; nWork=a; nWork/=16; // 去除高4位
nChannelA0[nPointNumber]=nWork;
b<<=4; nWork=b; nWork/=16; // 去除高4位
nChannelA1[nPointNumber]=nWork;
nPointNumber++;
if ( nPointNumber>=L )
{
for ( i=0;i<L;i++ )
{
nAD0=nChannelA0;
}

ADflag=1;
nPointNumber=0; // 软中断位置


}
}
AD_CTL = 0x0; // 发送控制脉冲信号,进行下次转换 如果只需A0,A1通道只需送6即可
for (i=0;i<50;i++);
AD_CTL = 0x7; // 产生高电平
}
void initInterrupt(void)
{
// 设置中断控制寄存器
CSR&=0xfffffffe; // 关中断 GIE=0
ISTP=0x00000c00; // 重置中断向量表到0C00h
IMH=0x08000000; // 指定Timer1产生int15中断
IML=0;
ICR=0xff; // 清除等待的中断
IER=0x8003; // 使能int15中断
// 设置定时器产生中断信号的频率
TIMER1PRD=0x0100; // 定时器1的周期=0x1000
TIMER1CTL=0x3c0; // 开始计数
CSR=CSR|1; // 开中断
}

void DSP_fir_gen(short x[], short h[], short r[], int nh, int nr)
{
int i, j, sum;
for (j = 0; j < nr; j++) {
sum = 0;
for (i = 0; i < nh; i++)
sum += x[i + j] * h;
r[j] = sum >> 15;
}
}



[em01]

[此贴子已经被作者于2008-1-2 14:50:17编辑过]

返回列表