ad9850驱动for m16
淘宝上买了块9850模块板。附带的资料gcc编译环境。那位给转成icc环境吧。gcc俺不会用。谢谢
点击此处下载 ourdev_606775HJI2UR.zip(文件大小:18K) (原文件名:avr-AD9850(并行).zip)
点击此处下载 ourdev_606776FLUGO6.zip(文件大小:26K) (原文件名:avr-AD9850(串行).zip) 我来看AD9850驱动M16的 还是得自己搞定。呵呵。编译通过还没有经过验证。等出差回去就测试
/************************************************************
串行驱动 AD9850
FRUD -- B0
REST -- B1
WCLK -- B2
数据接口 D7 -- A7(注意:串行方式时D0,D1接高电平,D2接地)
ADout 定义输出频率
****************************************************************/
#include <iom16v.h>
#include <macros.h>
#include <delay.h>
#include <avr_bit.h>
#define uint unsigned int
#define uchar unsigned char
#define SET_1(a,b) a|=(1<<b)
#define CLE_0(a,b) a&=~(1<<b)
#define FRUD_1PORTB_0=1
#defineFRUD_0PORTB_0=0
#defineREST_1PORTB_1=1
#defineREST_0PORTB_1=0
#defineWCLK_1PORTB_2=1
#defineWCLK_0PORTB_2=0
#defineADout 5000000 // 定义 输出 频率 ADout
#defineIO9850PORTA
#defineIO_1SET_1(IO9850,7)
#defineIO_0CLE_0(IO9850,7)
void initIO(void)
{
DDRA = 0xff;
DDRB = 0xff;
}
void init9850(void)
{
WCLK_0;
FRUD_0;
REST_1;
REST_0;
}
void UPDATE(void)
{
FRUD_1;
FRUD_0;
}
void sentcom(void)
{
sendword(0);
sendword(0);
sendword(1);
sendword(0);
sendword(0);
sendword(0);
sendword(0);
}
void sendword(uchar dat)
{
if(dat)
IO_1;
else
IO_0;
WCLK_1;
WCLK_0;
}
void startAD(void)
{ long unsigned int dat;
unsigned char i = 0;
UPDATE();
dat =(long int) ADout * 42.949672;
dat=dat>>1;
for(;i<32;i++)
{
sendword((uchar) (dat&1));
dat=dat>>1;
}
sentcom();
UPDATE();
}
int main(void)
{ initIO();
init9850();
startAD();
while(1)
{
NOP();
}
} 果然有移植好的,我坛威武~谢谢分享
页:
[1]