KeyBoardマニアII の変更点
[[2009-05ARM]]
目次
#contents
~
~
----
*昔のAppleADBキーボードをPS/2に変換するアダプタ [#ffd13cac]
http://psp.dip.jp/web/jpg/PIC/kbsmall.jpg
*DOWNLOAD(ADB) [#k9499be7]
ソース,HEXファイル一式: http://psp.dip.jp/web/upload/adb-ps2-adapter.zip
-仕様:
-ATtiny2313 内蔵RC発振モード(8MHz)
-外付け部品は電源のパスコン(0.1uF)1個のみ
-PS/2側2線とADB側1線(いずれも信号線の数。双方とも電源(GND,VCC)は別途必要)はAVRチップ直結。
-プルアップ抵抗は省略(AVRの内部プルアップで代用)
-記述はAVR-gcc
-ATtiny2313 内蔵RC発振モード(8MHz) を使用します。
-外付け部品は電源のパスコン(0.1uF)1個のみです。
-PS/2側2線とADB側1線はAVRチップ直結と、最小限の配線量で完成します。
-プルアップ抵抗は省略しています。(AVRの内部プルアップで代用)
-記述はAVR-gccです。
~
~
~
----------
*キーボ−ドマニア・リベンジ [#x8e7f085]
http://psp.dip.jp/web/jpg/PIC/pc88-1.jpg
元ねた:
-http://hp.vector.co.jp/authors/VA000177/at88/index.html
-昔PICで作った奴が、WindowsのOS起動後にキーボード未認識になるという
バグがあった。
-結局バグの原因は分からず仕舞いだった。
-が、ADB側が一応完成したので、PC8801側も配線をやりなおしてAVRに換装した。
*DOWNLOAD(PC8801) [#k9499be7]
ソース,HEXファイル一式: http://psp.dip.jp/web/upload/pc8801.zip
-仕様:
-ATtiny2313 内蔵RC発振モード(8MHz) , 74LS158(8 to 4 inverted selector)
-記述はAVR-gcc
-ATtiny2313 内蔵RC発振モード(8MHz)です。
-別途TTL ICを使用しています。 74LS158(8 to 4 inverted selector)
-記述はAVR-gccです。
~
~
~
~
-----------------
''以下は制作記です。''
-----------------
*ADB to PS/2変換器制作の軌跡 [#k3ba207a]
-昔のAppleADBキーボードをPS/2に変換するアダプタ をAVRで作ってみようと思う。
-昔PIC 16F84Aで作った奴は、互換機のBIOSモードとか生DOSではちゃんと動いた。
-WindowsやLinuxでは動かない。
-プロトコルに問題があるようだが理由がまだわからない。
調査
-Windowsが起動している状態でPS2キーボード端子を差し替えてAppleADBに差し替えるとちゃんとキー入力できる。
-Windows起動前に差し替えるとキー入力出来ない。
--これは、リセットシーケンスのようなものが来て、うまく反応出来ずに未接続にされてしまうような感じ。
~
--AVRで仮組みした奴だと、ここは乗り越えるのだが、
--可能性としては、リセット後の待ち時間問題。
~
--AVRで仮組みした奴でも、少し改造するとうまく行かない。
--これは原因不明
--別のマシンでは動いた。
-結論的には、RESETコマンド後のリプライを600mS後に遅らせることで、
-キーボード未接続になる問題が回避される公算大。(要確認)
実験結果
-PICで書いたものは、RESETコマンド後の待ち時間をどのように変えても認識しない。
-AVRで書いたほうは、一応大丈夫っぽい気がする。
-双方にはプロトコル解釈上の見解が大きく異なる。
今のところ決め手無し。
~
~
~
------
*PICで書かれたADBtoPS2変換機のソースの大部分を移植してみた。 [#bb84fa65]
-けれど、まだ動かない。
-PS/2インターフェースは生きている。
-ADB側が死んでいる模様。---調査中
-最初ADB側のGND配線が微妙に抜けていて給電されていなかった。---修正した。
~
~
~
------
*一応、全機能を実装。 [#l0fe5aa9]
-してみたが、BIOSリセット後にキーボードが認識されなくなる問題が残った。
-回避策としては、1秒に1回ダミーキーを送るとか、手動でキーを打てば回避できる。
-たまたま、電源投入直後はADB側の問題でダミーキーが押されっぱなしになる(?)ので回避できている。
-Windowsの起動時のキーボード切り離し問題は結局起きなかった。
~
~
~
------
*まとめ:とりあえず、ADB to PS/2 変換器は完成した。 [#z28b3b90]
-PIC 16F84A に実装していたもの相当の機能に関しては実装済み。
-一応動作する。
-少し古めのマザー(i815E)では「BIOSリセット後にキーボードが認識されなくなる問題」は起きない。
-Windowsの起動時のキーボード切り離し問題はマザーの種類に関係なく、起きなかった。
--PIC版では常に起きていて、結局原因は不明のままだ。
~
~
-----
現状の問題点
-新し目のマザーでは「BIOSリセット後にキーボードが認識されなくなる問題」が起きる。
-このため、対策として
--RESETコマンドを受け取るまでは、1秒に一回程度の頻度でPC側にACK(0xfa)を送り続けるようにして回避した。
--但し、Windows再起動や手動リセットでの起動ではACKを送るモードに戻せないので、
--BIOS起動後2秒くらいは適当にキーを押していないと「BIOSリセット後にキーボードが認識されなくなる問題」
が起きてしまう。
-とりあえず、古いマザーで使うので、いいんだけど・・・。
~
つまり
-新し目のマザー(foxconn製G31マザー)では、RESETコマンドが来る以前にキーボード未接続
と見なされるような挙動(?)があって、
-純正(?)のPS/2キーボードでは、回避されている(???)
という謎が浮かび上がっている。