2015年11月21日土曜日

ATtinyをいっぱい並べるオシレーターの妄想

ATtiny13のデータシートを眺めながらもう少し妄想。


スレーブの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でこの値段は安すぎる気がしないでもない。一度使ってみようかな。