前回までのように、うさちゃんRabbit4000をイーサネット経由で動かしている分には、手足のGPIO端子などは気にする必要はありません。でもそろそろマイコンらしい仕事をさせたいです。勿論、http経由でですが。しかし、うさちゃんのIO端子について全く分かってないことが発覚。大慌てで調べましたです。
※「うさちゃんと一緒」投稿順indexはこちら
うさちゃんRabbit4000は、Z80の後継機種らしく、独立したアドレスバス(20ビット)とデータバス(8ビット)、そしてバス制御信号群を持つ上に、パラレルポートとして8ビット分のポートを5ポート、合計40ビット分をもっています。Ethernet制御端子はこれまた独立端子なので、40ビットはほとんど使い放題、と思ってました。
しかし、そのアサハカな考えは今回、回路図を見て、データシートを確かめてもろくも崩壊いたしました。使える端子はどこに?
さて以下のような端子2本を使用したいと考えました。何やりたいか分かりますな。
-
- ビット単位出力オープンドレイン1端子、外付けにプルアップ抵抗
- ビット単位入出力オープンドレイン1端子、外付けにプルアップ抵抗
以下は上記の端子として使えそうな候補のピンを絞り込むためのリストです。左端の欄が黄緑色の部分が「使えそう」な端子。紫色は「空いているけれど使えない」端子。そして白色は使用されているので不可です。
モジュールRCM4010上で使用されている端子
手元で使用している「うさちゃん」は、冒頭のアイキャッチ画像のように、親亀(プロトタイプボード)の上に子亀(プロセッサモジュール)を搭載した装置です。
-
- プロセッサモジュール RCM4010
- プロトタイプボード RCM4XXX Proto board
モジュールとプロトタイプボード間の結合は、基本、Rabbit4000のパラレルポート端子40ピンが全て接続可能に見えるピン配なのです。しかし、モジュールRCM4010上で使用している端子もあり、またプロトタイプボード上で使用している端子もあり結構使えない(使おうと思ったらなにか処置しないとダメな)端子が多いです。
まずモジュール側での端子の使用です。一部端子がEthernet関係とプログラムの書き込み制御で使われているようです。また今回パラレルポートDを使おうと思ったら、「16ビットデータバスの上側8ビット」として使用されてました。Rabbit4000は8ビットCPUとは言え、SRAM/Flashへのアクセスは16ビット幅で高速に行ってました。他に()で囲って NANDとかADCとか書かれていますが、これらは型番の異なるRCM40xxモジュールに、ストレージ用のNANDフラッシュとかアナログ入力用のADコンバータまで搭載した機種があり、そいつらのための端子です。RCM4010では部品は実装されていないので使用可能と判断してます。
さらにプロトタイプボード側へ行くと、ボード上のLEDやスイッチ、シリアルポートのための端子は接続済です。PORT Dの分の8ビットはPDx端子でなく、アナログ入力端子として接続されてました。なおこちらにはデフォルトでプルダウン抵抗がぶら下がってます。
さらにポート属性で絞り込まれる
上で接続済の端子以外が使えるかというと、条件に合わないものがまたゴッソリ脱落します。以下のParallelポートの属性表をご覧くだされ。パラレルポートはAからEの5つあるのですが、微妙に機能が違うのです。
ポートAは8ビットまるまる空いているので期待したのですがダメです。ポートAはビット単位での操作ができず常に8ビット単位の操作です。このポートは主として「スレーブポート」として使うことを意図しているためのようです。今回目標はビット単位操作なので使えませぬ。
次にポートBはビット毎端子操作ができるし、空いてるピンもあるしと調べてみると。これまたダメでした。入力、プッシュプル出力は設定できるのですが、オープンドレイン出力ができません。残念。
ポートCは、ビット毎操作可能、オープンドレイン設定もできます。ただ出力を制御する同期クロックの設定が固定なのと1ビット毎の直接制御のレジスタが無いことが次のポートDより機能的に落ちるのです。まあ何とかなるんじゃないかと。ちょうど2端子、使えそうな端子が残ってます。
ポートDは、A、B、C、D、Eの中で一番機能が充実しているのですが、データバスHighとして使われているのでどうしようもありません。
ポートEは、ポートDとほぼほぼ同じ機能で使えそうな端子も5端子あります。ただし、出力時の同期クロックの設定が「微妙に」ポートDと異なるみたいです。でもなんとかなるんじゃね。コマケー話だし。ホントか?
結局候補として残ったのはCとE合計でわずか7端子。これで実験してみるしかないか。