posted by rerofumi
2008/11/19 水曜日 21:41:40
積みネタ棚卸しセール。
以前 PSoC FirstTouch Kit を HIDキーボードにしていたのは、今回のこれをやるための下準備。それくらい寝かせていたというか、やろうやろうと思って棚上げになっていたネタ。
エイヤと作ってしまうのです。
ファミリーベーシックのキーボードは拡張コネクタで接続するためなんらかの通信を行っているはずである。まずはその信号の調査から。調べたらありがたいことにファミコンの本体と周辺機器の回路を回路図に起こしてくれているページがあったので、そこを参考にする。
回路を見た所、リセットトリガを送信した後クロックの立ち上がりと立ち下がりそれぞれのエッジで 4bit ずつ時分割でデータを送るらしい。リセット後、クロックパルス9周期で18個のデータ、4×18で72キーの情報ということらしい。OUT2本のIN4本という簡単な構成なので、マイコンのGPIOでとろとろやるのに丁度良いだろう。
一部プルアップ抵抗があるので、OUT2(pin10)にVCCをかけておく必要があるところに注意。
拡張コネクタは通常のD-SUBより深い特殊構造になっているので、コネクタを使わずにピンヘッダをさし込む形で今回は代用する。
そのために通常のピンヘッダより足が長い特別な奴を買っておいた。
適当にケーブル作成。
コネクタの方のピッチが2.54mmより若干広いのでちょっと無理がかかるけれども、まあ使える範囲。
テストボードで適当にコードを組んで読み取れることを確認。
うまいこと読み取れたらそのコードをそのままコピペで使い回す。
今回のメインターゲット。ストロベリーリナックスで購入したモジュールボード。
USBモジュールが入っているPSoCマイコンということで、これだけであれこれ作れちゃう。まあ、ユーザーモジュールがもの凄い少ないので通常のPSoCみたいには行かないけれども。
PSoC Designer でのUSBターゲット開発の簡単な流れ。
CY8C24794 のプロジェクトを作成すると、ユーザーモジュールに “USB-FS” が現れるのでそれを使用する。選択時に HID にするか、それ以外にするかを聞いてくるので HID を選択。
モジュールをplaceした後 “USB setup wizard” を選択して、どういったUSBターゲットにするのかそのディスクリプタをwizard上でひたすら作成する。ことになる。
USBキーボードは丁度良い感じにテンプレートが存在するので、HIDディスクリプタのところにそのテンプレートからの読み込みを選択してapplyでテンプレートをコピー。
HID クラスディスクリプタの所に、読み込んだテンプレートを指定してやる。
これで、おおざっぱな設定は完了。他にも細々とした設定はいるけれども、そのへんはプロジェクトを見て。
これが今回のPSoCプロジェクト一式。
File: fckbd_usb_key_099.zip
ファミコンキーボードはあの時代のパーコンをベースにしているので STOP キーがあったり GRPH キーがあったりとキーアサインがかなり違っている。なのでそこは適当にアレンジ。
「漢字」キーは「カナ」に割り付け。「ALT」キーは「GRPH」に割り付け。「Home」を「CLR/HOME」に割り付け。「BS」キーを「STOP」に割り付け。といった感じ。そういや「TAB」がねーや。
で、上手くいっているかというと不具合もあって。
「¥」キーと「\」キーが動いていません。106JPキーのかな表記だと「ー」と「ろ」のキーね。
HID usage のドキュメントだと”Keyboard International” の 0x87 と 0x89 に割り当てられていると書いてあったのでその様にしたんだけれどもなあ。その資料だと「漢字」は0x94 だよと書かれていたのに実際は 0x35 でないと駄目だったので、これも何か別なコードなんだろうとは思うのだけれども。
情報求む。
Leave a Reply