なので、PS/2 のマウスをMSX用(というかP6用?)に変換するコネクタを作りました。
FM-TOWNS用で同様のものがあるようですが、今回の製作のコンセプトは、「出来るだけ簡単に作る」です。
注)使用する際は、使用者個人責任で行ってください。実行した結果によって、いかなる結果になっても、作者は一切責任を負いませんので、ご了承下さい。
(今更ですが)
回路図がこれになります。
AVR の中で、安価でI/O数があるATtine2313 を使いました(240円)。
AVR 内の POWER ON リセットを使用しているので、リセット回路はありません。
データの焼きこみを他で行うのなら、ISPコネクタも不要です。
パスコンの値は適当です。
PS/2 が挿さるコネクタは、mini-DIN の6ピンです。
P6に挿すコネクタは Dsub 9ピンですが、普通のではそのまま挿せないため、金属ケースを取り除いて中身だけを使います。
こんな感じです。左右の出ている金属部分をペンチで何度か曲げていると、ねじ切ることができます。
Dsub 9ピンのピンの間に、ユニバーサル基板を挟むような感じで組み上げます。
実際に組み立てたものがこれです。ちょっと安っぽいです...
裏面はこんな感じです。あまりキレイではありません。
AVR のプログラムですが、C+アセンブラになります。
MOUSECONV.zip
FUSE ビットは、デフォルトのまま使用しています。
使い方ですが、必ずマウスを変換コネクタに挿してから、P6 に変換コネクタを挿して下さい。
途中でマウスを抜き差しすると、誤動作する可能性があります。
P6 の電源を入れている時に変換コネクタを抜き差しした場合、論理動作は正常に動くと思うんですが、物理的にやられる可能性がありますので、注意して下さい。
PS/2 のマウスは中トリガがあるものがありますが、これを押すと移動量を変化させるようにしました。押すたびに、1/1 、1/2 、1/4 、1/1 、・・・、となります。
mk2、P6F では当然使えたんですが、MSX や FM-TOWNS で使用できるかどうかは、試していません(使えるはずですが)。
ですが、ATTINY2313-20PUとAT90S2313-10PCでは
どちらが良いのでしょうか。
ブログの記事をそのまま実践するのであれば、同じ品種(ATTINY2313 20PU)を使った方がラクです。
プログラムデータも、コンパイル後のデータも置いているので、そのまま使えます。
AT90S2313は、ATTINY2313の後継機種のようですが、ヒューズビットなどの設定が若干違うようです。
(デフォルトのヒューズビットで設定される、内蔵OSCの周波数が違うらしい)
自力でこの辺りの問題を解決できるのならば、AT90S2313でもいいかと思います。
「at90s2313 attiny2313 違い」で検索するといろいろ出てきます。
このページが参考になるかと。
http://homepage3.nifty.com/ARTWEB/avr1.htm
先頭からだいぶ下の「AT90S2313/ATTINY2313(20ピンAVR)を使ってみる
」が参考になります。
ATTINY2313のヒューズビットのデフォルト値は、内蔵OSCの8MHz選択なので、同様の設定が必要になります。
手持ちにAT90S2313 がないので、試せませんが。
ATTINY2313-20PUとAT90S2313-10PC、というのは
秋月電子で部品を探していたら、この2つが
出て来たので迷っていたところでした。
助かりました。
このコネクタ、作成してみました。
MSX(A1ST)にて問題なく動作しています。
MSXで光学マウスが利用できる日が来るとは!
報告、ありがとうございます。
PICやコネクタ類を揃えていたんですが、
PS/2コネクタを間違えてピン数違いのものを
買ってきちゃったりしてやる気が無くなりかけて
いたところ。完成したんですね。
EPLDなら直ぐに書けると思うんですが、PICでアセンブラで、
となると面倒だ、というのもありました。
早速AVRを買いに行こうかな。
ところでソースはまだ読んでいませんが、マウスは
ストリームモードですか?リモートモードで使っていますか?
タイミングが間に合えばリモートモードの方がコードが
簡単になるのかな?と考えていましたが応答時間を考えると
タイミングが合わなかったように記憶しています。
僕のFPGA版X68000はタイミングに十分な余裕があったので
リモートモードで使いました。
PS/2のマウスのモードは、(多分)ストリームモードで使用しています。
マウスに対してデータを送信するのが、何となく面倒だったので、ストリームモードにしています。
リセット後はストリームモードになるので、マウスから送られてくるデータを受信、蓄積、変換してP6側に送信するだけなので、作りが簡単になるためです。
まあ、そのためにPS/2からのデータを確実に受信するために一部アセンブラの表記が必要になったのですが。
たまたま入手したROLAND S-330にマウスを
繋ぎたくて、ここにたどり着きました。
楽器に繋がるのか不安でしたが、製作して
あっさり動作したので嬉しく思っています。
この様な記事&プログラムの公開に感謝しつつ、
ありがたく使わせていただきます(^^)
PS/2マウスの種類によっては動かない場合もあるので、注意が必要です。
USB版を作ろうかとも思っているのですが、面倒なのでちょっと止まっています。
既に販売している人もいるようです。
https://twitter.com/w341ig
ひとつ質問なのですが、回路図の5vと書いてあるところは5v電源につなぐという意味ですよね?
実際につくられた写真をみると5vにつながっているところはないようにみえるのですが、
私のつくったものはusbからとった5vにつながないと動作しません
よろしくお願いします
接続先が何かが分からないのですが、P6の場合はジョイスティック端子(D-SUB 9pin)から5Vが出ているので、それを使用しています。
5Vに接続というより、P6の5Vを使っている、という意味ですね。
接続先はROLAND S-330です ジョイスティック端子から5Vは出ていますが、マウスを接続したりattiny2313をソケットに差し込むと、その5Vがなぜか約3Vになってしまいます
なので他のところから5Vをプラスとグランドにつなぐと動作します 作り直しても同じ現象で原因がわかりません
ちなみにps/2 usb 変換アダプタを参考にusbマウスに接続すると、5Vを他からとってですが動作しました
http://synpro.heimat.eu/mu1mouse.htm
↑この辺りの情報を参考にしましたが、動かない原因がわかりません。
MSXと仕様が同じであれば、S-330から電源が供給されるはずで、その時は+5Vは5pinから、GNDは9pinから供給されるはずです。
他から電源を与える必要は(普通は)ないはずです。
考えられるのは...
・配線が間違えている(9pinと8pinが逆?)。
・+5VとGND間に入れているコンデンサが壊れている。
・PS/2マウスが妙に電流を食っている。
・どこかのピンがショートしている。
・ATTINYの空きピンがショートしているとか...
ぐらいかなぁ...
後は、S-330側に問題がある可能性はあります。
ヒューズが切れているという事は、電源系統が内部でショートしている可能性がありますので、調べたほうがいいかもしれません。
電解コンデンサや、充電電池の液漏れや、タンタルコンデンサのショート故障など...