空を見上げて
トップページ » オーディオ » メモリプレヤー » USBプレヤー(9)

USBプレヤー(9)

H8のDMAでなんとかwav再生はできたが、ブロック転送の欠点もある。
以下はその対策というか...。

1.ファイルの最終にゴミが残ってそれを転送してしまう。
 これはバッファを0クリアした。
 最初、プログラムクリアしたらwavでこけてしまった。(サイズによるが)
そこでクリアしたバッファを用意してそれをDMA転送してクリアした。(^^!
さすがにDMAは高速で瞬間的に終わってしまう。
なんせH8の外付けで2MByteもあるわけで、8Kごときを沢山とってもおつりだらけだし。

2.次のファイルのバッファクリア
 今度はVS00XXに残るデータの話。
よくわからないのだが、どうも最後のデータが残るらしく、2048の0を送るのが慣例らしい。
ソフトリセットでクリアしてくれてもよさそうだが、それがしきたりなのだろうか?
 これはバッファを2048クリアするためのコマンドをAVRに実装した。
データはH8なので、結局AVRは
・1クロックモード(XDCSはそのまま)
・32クロックモード(XDCS制御付)...使っていない
・2048クロックモード(XDCS制御付)=クリア用
・8192クロックモード(XDCS制御付)=DMA用
の4モードを搭載し、H8からの2bitで切り替えるようになっている。

確かに一番最初に音を出すとそういう感じの音がするような...。
でも、ハードリセットも出しているのだが...。

まあ曲間が一番時間が自由で、結局ここでいろいろ処理するのがよさそう。

3.音量調整で再生が止まる
 DMA中はAVRがXDCSを管轄していて、H8はわからない。そのためXCSを発行できない。
できるのはDMAが終わった時。ということは、次を送らなくてはいけないというか。
 まあmp3ならともかくwavでは厳しいものがある。
つまり
・転送終了を待つ
・ボリュームコマンドをかける
・転送を再開する
とやらなくてはならない。厳しいのはDREQとは無関係なこと。
 などとも思ったが、個人的にどうもデジタルボリュームが好きではない。
そもそもどこか電源を切っても覚えなくてはならないし、直感性がない。
 こんなの音量を最大に設定しておいて、出力にボリュームをつければ余計便利なような気がする。
別段ここでやっらないといけないこともなさそう。
 他にもトーンコントロールなどもそうか...。(つけてないが...。)

 ちなみに曲送り(戻し)はブロックで切ることができるので問題なし。
8Kぐらいだとレスポンスも良い。(mp3とwavでレスポンスが違うのも...。)

と割り切りも進んできた。(^^!

やっとスタンドアロンで動かす元気が出てきた。
で、LCDとSWとEEPROMをつけることにした。

by   at 09:00
トラックバック
このエントリーのトラックバックURL:

トラックバックはありません

コメント

コメントはありません

コメントを書く




保存しますか?


(書式を変更するような一部のHTMLタグを使うことができます)


Please enter the security code you see here