楽天市場
[無料でホームページを作成] [通報・削除依頼]

続PIC10F322 Ring-DDS

続Ring DDS

2013.11.26 本文修正

PIC10F322のリングオシレーターを用いたDDS バージョン1.2です。

NCOを固定デューティサイクル(FDC)モードで使用していますので、
上限周波数は2.5MHz程度(個体差あり)となります。

通信にTX=RA1,RX=RA3を使用します。発振出力はRA0(CWG1A)です。
RA2は参照入力でリングオシレーターの源クロック周波数を計測しています。
※「AN592に関する一考察」に記載のアルゴリズムを使用しています。
通常はRA0とRA2はショートさせた状態で使用します。

<前回からの変更点>
◎RA1にクロックオシレーターを接続可能なようにピン割付けを変更しました。
 今回のバージョンでは発振信号はRA0(CWG1A)より出力されます。
◎従来のターミナルソフトからの操作に加え、専用の制御プログラムからも制御できるようになりました。
◎プログラムの構成、考え方は前のバージョンと一緒です。

img_20131126-213123.jpg

回路図
img_20131126-213205.jpg

本ページに記載のソースコードを削除し、最新版を以下にアップしなおしました。
ダウンロード先

Bequest333のページ(別館)

http://hp.vector.co.jp/authors/VA058115/

https://drive.google.com/file/d/1CnWRJCkNBC0PPvhfx1jKaj-HRpxrSFH4/view?usp=drivesdk





以下は一つ前のバージョンの情報です。

<前回からの変更点>

前回のプログラムでは
壱.リングオシレーターの源発振周波数と発振周波数から分周値を算出。
弐.算出した分周値からNCO1INCH:NCO1INCLレジスタを設定。
の2ステップで、NCO1INCレジスタ値を決めるのに整数割り算を2回使用していました。

今回のプログラムでは整数割り算の切捨て誤差を小さくするため
被除数48ビット、除数24ビットの整数割り算を使用し、割り算の回数も1回に変更しました。


リングオシレーターの源発振周波数をF(Ring)、分周後の周波数をF(Div)としたとき
固定デューティサイクル(FDC)モードでのNCO1INCレジスタの値は以下の数式で表されます。

NCO1INCH:NCO1INCL = (2 * 0x100000 * F(Div)) / F(Ring)

実際には上式の被除数、除数とも1/256の値を使用しています。



<周波数計測例>
上から2MHz,1MHz,500kHz,100kHz (別ページで記載の周波数カウンタPart2を使用)

img_20130205-002405.jpg

img_20130205-002435.jpg

img_20130205-002502.jpg

img_20130205-002528.jpg















































































































.