打印
[AVR单片机]

关于AD9834的控制程序

[复制链接]
2848|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lysqlife|  楼主 | 2008-8-15 15:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟我用MEGA48V+AD9834做了一个函数发生器,写了一个控制程序,但是ad9834始终没有结果出来,恳请各位高手指点。单片机与AD9834之间的通信采用SPI接口。
程序如下:
#include <avr/io.h>
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
void send_byte(uchar byte)
{SPDR=byte;
  while(!(SPSR&(1<<SPIF)))
      ;
  //SPSR&=~(1<<SPIF);
}
void spi_int(void)
{DDRB=0xFF;
PORTB=(1<<PD3)|(1<<PD5);
DDRD=0xFF;
PORTD=0x04;
SPCR=0x54;
SPSR|=0x01;
}
void send_word(uint word)
{uchar word_high,word_low;
word_low=word&0x00FF;
word_high=(word&0xFF00)>>8;
asm ("cbi 0x0B,2");
send_byte(word_high);
send_byte(word_low);
asm ("sbi 0x0B,2");
}
int main(void)
{volatile ulong FRE;
volatile uint LSB;
volatile uint MSB;
FRE=0x3333333;
LSB=(FRE&0x3FFF)+0x4000;             //MSB=(FRE/0x4000)+0x4000;
MSB=(FRE&0x3FFC000)>>14;
MSB+=0x4000;   //LSB=(FRE%0x4000)+0x4000;
spi_int();
send_word(0x2100);
send_word(MSB);
send_word(LSB);
send_word(0x2000);
}
我的qq是47596382,E-mail:lysqlife@hotmail.com,欢迎大家一块交流。

相关帖子

沙发
PSIR| | 2012-9-13 14:37 | 只看该作者
请问一下大家:

AD9834为什麽要有两个频率寄存器(FREQ0和FREQ1)以及两个相位寄存器(PHASE0和PHASE1)?

因为IC只有一个输出,如果两个频率寄存器和两个相位寄存器都写了值,

那请问输出频率和相位会由哪一个寄存器来决定,还请高手解答。

使用特权

评论回复
板凳
XUE5361353| | 2012-9-13 22:16 | 只看该作者
程序规范化

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

18

帖子

0

粉丝