2018-10-16 22:42 — asano
カテゴリー:
今回のもちょっと変わったLSIになります。
NECのμPD4701AC、データシートによると「インクリメンタル方式エンコーダ用カウンタ」となっています。
2相(90°位相のずれたA,B)をX,Yの2軸分入力してそれぞれ12ビットのカウントができます。2相あるので回転方向の検出も当然できます。それ以外に接点3つの入力が可能になっています。
読み出しは8ビットのCPUバスに直結可能で、X/Y, U/Lにアドレスを入力することで2軸の上下バイトを読むことができます。スイッチの状態は上位バイトと一緒になっています。
CPUからは読み出し専用なのでRD, WRにあたる信号はなく、CSを"L"にするだけで出力されます。
ところでμPD71054のところで書いたように、カウンタを複数回に分けて読み出す場合は読み出し中にカウントしてしまった場合の対策が必要になってきます。このμPD4701Aではどうなっているのでしょう?
すると何とCSの立下りでラッチするとのこと、読み出し中はCSを"L"のままにしなければいけないそうです。その間D0~D7はドライブされたままになるのでバスに直結できないではないですか。使いにくそうなデバイスです。
さて、2軸のエンコーダに接点入力ということはマウスやトラックボールを意識しているはずです。データシートでも言及されていますし、接点入力の端子名称がRIGHT, LEFT, MIDDLEとなっていることからも明らかです。
それにしてはDIP(SOPもあります)というサイズやCPUバス接続というのが腑に落ちないと思われるかもしれません。
今マウスというとカウンタなどはマウス内にあってホストとは何らかのシリアル通信で接続されています。もしこれを使うとすると他に何らかのマイコンを付けなくてはなりません。
実は初期のマウスにはコントローラを持っていないものがありました。エンコーダ出力がそのまま(バッファくらいは入っていたでしょうが)ケーブルに接続されていました。そしてホスト側のマウスI/Fボード上にカウンタなどが載っていてCPUバスに接続されていました。
PC-9801用のマウスPC-9871なんかがこの方式でした。機能的にはピッタリで同じNECですが残念ながらこのμPD4701Aは使用されていません。
コメントを追加