2000-6-16 更新
環境改悪ツール(?)
テンキー操作でゲームで遊ぼう

プレイステーション用キーボードアダプタ

~ 完成編 ~

→ 試作編
→ 制作編

電源投入

本体が完成したら、回路図を見て間違いがないか確認してください。特に電源のショートがないか要注意です。

PIC16F84もXC9572もキーボードもプレイステーションも装着しない状態でACアダプタをつなぎます。この状態ではフォトMOSリレーがOFFなのでLEDは点灯しません。ケーブルをプレイステーションにつなぎプレステの電源をONにするとLEDが点灯します。GNDと+5Vのライン(LEDの根本やJTAGコネクタの電源ピン等)にテスタをあて、5Vの電圧が出ているか確認します。つづいて、PIC16F84とXC9572のソケットの各電源ピンの電圧も確認します。さらにキーボードをつないだ状態で電圧を確認します。古めの大きなキーボードを使用する場合は、消費電力が大きいので電圧降下がないか注意してください。

電源を切って、万事OKならプログラムの書き込みを行います。

プログラミング

最新版

Keyboard Adapter for PlayStation ファームウェア等一式

XC9572

プレステケーブル側のSEL信号がHになったときに、内部カウンタを非同期リセットする処理を追加。

PIC16F84

キー配置テーブル(normal.key)に間違いがあったのを修正。

PIC16F84A-20で正しく動かなかったので対策。

シリアルの受信のためにRB0割り込みとTMR0割り込みを併用しているのですが、割り込みハンドラ内で割り込み制御レジスタ(INTCON)の内容を変更しても、その通りに動作が追従していないようでした。「A」の付かないPICではこのようなことはありませんでした。対策のため、割り込みハンドラを作り直しました。

旧版

Keyboard Adapter for PlayStation ファームウェア等一式

  • PIC16F84用 プログラムソースコード
  • XC9572用 Verilog-HDL ソースコード
  • 回路図(BSch用)
  • 基板アートワーク例(kban用)

↑のファイルをダウンロードして展開します。

例 : 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

PIC書き込みツールは別途用意してください。

pskb.asmのアセンブルにはTimo RossiさんのPICASMを使用します。Microchip社製MPASMでアセンブルするには若干の修正が必要です。

コンフィグレーションワードの値は 19h とします。

XC9572

ケーブル

XC9572は本機のソケットに装着した状態で書き込みます。

XILINX社が無料で公開しているWebPACKという開発ツールとダウンロード用ケーブルが必要です。


論理合成

ケーブルを接続したら、Webpack Project Navigatorを起動します。

プロジェクトファイル pskb.npl を開き、「XC9572 PC44」をクリックして、「JTAG Programmer」をダブルクリックします。

トランスレーションが終了すると、

EXEWRAP complete - 0 errors, 0 warnings.
Done: completed successfully.

と表示されます、続いてフィッティングが終了すると、

NGDBUILD Design Results Summary:
Number of errors: 0
Number of warnings: 0

と表示され、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の個体差なのかもしれませんが、ソフト屋が本業の私にはこれ以上のことはわかりません。もしこのような経験をされた方がいたらご連絡いただけるとうれしいです。

続・挙動不審

【2000-6-8】

まだ詳しく調べていないのですが、PIC16F84A-20がうまく動いてくれません。キーボードからのシリアルデータの受信のためのタイマ割り込みが、正確なタイミングで発生していないようです。なんだか割り込みの禁止/許可を頻繁に変更しているとPICが機嫌を損ねるようです。というわけでしばらくの間は「A」が付かないPIC16F84しか使えません。

解決?

【2000-6-11】

PIC16F84A-20対策の修正を施したところ、三端子レギュレータとの相性問題も解消できたようです。以下の条件が満たされたとき動作が不安定になることがわかりました。