▼ コメント記入欄はページの下の方にあります。 ▼
|
▼ 308 : 2009年9月5日(土) 20:33:43
|
カテゴリ: 設定なし
|
|
>>>307 のその後。使っているチップは同じだけどコードを見直して機能的に大きく発展。
ATMega88にはATTiny2313が担当していたオーディオデータの処理を移行して、その隙間にレベルメータやチャンネル選択の処理を割り込ませる感じで実装。>>>307に書いた通り、けっこうnopが多かったのでそこに実装できたわけです。 DAIからのクロックでDAIと同調して動くので、32kHz〜48kHzのサンプリングレートだと、クロックは8.192MHz〜12.288MHzの可変。96kHzだとクロックが24.576MHzになってATMega88の許容範囲を超えるので、どうなるか不明。
ATTiny2313のほうはそのデータを受け取って液晶に表示したり、WM8805と通信して状態を液晶に表示したり、ユーザのボタン入力に応じて入力やチャンネルを切り替える機能を実装。液晶は毎秒16回更新してるのでけっこうぐりぐり動きます。クロックは4.19MHz。
DAIをユーザがコントロールしてオーディオデータをDACに送るまでの処理がすべて実装できたわけで、旧DACでは同じことをするのにチップが6個あったのが、これで一気に2個に。
すごいのはやはりAVRの処理能力で、レジスタが32個もあるので複数の処理を同時並行的に書いても問題ないのですな。PICはワーキングレジスタ1個だけなのでとても無理。加えて、内蔵されている周辺回路が多いので通信が多重化できる。
今回の実装だと、オーディオデータの処理には3つの通信系統が必要で、それぞれ (1)DAIからのデータ入力、(2)DACへのデータ出力、(3)レベルメータとユーザコントロールのデータの入出力。 これをそれぞれソフトウエアでパタパタやっているととても間に合わないので、シリアル通信モジュールが都合2個使えるATMega88はとても好都合。上記のうち(2)と(3)はそれぞれUSARTとSPIに任せてしまったので少ないコードで間に合った。
ちなみに、ATMega88に入っているプログラムコードはたったの640バイト程度。これならATTiny2313で済ませたいなと思ったのだけど、ATTiny2313のシリアル通信モジュールはATMega88のモジュールに比べて機能が少ないので、ATMega88を使わざるを得ないのでした。ATMega48とか売ってないしな。
一方液晶をぐりぐり動かしているATTiny2313はプログラムコードが2000バイトくらいになっていて、とてもギリギリ。とはいえ必要な機能はさしあたり実装したので、むしろぴったりといったほうがいいかもしれない。
あとはこれを基板に実装すれば完成。さしあたり今のDACのDAI基板とユーザコントロール基板を入れ替える予定。 |
|
|
|
|
■ 一覧へ戻る ■
|
 |
 |
 |
| -- じゃんぷ -- |
☆ 最近の10件
|
| 2009年9月 |
| 日 |
月 |
火 |
水 |
木 |
金 |
土 |
| * |
* |
1 |
2 |
3 |
4 |
5 |
| 6 |
7 |
8 |
9 |
10 |
11 |
12 |
| 13 |
14 |
15 |
16 |
17 |
18 |
19 |
| 20 |
21 |
22 |
23 |
24 |
25 |
26 |
| 27 |
28 |
29 |
30 |
* |
* |
* |
| << 8月 |
|
|
|
|