2)AVR用ファーム(DAC) |
||
|
DAC用のファームです。 オリジナルのMiniDDSは以下のサイトをごらんください。 http://www.myplace.nu/avr/minidds/index.htm 今回作成したものはDAC使用なのでDACのLATCHのため、LOOPを12サイクルへ改造しています。 使用部品 水晶 : 18.432MHz (10MHz等も可、水晶周波数は変更しても良いです) AVR : ATiny2313-20PU DAC : AD557JN (ラッチ機能使用) シリアル : MAX202CPE 実験用LPF : C=1500pF 、 R=10K (カットオフ10KHz) R2Rラダー抵抗を使ったオリジナル回路ではDAC出力間隔の1LOOPは9Cycleですが、DACをラッチするために、12Cycleになります。そのため波形の解像度が若干落ちます。 R2Rラダー抵抗によるminiDDSの作成記事はkumanさんのサイトでどうぞ。ラダー抵抗ではノイズが少ないです。 改良点 DAC出力をLATCHするための信号を2313のPD6に出力として追加
原理 360度の円を思い浮かべてください。その円を256分割した角度に波形テーブルの値が存在します。 ある周波数を設定する場合、円を進むΔθ(図中:黒い矢印)を1LOOP毎に加算していきます。このΔθは256分割よりも小さい角度で出力周波数により計算されます。256分割の各値n+xを超えていれば、新しい波形の値がDA出力されます。 step(図中:青刻み)はAVRの水晶周波数と1LOOPのサイクル数により計算されます。
波形の1周期分をカウンターの24ビットに割り振っているので、最小カウント1がstepになると思われます。 DACはLATCHがないとデータが変化途中でも出力してしまいます。これは、ビットエラーとなって現れてしまうので、データが確定してから出力するようにLATCHをします。
|