AVRでFM音源を作っちゃおうというお話の続き。
MEGA8使って作ろうとか思っていたんですが、
よく考えたら
http://picavr.uunyan.com/avr_m_player.html
このボードにはtimer1を使った音声出力回路を
組み込んでいたのを思い出した!すっかり忘れてた。
timer1を、モード5(高速PWM、8ビット、
TOP値=0xFF)に設定すれば、256段階
のアナログ出力が簡単に出来るはず。
(せっかくの16ビットタイマーを8ビットだけ
しか使わないのは少々もったいないけど、そこは
目をつぶります)
20Mhzで256クロック分(8ビット)なら、
音声出力データおよそ1回につき2回のパルスが
出力される感じ。およそ80KHz。
うん、まぁこれならなんとなくいい感じじゃない?
それに、今から何か作るならやっぱり第3世代の
CPUをチョイスしたいもんなぁ…。
今、このPLAYERボードにはMEGA88を
挿してあるので、これをそのまま使ってしまおう。
メインアンプやスピーカーのこと考えなくても
いいし。うん、この線で行こう。これが一番
ラクチンだ。
あ、ローパスフィルターの周波数を10KHzに
設定していたんだったなぁ…。
まぁ、とりあえずいいか。音さえ出れば。
一つ問題は、AVR-studioのタイマー関係
のシミュレーションにはバグがあるって言うこと。
高速PWMに設定しているはずなのに、なぜか
フェーズコレクトPWMとしてシミュレーション
されちゃうんだよなぁ…
早く直してくれると良いんですが… ATMELさん。
まぁ、1クロック単位のシビアなタイミングが求め
られる訳じゃないし、万一フェーズコレクトモード
で動いちゃっても、音質は多分変わらないでしょう。
細かいこと考える前に、まずは音を出すのが最優先
だな。
ある程度纏まったものをアセンブラで作る時って、
結構細かいところまで明確化して、メモリマップ
とレジスタの使用用途を明確にしないと、なかなか
手が動かないんだよなぁ。
まぁ、ちょっとずつ頑張ろう…。
|