MP3PlayerKitを作る(6)
wavの転送の件で、ちょっとあきらめつつあったとき偶然ELMさんのページを発見。
ここでなんと8pinのAVRでWAVを再生していた。しかも、PWMでステレオになる。
48K16bitもOKらしい。
ただ、8bitの再生になるらしいが...。
この方はいろいろな活動をされていて本当に凄い。
それでも、WAVとなると読み込み時間がネックと考えていたので、この製作記事は凄く興味があった。
ソースを見ていると
btr = (sz > 1024) ? 1024 : (WORD)sz;
res = pf_read(0, btr, &rb);
とある。これだと0番地から1024Byte読み込んでしまう。
ところが、ATtiny85は512ByteのRAMだし、そこにはワークもある。
不思議に思ってさらに追っていくと...
なんと読み込みと同時に再生バッファに転送していた。
・mmc.cに
fwd_blk_part(dest, ofs, cnt);
というのがあり
・asmfunc.Sで
それをFIFOに入れ
さらにタイマでPWMで出す
という仕組みのようだ。
ううむ。少ない容量のRAMでこういうやり方もあるのか...と感動を覚える。
Linuxだ!2CPUだ!DMAだ!CPLDだ!と騒ぐ自分が恥ずかしい。
ELMさんのFATFSを使えばいいのか。ここにベンチもある。
・「読む」というより「読んでFIFO(リングバッファ?)」
・タイマ割り込みで「FIFOからVS10XXに出力」
とすれば解決する...ような気分になってきた。
次の課題として考えるべきなのは
・VS10XXに出力
にWaitを入れないことだろう。
ちょっと(そのうち)試してみる気になってきた。
やはりELMさんは凄い人だ。
コメントはありません