テンキー操作でゲームで遊ぼう プレイステーション用キーボードアダプタ~ 完成編 ~ |
本体が完成したら、回路図を見て間違いがないか確認してください。特に電源のショートがないか要注意です。
PIC16F84もXC9572もキーボードもプレイステーションも装着しない状態でACアダプタをつなぎます。この状態ではフォトMOSリレーがOFFなのでLEDは点灯しません。ケーブルをプレイステーションにつなぎプレステの電源をONにするとLEDが点灯します。GNDと+5Vのライン(LEDの根本やJTAGコネクタの電源ピン等)にテスタをあて、5Vの電圧が出ているか確認します。つづいて、PIC16F84とXC9572のソケットの各電源ピンの電圧も確認します。さらにキーボードをつないだ状態で電圧を確認します。古めの大きなキーボードを使用する場合は、消費電力が大きいので電圧降下がないか注意してください。
電源を切って、万事OKならプログラムの書き込みを行います。
最新版 |
Keyboard Adapter for PlayStation ファームウェア等一式
|
旧版 |
Keyboard Adapter for PlayStation ファームウェア等一式
|
↑のファイルをダウンロードして展開します。
例 : C:\>lha x pskb
以下のファイルが作成されます。
pskb\filelist | ファイルの一覧 | |
pskb\pic16f84\pic16c84.h |
PIC16F84用ヘッダファイル |
|
pskb\pic16f84\pskb.asm | PIC16F84用プログラム | |
pskb\pic16f84\normal.key | 普通のキーボード用キーアサイン定義 | |
pskb\pic16f84\tk98w.key | エレコムTK-98W用キーアサイン定義 | |
pskb\xc9572\pskb.npl | XILINX WebPACK プロジェクトファイル | |
pskb\xc9572\pskb.v | XC9572用Verilog-HDLソース | |
pskb\xc9572\pskb.ucf | XC9572用ピンアサイン定義 | |
pskb\xc9572\test.v | シミュレーション用Verilog-HDLソース | |
pskb\design\pskb.ce2 | 回路図(BSch用) | |
pskb\design\pskb.lib | 部品ライブラリ(BSch用) | |
pskb\design\pskb.kbn | 基板アートワーク(kban用) |
PIC書き込みツールは別途用意してください。
pskb.asmのアセンブルにはTimo RossiさんのPICASMを使用します。Microchip社製MPASMでアセンブルするには若干の修正が必要です。
コンフィグレーションワードの値は 19h とします。
XC9572は本機のソケットに装着した状態で書き込みます。 XILINX社が無料で公開しているWebPACKという開発ツールとダウンロード用ケーブルが必要です。 |
ケーブルを接続したら、Webpack Project Navigatorを起動します。 プロジェクトファイル pskb.npl を開き、「XC9572 PC44」をクリックして、「JTAG Programmer」をダブルクリックします。 トランスレーションが終了すると、 EXEWRAP complete - 0 errors, 0 warnings. と表示されます、続いてフィッティングが終了すると、 NGDBUILD Design Results Summary: と表示され、JTAG Programmerが自動的に起動します。 |
書き込みを行うためには本機の電源がONになっていなければなりません。ACアダプタをつなぎ、さらに、フォトMOSリレーをONにするために、ケーブルをプレステにつなぎ、プレステの電源をONにします。 「Operations」「Program」を選択すると書き込みダイアログが表示されるので、そのままOKを押すと書き込みが始まります。 |
PIC16F84とXC9572のプログラミングが終了すれば完成です。
デフォルトのキー配置は下図のようになっています。もし気に入らなければ normal.key を書き換えて再アセンブルしてください。
本当はリセット回路を入れるべきなのですが、今回は付けていませんので、ごくまれにプレステケーブルを抜き差しして電源を入れ直さないと、動作しないことがあります。
どうしても動かない場合は以下を確認してください。
それでもダメなら...わかりません。オシロスコープが必要かもしれません。
手前味噌ですが、我ながら極めて素晴らしい作品ができた思います。^^;;;;;;;;;;;;;;;;
これさえあれば、シビアなタイミングを要求されるゲームでも難なく操作できます。(少なくとも私にとっては...)
また、CPLDを使った電子工作の題材としても最適だったのではないでしょうか。Webページを検索しても、個人でPICを使用している人はとても多いのですが、CPLDの作例はまだまだ少ないので、敷居が高いかもしれません。しかし、実際に何か作ってみると 74HC** 等のICをたくさん組み合わせて作るより、何十倍も簡単であることに気づきます。しかもワンチップマイコンといっしょに使うと、相互補完という意味でも非常に強い力を発揮できます。
願わくば、もう少し安くなって、アマチュア工作家な人たちがもっとCPLDを使うようになってほしいなぁ。
【2000-5-28】
アルミケースバージョンというのを制作したのですが、動作が不安定になってしまいました。しばらく使っていると突然入力を受け付けなくなってしまうのです。特に体がケースに触れているときに発生しやすいです。アルミケースなのでノイズには強いと思うのですが、触れると止まるということは、ノイズでは無く何か予測不能な発振が起きるなどして、回路を揺さぶってくれているのかもしれません。
いずれにしても、おそらく電源周りの問題だろうと、いい加減な見当を付け、パスコンを増やしたりしたのですが、改善される気配がありません。
もしかしてと思って、樹脂ケースバージョンで使った三端子レギュレータ(東芝製TA7805F)を付けてみたところ、なんだか軽快に動いている様子なのです。
どうも秋月で買った新日本無線製のNJM7805が怪しい感じがします。余っていたNEC製のμPC7805をつないでみると、これも正常に動いているようでした。NJM7805の個体差なのかもしれませんが、ソフト屋が本業の私にはこれ以上のことはわかりません。もしこのような経験をされた方がいたらご連絡いただけるとうれしいです。
まだ詳しく調べていないのですが、PIC16F84A-20がうまく動いてくれません。キーボードからのシリアルデータの受信のためのタイマ割り込みが、正確なタイミングで発生していないようです。なんだか割り込みの禁止/許可を頻繁に変更しているとPICが機嫌を損ねるようです。というわけでしばらくの間は「A」が付かないPIC16F84しか使えません。
PIC16F84A-20対策の修正を施したところ、三端子レギュレータとの相性問題も解消できたようです。以下の条件が満たされたとき動作が不安定になることがわかりました。