YMZシールドの基板設計
お疲れ様です。
前に基板化したYMZ294をさらにシールド化したい事をPOSTしましたが、何も考えずに半田付けを開始してしまうと、線の取り回しやら、部品の位置やら、後工程になって色々と大変になる事が想定できます。
なので、事前に問題が無いことを確認する意味も込めて、基板の図を書いてみました。
シールド基板の図
基板は、普通の60円のC型片面ユニバーサル基板を使います。これをシールドとして使うため、下記2つのサイトを参考にさせてもらいます。
左上にYMZ294、右上に4MHz水晶、左下にLM386、そして右下に半固定抵抗を置いてます。あとはコンデンサと抵抗を少々。どう頑張っても線が線を飛び越えてしまう箇所が出来てしまいます。
あと、シールドの下の部分にステレオジャックをくっつけようと思います。
どう頑張っても、接触してほしくない線と線が交差してしまうため、結構な数のジャンパーが必要になります。こんな時のためにエナメル線を買っておけば良かったと後悔。
部品の配置、配線、基板のサイズだけ与えると、最短の配線と最小のジャンパで自動生成されるツールが欲しいです。
ライブラリの改造
上記の配線では、Arduinoのデジタルポート0~7番をYMZの11番~18番に挿す事になりますが、元々のArduinoのデジタルポート0~7番は、YMZの18番~11番に、逆に繋げていました。よって、これだとおそらく正常に動作しません。
ライブラリを見てみると、最終的にデジタルポート0~7番を操作しているのは、このあたりです。
void YMZ294::set_register(byte addr, byte value) { // addr digitalWrite(WRCS_PIN, LOW); digitalWrite(A0_PIN, LOW); PORTD = addr; digitalWrite(WRCS_PIN, HIGH); // value digitalWrite(WRCS_PIN, LOW); digitalWrite(A0_PIN, HIGH); PORTD = value; digitalWrite(WRCS_PIN, HIGH); }
この PORTD という所にビット配列を流すことで、パラレルに0~7番を使っていると思われます。PORTDという定数は、Arduino 日本語リファレンスによるとやはりデジタルポートの0番~7番を指し示しているようです。
今までは0~7という順番が前提で各種プログラムが動いていましたが、最後の最後、このメソッドのPORTDへの書き込みの所だけ、ビットの順番を逆にすれば動くはずです。
という訳で、下のような感じで、「B10011111 を与えると、B11111001が返ってくるメソッド」準備し、
int bitReverse(int a) { int b = a; a = a & 0x55555555; b = b ^ a; a = a << 2; a = a | b; b = a; a = a & (0x33333333<<1); b = b ^ a; a = a <<4; a = a | b; b = a; a = a & (0x0f0f0f0f<<3); b = b ^ a; a = a <<8; a = a | b; a = a >> 7; return a; }
それを
void YMZ294::set_register(byte addr, byte value) { // addr digitalWrite(WRCS_PIN, LOW); digitalWrite(A0_PIN, LOW); PORTD = bitReverse(addr); digitalWrite(WRCS_PIN, HIGH); // value digitalWrite(WRCS_PIN, LOW); digitalWrite(A0_PIN, HIGH); PORTD = bitReverse(value); digitalWrite(WRCS_PIN, HIGH); }
こんな感じに仕込めば行けるはず。
以上、よろしくお願い致します。
関連記事
-
-
FM音源YM2203をArduinoで鳴らしたい #2
お疲れ様です。高橋です。 先に結論 FM楽曲及びPSG楽曲の演奏に成功しました。 …
-
-
YMZシールド 再作成
お疲れ様です。高橋です。 YMZのノイズが超気になる YMZ294用の音楽を聞く …
-
-
100均で買ったボリュームコントロール付きステレオ延長コードを、バブ型スピーカーに搭載してみた。
お疲れ様です。高橋です。 先日作ったバブ型スピーカーですが、実は裏側がとても汚い …
-
-
遠隔でRaspberryPi+DCモーターを制御してaitendoの名刺をクルクルさせる。
お疲れ様です。高橋です。 「猫×おもちゃ×動画×アプリ」のための要素技術として必 …
-
-
FM音源YM2203をArduinoで鳴らしたい #1
お疲れ様です。高橋です。 きっかけ 4月から現在に掛けてのコロナな最近、会社のと …
-
-
Pro Mini互換機でFF2戦闘音楽を使ったYMZ動作試験
お疲れ様です。高橋です。 電子オルゴールの最終形をイメージしてブレッドボード上で …
-
-
音階LED実装 #2
お疲れ様です。高橋です。 本日も昨日に引き続き半田付け。 今日の進捗 昨日の残り …
-
-
上司離着席検知システムと空巣検知
お疲れ様です。高橋です。 前回のおさらいと課題 前回の「上司離着席検知システムの …
-
-
4桁7セグLEDを基板に実装 完成
お疲れ様です。高橋です。 大失敗 前回、実体配線図を書いたこれ。 こんな感じに頑 …
-
-
満員電車内でのオナラと検知 #2
お疲れ様です。高橋です。 最近なんだか忙しかったので、なかなか物が作れませんでし …
- PREV
- 合理的な遅刻の言い訳生成アプリ。
- NEXT
- YMZシールドの基板設計 #2