当初は基準周波数を 100[kHz] を目指していましたが、意外と余裕がなく 40[kHz]となってしまいました。サイン波のサンプルポイントは一周期で2000 としました。 DDSで構造を簡単にし高速動作をさせようとすると基準周波数を2の指数に したくなるのですが、都合のいいクリスタルが必ずしも手に入らないという 問題があります。そこでまず PIC の動作周波数を最高の 20 MHz とし、 20M を素因数分解してそれぞれの数値を決めていきました。
プログラムサイズが 1024 words ほぼ一杯(残り10バイト前後)になって しまったので機能別に4種類選べるようにしました。
発振周波数 | 周波数ステップ | 機能 |
1-10000[Hz] | 1[Hz] | スイッチによる周波数アップダウン |
1-10,000[Hz] | 1[Hz] | 外部同期(位相0度, 90度) |
0.1-6553.5[Hz] | 0.1[Hz] | スイッチによる周波数アップダウン |
0.1-6553.5[Hz] | 0.1[Hz] | 外部同期(位相0度, 90度) |
波形はこんなふうになりました。周波数カウンタの数値の単位は 0.1[Hz] です。
波形ではわかりませんが、周波数カウンタの
値には 1[Hz] の違いがきちっと出ています。
オシロのスイープ周期を遅くしていくと妙な波形が出てきます。
LPFなしのDDSならではでしょうか。
この PIC-DDS についての記事が トランジスタ技術 2002年 6月号 に掲載されました。ソースについては、そちらの ダウンロードサービス を御利用下さい。 また申し訳ないのですが、記事に訂正がありますの で、あわせてごらん下さい。