読者です 読者をやめる 読者になる 読者になる

キノコの自省録

テクノロジーとコンテンツの融合を目指して

YMZ294で音が鳴らないときのチェック項目

一通り鳴らないやらかしをやったので、備忘録的に。

配線は間違っていないか

YMZ294以前の話というか基本中の基本ですが、何しろ線が多いので、よくミスります。例えば、Arduino NanoでPORTDを使用する時、D0とD1を逆にしないよう気を付けましょう。

また、ブレッドボードでの確認を最初にすると思いますが、配線が浮いていないか、導通しているか確認しましょう。

秋月で買った場合、C012100という水晶がついてきますが、脚を間違いやすいので、よく確認しましょう。

SO-GND間の抵抗

SOはソースフォロワだそうです。1KΩ程度の抵抗をGNDにつながないと、電圧が変化せず、音が鳴りません。

WRCS, A0

レジスタアドレスやレジスタ値を変更するときは、以下の手順で行います。

  1. /WR /CSをLOWに落とす
  2. A0やD0~D7のLOW/HIGHを設定
  3. /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を書くのがとりあえず良いかと思います。

ソフト的には、これらボリューム、ミキサー、楽音の設定が最低限必要です。