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キーボードでは、回避されている(???)

という謎が浮かび上がっている。