DDS制御方法 最初に判らなかったのが、秋月DDSを制御するシリアルデータ−はソフトでどうやって作るの? からはじまりました。 DDS VFO制御のアセンブラソースは各OMのHPでも紹介されていますが、JE3JLB OMのソースを参考にさせていただきました。(現在 は更新され公開されていないようです)。 DDS制御信号作成 秋月DDSのデータ−シートでは、CLOCK,DATA,STROBの3ラインで制御しており、この信号をPICのポートから出力すればいいよう です。 まずCLOCKは、一定サイクル毎に"1""0"をポートに出力すれば実現できそうです。PICスタートした頃LED点滅プログラムに同じ ですね。 次にDATA、"8bitのデータ−をシリアルに読み出すのはどうするの?"が疑問でしたが、DATAを左シフトして押し出された上位ビッ トを"1/0"判定し、"1"ならポート出力を"1"にする。"0"ならポート出力を"0"にすることで、シリアルデータ−としてポートから出 力できます。 最後にSTROBは、DATA送信後一定時間"0"を出力すれば良さそうです。 |
ロータリーエンコーダーの検出 ロータリーエンコーダー(以下RE)の検出にも何通りかのアルゴリズムがあり、またREにも秋月のメカニカルタイプやオムロンな どのフォトタイプなどがあります。いずれもA B出力が回転方向に応じて図のように変化します。 図をみると1パルス内に4モードの位相変化がありますが、秋月のREは1パルス毎にクリックがありクリック途中で停止させなけれ ばならないのでちょっと使いづらくなります。 回転検出のアルゴリズムは、「ロータリーエンコーダー回転検出」などをキーワードに検索すればいろいろな方法を見つけること が出来ます。 ここでは、タイムT0時とT1時のA B出力を比較し不一致なら回転したと判定し、次に回転方向を判定します。T0とT1の時間差を 最適化することによりチャタリング回避や操作フィーリングが変化します。秋月のREなどには1〜5ms程度、フォトタイプには1ms程 度が適当です。 次回は全体のソースを作成します。 |