電波な電波時計~その3
MEDIO write:
大体、プログラムも完成。機能的には希望点が全部入りました。
これで外部の回路がほぼ確定したので、小さく組んでみます。
AVRのTiny2313とEEPROM、抵抗3本、パスコンとスピーカー。
このままだと、1Mbitで12秒しか再生出来ません。と言う訳で、性能アップ!前から考えていたADPCM化改造計画を実行。
といって、調べ始めたのですが、ADPCMが数種類あるということだけで実際の演算がどの様なものかが詳細にわかる資料が見つからない....困った時は師匠に聞こう。
お見舞いを装って、入院中の非論理氏に質問に行きました。
ADPCMでも、AVRだったらcoefficient(係数)テーブルが固定・小さくて、演算負荷が小さいIMA-ADPCMが良いとか、実際のデコードのアルゴリズムとか、詳細はMSDNのRIFFファイル資料を見れば良いよ、とか教えて頂く。
(ついでに、病室のVAIOから「電波な」目覚まし音声も頂く。なんでこんなものがあるんだろう?)
先日の8bitPCM用プログラムのROM読み出しルーチンを改造(読み出し後、直デコードし16bitデータを32Byteバッファリング)し、PWMにて再生。
これで、ほぼ倍の時間24秒の再生が可能になりました。音声品質的にはPWMの9bit分解能がフルに生きるので、今までの8bitデータによるPCMの倍の性能です。(^^;
ちなみに廉価版として、256kbitのEEPROMでも6秒再生可能です。
短い様に感じられますが、(昨年末に某所で販売された)「ツンデレ・カルタ」の「『い』~いい加減、目覚まし時計で起きなさいよね。何で私が起こさなくちゃいけないのよ」が丁度6秒です。(笑
一応プログラム的にやったことなどを。
1.格納データ:IMA-ADPCM 11.025kHz 4bit モノラル(Windowsサウンドレコーダで作成、dataチャンク以外を刈り取り、ROMに書く)
2.デコード:PCM 11.025kHz 16bit モノラル
3.再生:PWMによるD/A変換 10.416kHz 9bit 3倍オーバーサンプリング(直線簡易補間) 5.5%ほど再生ピッチが落ちます。
4.WDTは不使用。というか、ADPCMソフトデコード部追加で2kWordが埋まってしまった罠。
タイマ1割り込みを使用し、一定時間(SEIKO用600mS、CITIZEN用960mS)入力変化が無かったらRESETピンをLに落とすという暴挙回路(ジャンパ一本)を追加。
5.入力検知ピン以外は機能を落とし、sleep状態(PowerDown動作)で待つ。この時の消費電流は0.5uA以下?(部屋のテスタでは計れなかったので)
6.発声中は、最大20mA程度使っている様子。
7.外部スイッチにより、最大7種(計1Mbit)の音声が選択可能。
外部スピーカタイプを試作したのですが、写真を撮る前に某真空装置開発会社・社長にお持ち帰りされました。
| 固定リンク | 0
「電子回路」カテゴリの記事
- ラズベリーのパイが無ければ…バナナのパイを食べてみる(2023.01.29)
- ラズベリーのパイが無いのでパインを食してみた(2023.01.28)
- ラズベリーのパイが無ければパインを食べればいいじゃない(2022.12.19)
- Beagle Bone Black(Green)のOSをビルドしてみる(Debian Bullseye)(2022.11.17)
- 現時点でのRaspberry PiのBluetooth Audio状況(2022.10.22)
コメント