アマチュア無線や電子工作,バイクの話などを徒然なるままに書き散らすメモ程度のblogです.


by jq1ocr

【AVR】低周波発振器

8bit の R-2R ラダーで AF の発振器を作ろうとしています.ATmega328P を内部 8MHz,CKDIV8 を OFF,抵抗は精度 1% のものを使いました.最初は何も考えずに sin 関数に1〜360 deg を1度おきに計算させて D/A というようにしてみたらこんな感じになりました.(math.h を include しなくてもコンパイル通るのは知らなかった)
d0106518_1284512.jpg

波形は良いですけど周波数がなんと 1.78Hz です.可聴域を大分下回りますねぇ.苦笑 計算させながら D/A するのは無理かなとは思ってたけど,ここまで遅いとは思いませんでした.(もちろん作為的な wait なし)

次に 1 deg 刻みで最初に計算しておいたものを配列に入れ,そこから読み出しながら D/A するようにしたのがこちら.
d0106518_112586.jpg
1.48kHz ですか.思ったほど速くないですねぇ.周波数の調整を2πの分割数で決める方法で 1kHz くらいにしてみたのがこちら.
d0106518_115750.jpg
12mrad くらいのステップです.まあ悪くないかな??

他に三角波も出して見たのですが,インクリメントの方向(正負)で速さが違うことに気づきまして,他の波形を出すにも最初に配列に入れて置いた方が間違いなさそうだというのが今のところの結論です.みなさんの作例を見てもそうなっているのは,そういう意味だったのでしょうか?
[PR]
by jq1ocr | 2012-05-28 01:39 | マイコン・電子工作 | Comments(0)