小旅行、自然観察、自作、太陽光発電、無線の趣味、デジカメ


by susumuja

何とか動きました、DDS(AD9850) controled by AVR

どうしても納得がいかないまま、休み明けの火曜日と水曜日の夜に、いわゆるデバッグしました。結論としては動きました。
こんなに熱中したのは久しぶりです。疲れましたが充実感もありました、(笑)。
b0042882_2317618.jpg




写真は、コントロールワードとして、{&H00_20_00_00_00}のLSBから40ビットをシリアル転送したときに、100MHzのCLK_INで、12.5MHzを出力しているところです。

周波数はCLK_INを最大値として、それを32ビットで表現します。それに制御用データの8ビット(通常はオールゼロ)をDDSのICに送ります。1/0で表すと、00000000_00100000_00000000_00000000_00000000 を右から順に送ると12.5MHzになるということです。

原理的に半分の50MHzまでの周波数を出せるはずですが、実際に上げていくと30MHzを越えたあたりでカウンターの読みがおかしくなりました。フィルターを工夫すると、必要な41MHz--41.5MHzが作れるかもしれませんが、おとなしく2逓倍器をつけてやるつもりです。
カウンター測定では14Hz高めに出ていますが、実用上は100Hzステップで使うつもりですから、極めて安定・確実だといえます。

原因は複数あって、最終的な確認までしていませんが、もともとハードもソフトも正しかったのに、SHIFTOUTコマンドの使い方が間違っていたようです。
これはデータ送出ポートと、そのときのクロック出力ポート、送りたいデータの指定、続いてクロックのエッジの選択(立ち上りか、立ち下りか)、送りたいビット数、最後に遅延時間を指定して使います。
データとクロックのポートの配線を入れ替えたら動き出しました。たまたまportd.1をすでに使っていたので、これを跨いで使ったのですが、それでは動きませんでした。
 data:portd.0 clk:portd.2 ⇒ data:portd.3 clk:portd.2
隣りあわせで指定しないと具合が悪いという可能性があります。
b0042882_2325866.jpg

いずれにしても、DDSカードの出力アンプ(MAV-11)が壊れていることもあり、修復とこれを使ったVFO、さらに50MHzのトランシーバーに組み込むという作業はずっと先に遠のきました。
まず部品の確保から始めなければなりません。
[PR]
by susumuja | 2008-11-25 23:40 | 無線・工作