 
 
 
 
当初は基準周波数を 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] の違いがきちっと出ています。
![256[Hz]](c0108141922ms.jpg) 
![1024[Hz]](c0108142010ms.jpg) 
![4096[Hz]](c0108142110ms.jpg) 
![8192[Hz]](c0108143142ms.jpg) 
![9999[Hz]](c0108141322ms.jpg) 
![10000[Hz]](c0108141142ms.jpg) 
オシロのスイープ周期を遅くしていくと妙な波形が出てきます。
LPFなしのDDSならではでしょうか。
![8192[Hz]-1](c0108143142ms.jpg) 
![8192[Hz]-2](c0108143204ms.jpg) 
![8192[Hz]-3](c0108143226ms.jpg) 
![8192[Hz]-4](c0108143250ms.jpg) 
![8192[Hz]-5](c0108143320ms.jpg) 
![8192[Hz]-6](c0108143400ms.jpg) 
この PIC-DDS についての記事が トランジスタ技術 2002年 6月号 に掲載されました。ソースについては、そちらの ダウンロードサービス を御利用下さい。 また申し訳ないのですが、記事に訂正がありますの で、あわせてごらん下さい。