论坛风格切换切换到宽版
  • 4532阅读
  • 4回复

ad9850驱动for avr m16 [复制链接]

上一主题 下一主题
离线峰回路转
 
发帖
584
只看楼主 倒序阅读 0楼 发表于: 2010-12-24
ad9850驱动for avr m16
买了块9850模块。带的资料。
gcc编译环境。那位给转换成icc编译环境啊。。没用过gcc琢磨了一会决定还是请教万能的土云吧
附件: avr-AD9850(串行).zip (0 K) 下载次数:118
附件: avr-AD9850(并行).zip (0 K) 下载次数:106
离线ba6iv
发帖
1285
只看该作者 1楼 发表于: 2010-12-25
换换头文件,改改数据类型定义就行了,不难的!
离线峰回路转
发帖
584
只看该作者 2楼 发表于: 2010-12-25
搞定了。。还是得靠自己啊。。编译通过,还没有经过验证,等出差回去就测试
/************************************************************

串行驱动 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_1 portb_0=1
#define frud_0 portb_0=0
#define rest_1 portb_1=1
#define rest_0 portb_1=0
#define wclk_1 portb_2=1
#define wclk_0 portb_2=0

#define adout   5000000   // 定义 输出 频率 adout
#define io9850 porta    
#define io_1 set_1(io9850,7)
#define io_0 cle_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();
}
}
离线BG2UKY
发帖
639
只看该作者 3楼 发表于: 2011-12-10
我是来学习的!!!
离线ding
发帖
3484
只看该作者 4楼 发表于: 2011-12-11
硬件看看。