● 実験テーマ126
「CQ_DDSスタンドアロン化」
(CQ出版社:「すぐ使えるデジタル周波数シンセサイザ基板」のスタンドアロン化の記事(「はじめてのPIC」サイト)を参考にしました。)
■ 2020.9.4
・以前からこの基板は、自作オシロ等のチェック時に活用してきたが、最初からPICに書込まれていた
ファームウエアが、USBに、PCターミナル:Tera Termを接続して、そこからのコマンドによって
DDSを制御するものだったので、セッティングが面倒で使い勝手は良いとは言えなかった。
以前から気には止めていたのだが、「はじめてのPIC」サイトで、これをスタンドアロン化する記事が
載っているので、これを参考に私も作ってみようと思い立った。
・今回は、サイトに添付されている、HEXファイルを、そのまま使用させて頂くことにする。
ただ何時のように、PICkit2を使って書込むのではなく、ブートローダを書込んだ後、PCアプリの「HIDBootloader (Windows).exe」を実行
して、プロジェクトのHEXファイルを、USB経由でPICに書込むスタイルになり、ちょっと面倒な感じ。
■ 2020.9.5
・書込み方法の詳細な説明はサイトにあるが、私なりに手順を整理してみた。
<付属DDS基板の、スタンドアロン化の手順整理>
(1) デジタル周波数シンセサイザ基板のPICに、
あらかじめ、PIC18F14K50用のブートローダのHEXファイル:HID_BL_PIC.hexを、PICkit2を使って次の手順で書込む。
@ PICkit2 アプリケーション を起動し、BootloaderのHEXコード「 HID_BL_PIC.hex」をインポートする。
A PICkit2 でPIC18F14K50にコードを書き込む。
※ 一度、書き込めは、2度目からは、
ブートローダを同じICに再書き込みする必要はない。
ユーザーソフトを何度書きなおしても、ブートローダープログラムは、変更されないため、
新規にPIC ICを購入したときに一度たけ、実施する作業
※ 付属DDS基板には出荷時に、ファームウエアが書込まれている。
→ PICkit2で、ICPSピン経由で、Readしてみた。(ピンはランドに差込んだがハンダ付けはしてない。基板を斜めにして接触させている。)
何やら、0x0000〜 0x0FFFに、コードが見える。
そして、0x1000以降にも、コードが見える。これが実行コードと思われる。
なので、0x0000〜 0x0FFF間のコードが、ブートローダと思われるが、これがPIC18F14K50用のブートローダ
かは?
とにかくこのことは無視して、HID_BL_PIC.hexを書込んでみる。
ダンプリストは取ってあるので、後で比較してみる。→ フリーのダンプソフトで比較したが異なる物と判明:200907
↑
※ 後、これからいじることによって、最悪、出荷時のファームが書込まれた状態に戻らないとまずいので
Read後に、hexファイル:CQ_DDS.hexにエクスポートしておく。まあZIPファイルが残っているので何とかなるかとは
思っているが・・・ 200907
(2) ここから、ユーザ・ソフトウエアの書込み
@ まず、PCアプリ HIDBootloader (Windows).exe を起動。
「Device not detected」というメッセージが表示される。
A PICの4pin:MCLR/RA3に接続されているSW(このSWは用意必要)を押しながら、
USBケーブルをPCのUSBソケットに挿入。尚、4pinは、RA4入力として機能。
B ケーブル挿入後にSWを離すと、「Device attached」と表示される。
C ブートアプリ左上の「Import Firmeware Image」ボタンをクリック。
「Open Hex File」ダイアログが開くので、PICに書き込むユーザープログラムのHEXファイル:DDS_MNL_Only.hexを
HIDBootLoaderに読み込む。
読み込みに成功すると読み込んだファイル名が表示され、
「Program/Verify」ボタンがアクティブになる。
D 「Program/Verify」ボタンをクリックすると書き込みが開始され, PICの書き込みに成功すると
「Completed Successfully」と表示される。
E 「Reset Device」ボタンをクリックするか、USBケーブルを外すとDevice Detachedと表示されブートローダが切り離される。
■ 2020.9.8
・ハードは少しだがオリジナルと変えてある。
<オリジナルと異なる主な箇所>
@ LCDの電源は素直に、手持ちにあった、3.3V出力の3端子レギュレータを使った。→ オリジナルはRB4を"Hi"にしたのを印加
A オリジナルには電源SWが無いので追加した。
B ロータリエンコーダであるが、私の手配ミスで、プッシュSW内蔵でない、LEDのみ内蔵タイプを購入してしまった為、
ON/OFFのプッシュSWは別付けした。
C オリジナルの回路図と、ソース・ファイルを見ていて気が付いたのだが、
UP/DWN SWのポート接続が、ソースの定義と逆になっていたので直した。(別段たいした問題では無いが・・・)
ソースの定義は、UP_SW→ RB5/DWN_SW→ RB7に対し、回路図は、UP_SW→
RB7/DWN_SW→ RB5になっていた。
※ ソースに、内部プルアップの設定が無いのを見て最初、回路図上に外部プルアップを追加したが、よくよくボードの
回路図を見ると、I2Cを含め全ての入力に10Kの抵抗(SMTタイプの抵抗アレー)が接続されていたのでユニバーサル(UNV)基板製作前に
UNV基板の回路図を直した。
※ I2C液晶は、以前実験テーマで作ったモジュールを使い回した。(これにはプルアップが付いているが、ハンダを外した。)
・9月5日に整理した手順で、ブートローダ:HID_BL_PIC.hexと、ユーザ・ソフトウエア:DDS_MNL_Only.hexを、PICに書込んだ。
ブートローダのHEXファイルは、何時もの様に、ICPSピンより、PICkit2で書込んだ。
以下に、ユーザユーザ・ソフトウエアのHEXファイルをUSB経由で、PCPCアプリ HIDBootloader(Windows).exeによって
書込んだ時の、スクリーン・ショットをアップした。
@ まず、PCアプリ HIDBootloader (Windows).exe を起動。
「Device not detected」というメッセージが表示される。
A PICの4pin:MCLR/RA3(ICPS-1pin)に接続したSW(このSWは手持ちのスライドSWにした。)をON側:Loにセットし
USBケーブルをPCのUSBソケットに挿入。尚、4pinは、RA4入力として機能。
B ケーブル挿入後にSWをOFF側:Hiにすると、「Device attached」と表示される。
C ブートアプリ左上の「Import Firmeware Image」ボタン
をクリック。
「Open Hex File」ダイアログが開くので、PICに書き込むユーザープログラムのHEXファイル:DDS_MNL_Only.hexを
HIDBootLoaderに読み込む。
読み込みに成功すると読み込んだファイル名が表示され、
「Program/Verify」ボタンがアクティブになる。
D 「Program/Verify」ボタンをクリックすると書き込みが開始され, PICの書込みに成功すると
「Completed Successfully」と表示される。
E 「Reset Device」ボタン をクリックするか、USBケーブルを外すとDevice Detachedと表示されブートローダが切り離される。
■ 2020.9.10
・UNV基板の実装が完了した。
■ 2020.9.11
・動作確認を行った。
稼働時の電源電圧は、5.22V・3.32Vだった。
問題無く動いているようである。
@ 周波数設定は、最小0Hzまで出来るが、低域は、50Hzからフラットの仕様になっている。
A 最大設定は、20MHzで、ここまでフラットの仕様。
B P_ON時は、800Hz・出力:OFFになっているので、ON/OFF
SWを押して、ONにする。
以下に、その時の出力を自作Fカウンタで確認している写真を示した。
C その他、いくつかサンプルを撮ったので、以下に示しました。
・<感想・所感>
@ 周波数可変最小ステップは、1Hzで可変出来ました。
チャタリング処理は効いていますが、速めにロータリエンコーダを回すと、4Hzほど飛ぶことがあります。
ゆっくりと逆回しで戻せば問題無く、-1Hz出来ました。
A 液晶画面の表示構成が、分かり易くて良いと思います。
特に、単位の"M"と、"K"を、対応する桁の下に入れてあるのは読み易くて良いと思います。
B カーソルの移動処理もスムースで問題ないです。
<回路図>
・こちらからどうぞ→ 「CQ_DDSスタンドアロン化」