8bitDACだと?
別の記事でPWMのデューティを8bitで増減させて正弦波にしていた。ところがPIC16F1705なら8bitDACを(PIC16F1769なら10bitDACを)持つので、さらに滑らかな正弦波(または任意波形)を出せる。
先のことを考えてちょっと心が折れたので、ここではMCC Classicを使って楽をさせてもらった。FOSCはPLLを使って32MHz、TMR2モジュールは1/4プリスケーラで32μs割り込み(31.25kHz)、DACはDACOUT2にモニタ用出力を、OPA1でDACを受けてユニティゲイン設定としてRC2に出力した。この他にオシロスコープの同期用にトリガー信号を出力するようにしたが、ジッターがあることが明確になっただけだった。
RC2の先には2段のRCフィルタを入れているが、カットオフが8〜10kHzくらいに設定されている。
正弦波を出す
下図は波形テーブルに正弦波を入れた時の様子だが、上(C2、水色)が正弦波出力、下(C1、黄色)がトリガーである。ほぼ440Hzで出力されており、そうなるようにOSCTUNEを調整した。時間が経つとそれなりに変動する。
8bitDACで変調信号はなく、一定のサンプリング周波数(31.25kHz)なので固定のフィルタで落としやすいことから、それなりの高品質の正弦波が得られている。
プログラムの内容的にはMIDIノート番号の0から127まで出せるようになっており、最大の127だとDDSの仕組み上かなり歪んで小さい出力になってしまうが、周波数は正しく制御される。
任意波形出力
矩形波、鋸波、逆鋸波および三角波など、プログラムチャンジを受けると変更できるようにしてある。
MIDI対応
USARTも31250bpsのMIDIデータを受けられるように初期化されており、MIDI信号のパーサーとゲート変換をやればシンセサイザーのDCOとして機能できるかもしれない。夢が広がりんぐw
投稿者の人気記事

-
akira.kei
さんが
前の日曜日の18:58
に
編集
をしました。
(メッセージ: 初版)
-
akira.kei
さんが
前の日曜日の19:01
に
編集
をしました。
ログインしてコメントを投稿する