// Analog Devices ADF4001を使用するための簡単スケッチ
// "Arduino Nano, ATmega328P(Old Bootloader)"
// USB-SERIAL CH340(COM3)
// 目的周波数の設定は、「ADI Pll Int-N」 V7.7.4(Windows)ソフトで計算する。
// 元のリファレンス=30MHz
// 1.08KHz低い PtoP150mV
// スタートの設定
// Device :ADF4001
// -------------------------------
// RF VCO OUT : 116MHz
// PFD Frequency :200KHz (Min 20KHz)
// Reference Frequency:10MHz
// Write R Counter Latch :0xC8 // Reference Frequency:10MHz
// Write R Counter Latch :0x190 // Reference Frequency:20MHz
// Write R Counter Latch :0x258 // Reference Frequency:30MHz
// Write N Counter Latch :0x24401
// Write Function Latch & Write Initialization Latch :0xD8092
// -------------------------------
// 144.00MHz(PFD=200KHz REFf=10MHz) R_Latch = 0xC8; N_Latch = 0x22D001; InitLatch = 0xD8082;
// 144.02MHz(PFD=20KHz REFf=10MHz) R_Latch = 0x7D0; N_Latch = 0x3C2101; InitLatch = 0xD8082;
// 144.05MHz(PFD=50KHz REFf=10MHz) R_Latch = 0x320; N_Latch = 0x2B4101; InitLatch = 0xD8082;
// 116MHz(PFD=100KHz REFf=10MHz) R_Latch = 0x190; N_Latch = 0x248801; InitLatch = 0xD8082;
// 100MHz(PFD=100KHz REFf=10MHz) R_Latch = 0x190; N_Latch = 0x248801; InitLatch = 0xD8082;
//
/*
#include <Wire.h>
#include <Time.h>
*/
// この下の4つのラッチに設定数をセットして「マイコンボードに書き込み」動作を行う。
// FuncLatchは使用せず。
const unsigned long R_Latch = 0x320; // 32bit
const unsigned long N_Latch = 0x2B4101; // 32bit
const unsigned long FuncLatch = 0xD8082; // 32bit
const unsigned long InitLatch = 0xD8082; // 32bit
unsigned long WriteBuff; // 32bit
// Port definition 実ポートに書替えること。
#define P_DA 2
#define P_CL 3
#define P_LE 4
#define P_CE 5
void setup() {
pinMode(P_DA, OUTPUT); // 出力に設定
pinMode(P_CL, OUTPUT); // 出力に設定
pinMode(P_LE, OUTPUT); // 出力に設定 LE ハイ・レベルになると、ロードされます。
pinMode(P_CE, OUTPUT); // 出力に設定
//シリアルモニタでデバックするときの準備(通常は未使用)
// Serial.begin(9600);
// while (!Serial) ; // wait for Arduino Serial Monitor
delay(200);
digitalWrite(P_CE, LOW);
digitalWrite(P_LE, LOW);
digitalWrite(P_CL, LOW);
}
void loop() {
delay(500);
WriteBuff = InitLatch; // 順番は「Init」==>「R」==>「N」
WriteLatch();
WriteBuff = R_Latch;
WriteLatch();
WriteBuff = N_Latch;
WriteLatch();
delay(500);
while (1) {
int a = 0;
}
}
// ラッチへの書込み
void WriteLatch() {
int hl;
for (int n = 23; n >= 0; n--) {
hl = bitRead(WriteBuff, n);
digitalWrite(P_DA, hl);
// Serial.print(hl);
digitalWrite(P_CL, HIGH);
digitalWrite(P_CL, LOW);
}
digitalWrite(P_CE, HIGH);
digitalWrite(P_LE, HIGH);
digitalWrite(P_LE, LOW);
// Serial.println("");
}
// 一部ラッチ名をL_LatchとしていたのをN_Latchに修正しました(2018/01/17) |