2016-08-31 08:17 — asano
各社の8255 PPI (Programmable Peripheral Interface)です。
まずはIntelオリジナルのP8255A-5です。あまり見かけないので見つけたとき思わず買ってしまいました。
マーキングが読みにくいですね。現物でも光の角度を変えて見やすい向きを探さないといけません。
下のほうが読みにくかったので角度を変えて撮影したものも載せておきます。
上は東芝製のTMP8255AP-5、1984年製でしょうか。
下はNECのμPD8255AC-5、これは1983年製ですね。以前紹介したPC-8001mk2 拡張ボードに搭載していたのもこれです。
どちらもメーカのロゴが懐かしいです。
これは三菱製のM5M82C55AP-2、82と55の間に「C」が入っているのはCMOS版の証です。
さてこのデバイス、パラレルI/Oの定番中の定番だったのですが、今どきのマイコンのGPIOに慣れている人には信じ難いような特性がありました。
- ビット毎に入出力を設定できない
- ポートの設定を変更すると全出力ポートがリセットされる
ポートAの8ビット、ポートBの8ビット、ポートCは上下4ビットごとにしか設定できません。
ポートのモードや入出力を変更すると全てのポート(変更しなかったポートも)がリセットされ、"0"が出力されます。
前者はまだポート数がギリギリでない限り割り当てを考えればたいした問題ではなかったのですが、後者は厄介でしたね。
まずハードウェアリセットがかかると全ポートが入力になります。次にポートを出力に設定するとL("0")が出力されます。信号が一時的にフロートになるのはイヤですから通常はプルアップすることになります。するとリセットからソフトウェアの初期化処理で出力設定するまでH、それから目的の値をポートに書き込むまでLが勝手に出力され、これらの動作はソフトウェアではどうにもならない(せいぜい時間を短くすることぐらい)わけです。
このデバイスをROMライタに使ったわけですが、書き込み用の高電圧など一瞬でも勝手にONしては困るものもあるわけで、頭の痛い問題でした。
まあプルアップではなくプルダウンにしておけば勝手にHは出なくなるわけですが、この8255を主に使っていたころは74LSシリーズを使うことが多く、74LSの入力ピンは内部でプルアップされているのでプルダウンの抵抗が大きすぎるとLにならないし、小さすぎるとHにドライブできなかったり消費電流が増えてしまいます。
あとやはりROMライタの場合ですが、書き込み時とベリファイ時でデータの方向を変えなくてはならず、その度に他のピンがリセットされるというのも厄介な点でした。
一方便利な点もあって、ポートC限定ではあるのですが、ピンを1つだけH or Lにする機能がありました。通常は他のピンに影響しないよう現在の出力状態を読み込んで(メモリなどに憶えておいてもよいですが)から目的のビットだけ書き換えてポートに書くという処理が必要なところ、ビット何番をOn/Offと言うコマンドを書くだけでできると言うものです。
それと40ピンDIPで24ビットもあるのはこれだけでしたね。
コメントを追加