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