flyingbird 发表于 2008-8-7 16:23:04

关于AD9834的控制程序

我编写了一个控制AD9834产生,程序如下:
#include <avr/io.h>
#include <avr/delay.h>
#include <stdio.h>
void send_con(unsigned int con)
{unsigned char i;
asm("cbi 0x0B,2");
for (i=0;i<16;i++)
   {if(con&0x8000)
             asm("sbi 0x0B,0");
      else
             asm("cbi 0x0B,0");
          con<<=1;
          asm("sbi 0x0B,1");
          asm("cbi 0x0B,1");
          }
asm("sbi 0x0B,2");
}
void send_fre(unsigned int fre)
{send_con(fre);
}
void send_phase(void)
{send_con(0xC000);
}
void main()
{unsigned long fr=0x3333333;
unsigned int LSB,MSB;
PORTD=0x0000;
DDRD=0xFFFF;
asm ("cbi 0x0B,1");
asm ("sbi 0x0B,2");
LSB=fr/0x4000+0x4000;
MSB=fr%0x4000+0x4000;
send_con(0x2100);
send_fre(LSB);
send_fre(MSB);
send_phase;
}
但是总没有波形产生,请各位高手指点一下。

flyingbird 发表于 2008-8-7 16:28:35

附AD9834pdf
点击此处下载 ourdev_371573.pdf(文件大小:233K) (原文件名:AD9834.pdf)

ledatou 发表于 2011-6-6 00:40:32

send_con(0x2100);
应该不是这句吧~
应该是Send_Con(0x2038);吧~

dyingflame 发表于 2011-8-10 10:23:09

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3578471&bbs_page_no=1&search_mode=1&search_text=AD9834&bbs_id=9999
这里面有个AD9834的代码,貌似好用的,看看有什么区别吧。

PSIR 发表于 2012-9-13 14:49:01

请问一下大家:

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

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

那请问输出频率和相位会由哪一个寄存器来决定,还请高手解答。
页: [1]
查看完整版本: 关于AD9834的控制程序