スレーブのATtinyが何をすればいいのかというと、アナログシンセの制御方法にあやかって、CV(周波数)とGate(音量)を受け取って波形を出力する。
図でいうと「(3)データ」でCVとGate(とその他もろもろ)をマスターからスレーブに送る。ラッチの間隔がサンプリング周波数になる(と思う)
スレーブは与えられたCVとGateから出力波形を計算して「(2)ラッチ」が送られた時にPWMで電圧を出力する。
いっぱい並べるので(5~7個ぐらい?)ピン数が多いと実装がしんどそうなので8Pinぐらいがよさそう。
矩形波はPWMで大丈夫そうだが、ノコギリ波もやりたいのでDDSの波形生成も実装したい。内蔵のFlash ROMが足りない場合は外付けでEEPROMをつけて、それぞれのスレーブで共有して要求にしたがってSRAMに読み込んで使う。
電源に2PIN、I2Cに2PIN、クロックに1PINとして、のこりは3PINなので8PINのマイコンを使おうと思うとこれでぎりぎりだ。
ATtiny13のスペック
ATtiny13のFlash ROMは1kBなのでプログラムで消費する量を考えると128サンプルぐらいにしないと波形テーブルは乗せられなそうだ。
I2CのEEPROMを使おうと思っても、USI(シリアル通信用の基本のハードウェア)もない。
調べてみるとATtiny13にはタイマー(PWM)が1つしかない。PWM出力でTimer1個、波形生成でTimer1個、合計2個使いたいたいのでちょっと困った。
→Timerはやりくりすれば1個で済ますこともできそうだが、自信なし(^q^;
マイコンの選定
8Pinであまり高くないやつ
ATtiny85
秋月で160円、マルツで215円
PWM用のTimerと別にもう一つTimerがついている。USIあり。表面実装タイプもあり(実装面積を節約できそう)。
LPC810
秋月で80円、マルツで75円
まだ使ったこと無いけどARM CortexM0でこの値段は安すぎる気がしないでもない。一度使ってみようかな。
0 件のコメント:
コメントを投稿