TS-2000SDX用基準発振器の製作 15.600000MHz
実装すると問題ありです 検討中^^;
一台で1.9MHzから1200MHzまでカバーするトランシーバーはいいですね。
この無線機のノイズリダクションのNR2が凄い。
CW運用に最高のパフォーマンスを提供してくれています。
しかし、VUHFでのFM運用なら問題ありませんが、144MHzでのGT65やFT8運用、430MHz、1200MHzなどでのCW・SSBでは周波数確度が心配なこの頃です。
そこで、外部のGPSでロックした発振器やルビジューム発振器で精度を高める基準発振器を製作しました。
外部からの入力で自動切り替えをします。

内部発振器TCVCXOはIQXT-220-2を使用しています。

ルビジューム発振器で制御(ルビジューム発振器の精度になります) 内部発振器の時(0.5Hz以内に収まるようです)

CE3回路図 水魚堂の回路図エディタで作成しています
MB3パターン図 Minimal Board Editor(MBE)で作成しています
プログラム
/*
* AD9851 DDS 1point oscillator
* File: dds1posc.c
* Author: ja7eif
*
* Created on 2023/04/23, 10:31
* Version 1.00
* Int OSC 4MHz
* DDSへの送信フォーマットは下記順序
* W0 Freq bit0(LSB)
* W1 Freq bit1
* ------------
* W31 Freq bit31(MSB)
* W32 x6 REFCLK Multiplier Enable
* W33 0
* W34 Power Down at 1
* W35 Phase bit0(LSB) 360度/32で指定
* --------------
* W39 Phase bit4(MSB)
*
* クロックは10MHz×6=60MHz
* 設定値=(2の32乗(4,294,967,296)÷クロック周波数(60000000)x出力周波数 → 71.58278827x出力周波数
* 出力周波数は15.600MHzなので設定値は1116691497
*/
// PIC12F629 Configuration Bit Settings
// 'C' source line config statements
// CONFIG
#pragma config FOSC = INTRCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-Up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // GP3/MCLR pin function select (GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD)
#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled)
#pragma config CP = OFF // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 4000000
#define _RESET GP5
#define W_CLK GP0
#define FQ_UD GP1
#define SDATA GP4
#define TP GP2
unsigned long Frequency = 1116691497; //15600000Hz
void serial_out(unsigned long Freq);
void main(void) {
__delay_ms(2000);
TRISIO = 0;
OPTION_REG = 0;
W_CLK = 0;
FQ_UD = 0;
SDATA = 0;
__delay_us(1);
// RESET
_RESET = 1;
__delay_us(1);
_RESET = 0;
W_CLK = 1; //シリアルモードに変換
W_CLK = 0;
FQ_UD = 1; //シリアルモードイネーブル
FQ_UD = 0;
serial_out(Frequency);
SLEEP();
}
/**************************************************************
シリアル送信関数
**************************************************************/
void serial_out(unsigned long Freq)
{
int i, j;
unsigned int w0 = 1; // x6
// 周波数値32ビット出力する
for(i=0; i<4; i++)
{
for(j=0; j<8; j++){
SDATA = Freq & 1;
W_CLK = 1;
W_CLK = 0;
Freq = Freq >> 1;
}
}
// 設定制御8ビット出力
for(j=0; j<8; j++){
SDATA = w0 & 1;
W_CLK = 1;
W_CLK = 0;
w0 = w0 >> 1;
}
FQ_UD = 1; //周波数設定
FQ_UD = 0;
}