YMZ294で音が鳴らないときのチェック項目
一通り鳴らないやらかしをやったので、備忘録的に。
配線は間違っていないか
YMZ294以前の話というか基本中の基本ですが、何しろ線が多いので、よくミスります。例えば、Arduino NanoでPORTDを使用する時、D0とD1を逆にしないよう気を付けましょう。
また、ブレッドボードでの確認を最初にすると思いますが、配線が浮いていないか、導通しているか確認しましょう。
秋月で買った場合、C012100という水晶がついてきますが、脚を間違いやすいので、よく確認しましょう。
SO-GND間の抵抗
SOはソースフォロワだそうです。1KΩ程度の抵抗をGNDにつながないと、電圧が変化せず、音が鳴りません。
WRCS, A0
レジスタアドレスやレジスタ値を変更するときは、以下の手順で行います。
- /WR /CSをLOWに落とす
- A0やD0~D7のLOW/HIGHを設定
- /WR /CSをHIGHに変更
/WR /CSがLOWでセットアップ、HIGHでホールドということです。ホールド時に値を変更しないようにしましょう。
また、A0はLOWでレジスタアドレス、HIGHでレジスタ値です。逆にしないよう注意しましょう。
ボリューム、ミキサー、楽音
出力したいチャネルのボリュームを設定しましょう。チャネルAの場合、レジスタアドレス0x8に対して、0xfを書きましょう。レジスタ値を0x10とするとエンベロープモードになりますが、エンベロープは直感的にわかりにくい上、音が鳴らない原因にもなるので、音出し確認までは避けた方が無難です。
ミキサーの設定(0x7)は、鳴らしたいチャネルのビットを0にします。チャネルAのみを出力するのであれば、とりあえず0x7に対して0x3e(=0b00111110)を書き込みます。
楽音の設定は、チャネルAの場合、鳴らしたい音をレジスタ0x0, 0x1に書き込みます。秋月の資料にならって、0x0に0x1c, 0x1に0x1を書くのがとりあえず良いかと思います。
ソフト的には、これらボリューム、ミキサー、楽音の設定が最低限必要です。