50MHz AM/FM/USB/CWトランシーバーの製作17

2012.3.11
今回はDDSを制御マイコン部のソフト製作です。
 写真はVFO Function SWの配置の様子。オリジナルでは左からVFO CH1 CH2 CH3 CH4のいずれか1つを選択するSWでした。今回は このSWを利用して左からVFO CH1(50.550MHz) CH2(51.000MHz) RIT TXに割り振りました。  TXボタンはポートに取り込んでいますが、ソフトでの処理はありません。本機をセパレート運用で送信機として使用する場合、 本ボタンを押すことで、ANTはEXT RX OUTになります。

 写真はMODE SWの配置の様子。オリジナルでは左からPWR ON/OFF FM CW USB LSBのSWでした。PWR ON/OFFは他のSWと独立しており 今回はこのSWを利用して左からCAL FM CW USB AMに割り振りました。
 CALボタンはハードのみのSWで、本機をセパレート運用で送信機として使用する場合、 本ボタンを押すことで、EXT RXへのキャリブレ動作になります。
 PWR ON/OFF SWはオリジナルのレピーターONのSWへ移動しました。このような多連押しボタンSWは市販での購入は困難ですが ジャンクを活用してオリジナルで楽しめます。

プログラム全体説明
 DDS制御のソフトは前回のTX88A用50MHz VFOに次いで2回目になります。前回盛り込めなかった電源OFF時の周波数メモリ機能など 追加しましたので、これから製作される方の参考として、ソースリストの概要を説明します。
開発環境
 ソースはアセンブラで書きました。CCS-Cコンパイラも準備しましたが結局アセンブラでやりました。プログラム容量は0.7k程で ですが、Cで書くとひょっとしたらメモリ容量が足りなくなるかもしれません。  ライターは秋月のライターVer3.5です。以前にVer UPキットを購入し「暇な時にでもVer UPしておこう」と思っていたら、いつ のまにかVer UPキットはどこかに仕舞ったきりで出てきません。仕方なくいつものPIC16F84Aを使用しました。16F88の方が安そう ですが、私のライターのVerでは書けません。開発には、MPLABを使用しました。
プログラム説明
変数設定
 変数が多くなり、擬似命令の"cblock〜endc"を使いました。〜の部分に変数を書いていけば変数のアドレスが割り当てられ ます。デバッグ時に使った仮変数が残ったりしています。
MAINプログラム
Initialization
 電源投入後の初期設定で、各ポート設定、DDSの初期化、初期周波数の設定、表示処理などすべてサブルーチンとしてまとめた プログラムを呼び出すようにします。
メインルーチン
 一連の処理として以下のループを繰り返します。 使用してみて
 周波数可変ステップはCW/SSB時9Hz(3HzX3)、AM時30Hz FM時99Hzとしましたが、適当なステップだと思います。特にSSB/CWではアナログVFOに比較して 全く違和感はありません。FM時の周波数可変ステップはもう少し大きくてした方がいいかもしれません。FM〜AMへの周波数移動はCH1〜CH2で変化後 VFOで可変していますが、SSB/CW帯への周波数可変はCH1からVFOで可変になるのでちょっとダイアル回転が多くなります。対策案としては50.200MHz付近 にもプリセット周波数CH3があればいいと思います。
 デバックで苦労した点は、開発当初VFOダイアル可変時に周波数変化がもたついた感じになってしまい、その対策に時間がかかりました。最後までトラ ぶったのが、RIT動作でした。特定の周波数で保存した送信周波数が化けてしまうという症状。周波数データとして各レジスターに入れ替えしているため のトラブルでしたが、この辺りは"C"で開発すればすっきりするところです。
 多ピンのPICで高機能のVFOもいいのですが、シンプルで違和感のない操作性のVFOは自作ならでのカスタマイズで楽しめます。
    プログラムソースリスト参照

製作18へ
  Top Menuへ