AD9850 Moduleを1枚実装した例。上下どちら側で使うかは、アプリケーション次第である。従来の1DDS VFOを移植も良い。
AD9850 Moduleを2枚実装した例。DUAL DDS システム(マルチオシレータ、変調器付きSG、VFOなど)が可能。
回路図。
PCBサイズ 69 x 54
Program(スケッチ)
DUAL DDSのサンプル。//////////////////////////////////////////////////////////////////////
// AD9850 DUAL DDS VFO test program ver.1.0
//
// Copyright(C)2016.JA2GQP.All rights reserved.
// Crystal replacement
// 2016/4/2
// JA2GQP
//////////////////////////////////////////////////////////////////////
//---------- Define Constant Value ----------
const byte C_DATA = 7; // DIO7
const byte C_UD = 8; // DIO8
const byte C_CLK = 9; // DIO9
const byte V_DATA = 10; // DIO10
const byte V_UD = 11; // DIO11
const byte V_CLK = 12; // DIO12
const long VFO_FRQ = 7000000L; // VFO=7.000Mhz
const long CAL_FRQ = 7100000L; // CAL=7.100Mhz
const unsigned long DDS_CLK = 125000000L; // AD9850 Clock
const unsigned long TWO_E32 = 4294967295L; // 2^32
const byte DDS_CMD = B00000000; // AD9850 Command
//---------- Memory Assign -------------------
long Dds_Dat = 0; // DDS Data
//---------- Initialization Program ---------------
void setup(){
pinMode(C_UD,OUTPUT);
pinMode(C_CLK,OUTPUT);
pinMode(C_DATA,OUTPUT);
pinMode(V_UD,OUTPUT);
pinMode(V_CLK,OUTPUT);
pinMode(V_DATA,OUTPUT);
}
//---------- Main program ---------------
void loop() {
Dds_Dat = VFO_FRQ;
Fnc_Dds(Dds_Dat,V_DATA,V_CLK,V_UD);
Dds_Dat = CAL_FRQ;
Fnc_Dds(Dds_Dat,C_DATA,C_CLK,C_UD);
delay(100);
}
//---------- Function DDS PROC ---------------
void Fnc_Dds(double frquency,byte dat,byte clk,byte ud){
unsigned long wrk = frquency * TWO_E32 / DDS_CLK;
digitalWrite(ud,LOW);
shiftOut(dat,clk,LSBFIRST,wrk);
shiftOut(dat,clk,LSBFIRST,(wrk >> 8));
shiftOut(dat,clk,LSBFIRST,(wrk >> 16));
shiftOut(dat,clk,LSBFIRST,(wrk >> 24));
shiftOut(dat,clk,LSBFIRST,DDS_CMD); // AD9850 command
digitalWrite(ud,HIGH);
}
0 件のコメント:
コメントを投稿