2018年9月8日から2018年9月4日までの日記を表示中
2018年 9月 8日 (土)
■CPS2
ひとまず、Arduinoの代わりにPICを使うことを考えているのですが、これまで一度もPICを触ったことがないので、色々調べるところから始めてみました。
なるほど、コード自体は、簡単にCで書けるのね。って、開発するには、結構本格的なIDEを入れないとダメなのか。仰々しいなぁ。とりあえずインストールしてみましたが、早速IDEアレルギーが・・・w。Arduinoのシンプルさ・お手軽さとはだいぶ違う感じですね。
次に、ArcadeHackerさんのArduinoのプログラムが、中で何をやってるのかも調査。意図的なのか何なのか、若干わかりにくい書き方してますが、コアとなる部分はこんな感じのようです。
- 初期化
- SETUP1 = LOW
- CLOCK = LOW
- DATA = LOW
- SETUP2 = HIGH
- アンロック処理
- SETUP1 = HIGH
- SETUP2 = LOW
- 100msec待機
- キー書き込み
- 20Byteのキーを先頭から1Byteずつ取り出し上位bitから1bitずつ取り出して書く
- 書く際は、DATA信号をビットに合わせて設定(1ならHIGH、0ならLOW)
- 同時にクロックを動かす
- CLOCKをHIGHにする
- 25msec待機
- CLOCKをLOWにする
- 25msec待機
- ロック処理
- SETUP1 = LOW
- SETUP2 = HIGH
- 25msec待機
これなら簡単にPICのコードに落とせそうですね。というわけで、Cで書いて、PIC12F509向けにコンパイルしてみました(何でPIC12F509かというと、秋月電子で1個50円と大変お求めやすい価格で売られているため)。果たして、実機で期待通りに動くのか・・・。
2018年 9月 7日 (金)
■CPS2
初期型のサブボードで、M/Bに載せた状態でキーが書けない理由が判明しました。ArduinoのGNDの取り方に問題がありました。今まで、基板の外側で、基板環境の電源のGNDを分岐させてArduinoのGNDと繋いでいたんですが、これが良くなかったようです。初心に返って、Arduino側のGNDも、CN2 C31と繋ぐように変更したら、書けるようになりました。そして、このとき、CN2 C31とArduinoの間の線を長くすると、またダメになったりするようです。
というわけで、Arduinoを利用した、電池レス化のコンセプトムービー的なものを撮影してみました。
よくわからないかもしれませんが、簡単に解説すると、こんな感じです。
- サブボードには電池なし
- キーが飛んだ状態
- Arduinoは基板と同じ電源で動作(基板と同時に起動)
- 基板が起動すると電池切れなので白画面
- しばらくしてArduinoが自動的にキーの書き込みを開始
- キーの書き込みが終わると、Arduinoは動作を止め、ゲームが起動
これ、Arduinoでやっても、あんまり面白くないですが、これをもっと小さくて安いデバイスでやれるようにして、さらにそれをサブボードに内蔵しちゃうと、きっとクールな感じになるはずw
[コメントを書く]
2018年 9月 6日 (木)
■Google Home Mini
Google Home Mini、Yahoo!ショッピングでまあまあお安い感じだったので購入してみました。こっちの方が、Amazonのやつよりはまだ日本語が自然な感じかな。何に使えばいいのかはよくわかっていませんが・・・w
[コメントを書く]
■CPS2
先日、後期型のサブボードをM/Bに装着した状態でキーを書き込むことで、書き込み後にリセットがかかって勝手にゲームが起動することを確認しました。そして、このとき、電池はなくても問題ありませんでした。
この事実が何を意味するかというと、起動後、自動でキーを書き込んで、その後待機状態となるような処理をするArduino代わりのマイコン(たとえばPICあたり)をサブボード内に埋め込むことで、CPS2のサブボードを、ROM改変なしで完全電池レス化することが可能となるということになります。
というわけで、今後はこれが実現可能かどうか、調査を進めていきます。ひとまず、今日のところは、初期型のサブボードでもM/Bに載せたままの状態でキーを書けるかどうかを確認するところから。CN2にピンを立てて、M/Bに装着した状態で、上から流し込みます・・・って、いきなり失敗したし (´・ω・`)。うまく書けないっすね。
もしかして、ArcadeHackerさんの手順に出ている、CN7 B23につなぐGNDが関係してるのかも・・・と思って調べてみたんですが、このピン、サブボード単独だと、どことも繋がっていないような・・・? CN1 C24経由でM/Bには繋がっていて、M/B内ではR43 (10KΩ) でプルアップされているので、一応安全にGNDに落とすことはできそうですが、サブボード単独ではまったく意味がないことを考えると、無関係そうです。実際、GNDに落としても変化ありませんでした。さて、何だろうなぁ。
[コメントを書く]
2018年 9月 5日 (水)
■CPS2
Arduino側でクロック出し続けるようにプログラムをいじって、オシロでじっくり観察してみました。まずはNGなケース。DATA信号と同じ長さの線で、CLOCK信号をCN2に繋いています。
そして、OKなケース。こちらは、CLOCK信号だけ、例のジャンプワイヤーを数珠つなぎにした状態にしています。
OKなケースとNGなケースを比べてみると、クロックが立ち上がった後の信号の上下に差がある感じ。NGな方だと、OKな場合に比べて上下の揺れが大きいです。そこで、試しにダメなパターンで、CLOCK信号の配線の途中に75Ωの抵抗を挟んでみました。
レベルは下がりましたが、信号自体は超安定しましたw
そしてキーの書き込み自体も安定しました!やった!
キーがうまく書けなかったのは、おそらくサブボード内のCLOCK信号の配線が細くて長いせいで、反射が起きて信号に許容できないレベルのノイズが乗ってしまっていたことに起因すると推測されます。そして、CLOCK信号の入力位置に適当な抵抗を入れたことで、反射の影響が緩和され、安定してキーが書けるようになったのではないかと(いわゆるダンピング抵抗というやつ?)。スッキリしました。これで次のステップに進めそうです。
というわけで、93646B-3や93646B-4にキーがうまく書けない場合は、ArduinoのCLOCK信号をCN2 A31に入れる前に、75Ωとかそれくらいの適当な抵抗を挟んでみると良いようです。
ちなみに、オシロの波形が写真なのは、付属の波形キャプチャツールをWindows 10のPCにインストールできなかったからだったりします。せっかくのデジタルオシロなのに・・・(´・ω・`)
[コメントを書く]
2018年 9月 4日 (火)
■NES Classic Edition
[コメントを書く]
■CPS2
今日も93646B-3/4で、何が原因でCN2から他の信号と同じようにクロックを入れるとうまくいかないのかを調査してみたり。色々試している中で、以下のことがわかってきました。
- Arduino側で、ソフト的にCLOCK信号にディレイを入れて、DATA信号の変化とタイミングをずらすようにしてもまったく変化なし
- DATA信号のプルダウン抵抗4.7kΩの位置を93646B-7とかと同じにDL-1827の近くに設置しても変化なし
- CLOCK信号の線が長ければ、DATA信号の線を同じくらい長くしてもうまく書ける
ということで、どうもCLOCK信号とDATA信号の間には、あんまり関係がなさそうな気がしてきました。どっちかというと、CLOCK信号単独の問題?
[コメントを書く]
2018年9月8日から2018年9月4日までの日記を表示中
[コメントを書く]