📄 dds.c
字号:
#include"main.h"
//AD9835
void ad9835_spi(uint data)
{
cbi(portb,4);
uchar temp;
temp=(uchar) (data>>8);
spi(temp);
temp=(uchar) (data);
spi(temp);
sbi(portb,4);
}
void ad9835(ulong f)
{
ulong data;
uchar temp;
data=ad9835_f_to_data(f);
temp=(uchar) (data);
ad9835_spi((0x3000+temp));
temp=(uchar) (data>>8);
ad9835_spi((0x2100+temp));
temp=(uchar) (data>>16);
ad9835_spi((0x3200+temp));
temp=(uchar) (data>>24);
ad9835_spi((0x2300+temp));
//ad9835_spi(0x6000); //fre register0,phase register0
ad9835_spi(0xc000);//sleep,reset,clr=0
}
void ad9835_init(void)
{
ulong data;
uchar temp;
ad9835_spi(0xf800); //sleep,reset,clr=1
ad9835_spi(0xa000); //sync=1;selsrc=0;
//fre0=62000hz
data=ad9835_f_to_data(62000);
temp=(uchar) (data);
ad9835_spi((0x3000+temp));
temp=(uchar) (data>>8);
ad9835_spi((0x2100+temp));
temp=(uchar) (data>>16);
ad9835_spi((0x3200+temp));
temp=(uchar) (data>>24);
ad9835_spi((0x2300+temp));
//fre1=138000hz
data=ad9835_f_to_data(138000);
temp=(uchar) (data);
ad9835_spi((0x3400+temp));
temp=(uchar) (data>>8);
ad9835_spi((0x2500+temp));
temp=(uchar) (data>>16);
ad9835_spi((0x3600+temp));
temp=(uchar) (data>>24);
ad9835_spi((0x2700+temp));
//ad9835_spi(0x6000); //fre register0,phase register0
ad9835_spi(0xc000);//sleep,reset,clr=0
}
ulong ad9835_f_to_data(ulong f)
{
ulong data;
data=268.435436*f; //16M crystal oscillator
return data;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -