zhaofeng2008 发表于 2010-12-24 03:23:44

ad9850驱动for m16

淘宝上买了块9850模块板。附带的资料
gcc编译环境。那位给转成icc环境吧。gcc俺不会用。谢谢
点击此处下载 ourdev_606775HJI2UR.zip(文件大小:18K) (原文件名:avr-AD9850(并行).zip)
点击此处下载 ourdev_606776FLUGO6.zip(文件大小:26K) (原文件名:avr-AD9850(串行).zip)

little_Monkey 发表于 2010-12-24 13:52:19

我来看AD9850驱动M16的

zhaofeng2008 发表于 2010-12-25 02:10:15

还是得自己搞定。呵呵。编译通过还没有经过验证。等出差回去就测试
/************************************************************

串行驱动 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();
}
}

reflecter 发表于 2013-12-24 17:10:51

果然有移植好的,我坛威武~谢谢分享
页: [1]
查看完整版本: ad9850驱动for m16