沼津高専 電子制御工学科
ロータリエンコーダボード取扱い説明書
MIRS9904-ELEC
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2000.11.17 渡邉 初版

目次

  1. はじめに
  2. 機能・性能
  3. インターフェース
  4. ソフトウェアビジビリティ

1.はじめに

本ドキュメントは、IOsub基板の取扱い方法について説明する。

2.機能・性能

1 ロータリーエンコーダボードの機能説明
 ロータリーエンコーダボードは、ロータリーエンコーダ信号処理回路とタッチセンサ信号処理回路を1つにまとめ、Industry Packの形にしたもので、以下に示す機能を持つ。
2 回路構成
 ロータリーエンコーダボードは、大別してロータリーエンコーダ信号処理回路とタッチセンサ信号処理回路、そしてVIPC310とのインターフェイスのための制御回路からなる。以下にその詳細を示す。
@ロータリーエンコーダ信号処理回路
 ロータリーエンコーダ信号処理回路は、ロータリーエンコーダの2相の信号からロータリーエンコーダの回転数と回転方向を測定し、CPUの命令にしたがってデータの出力をおこなう。
 回路はロータリーエンコーダ接続回路とカウンタ回路、カウンタリセット回路から成る。
 ロータリーエンコーダ接続回路はロータリーエンコーダの出力波形が論理回路の"H"、"L"レベルを満足するような振幅を設定するためのものである。
 カウンタ回路は、ロータリーエンコーダの信号をカウントし、2相の信号の位相差から回転方向を判断する。これには、マウス制御用カウンタIC(μPD4701)を使用した。このICは、カウンタと方向判別回路の両方の回路を備えていて、ロータリーエンコーダが2つつけられる。またマウスのボタン入力ピンをタッチセンサに応用できるためとても都合がよい。
 カウンタリセット回路は、カウンタのリセット信号を発生させる回路である。μPD4701Aの2つのカウンタは独立にリセット機能を持つため、回路も2つのカウンタを別々にリセットできるようにした。
Aタッチセンサ信号処理回路
 タッチセンサ信号処理回路は、タッチセンサの信号からスイッチ割り込みの割り込み要求をおこなう。回路は、タッチセンサのチャタリング防止回路と割り込み信号発生回路、タッチセンサステータス出力回路、割り込みVECTOR発生回路から成る。
 タッチセンサの信号処理にも、μPD4701Aを利用する。タッチセンサはRSフリップフロップを用いてチャタリングを除去し、その信号をμPD4701Aに取り込む。そして、μPD4701Aの持つスイッチフラグ信号を利用して割り込み信号発信回路で割り込みを発生させる。タッチセンサの状態は、μPD4701Aのカウント値とまとめて出力されるため、別にタッチセンサステータス出力回路を設計する必要はない。
 割り込みVECTOR発生回路は、割り込みサイクル時にVIPC310-IP間のデータバス(Internal Data Bus)に8ビットの割り込みVECTORを載せる回路である。IPからのデータバスには通常μPD4701Aの出力データが載せられているため、バス上にμPD4701Aの出力データと割り込みVECTORが同時に載るようなことのないよう、3ステートのバッファを用いて割り込みVECTORの出力を制御する。割り込みVECTORの設定は、8ビットディップスイッチによっておこなう。IPをVIPC310に搭載したまま割り込みVECTORの設定を行えるよう、ディップスイッチは横向きのものを使用した。
Bインタフェイス仕様と制御回路
 制御回路は、CPUからの命令の解読とVIPC310とのI/Oのタイミングの制御の役目を持つ。
 ここで、VIPC310とIPとのインターフェイス仕様のうちで特にロータリーエンコーダボードの設計に重要なものを示す。
 IPが可能なデータ入出力のサイクルには、表1に示した8種類がある。それぞれのサイクルは4つのセレクト信号(IOSel*,MemSel*,IntSel*,IDSel*)とR/W*、DMAck*により決定される。
 すべてのサイクルで4つのセレクトサイクルのうちの1つだけactiveになる。1つのサイクルは、セレクト信号がactiveになってからIPがAck*を返すまでである。
 図1に、最短の場合のInput、Outputサイクルのタイミングチャートを示す。
 また、図2にタイミングの規定を示す。なお、図2中のIP CarrierはVIPC310である。
 制御回路は以下のような仕様を満たすように設計しなければならない。
 制御回路では、セレクト信号、アドレス、データなどをデコードしてCPUからの命令を解読し、CLKと同期をとり、ロータリーエンコーダ信号処理回路やタッチセンサ信号処理回路に必要な信号を送ったり、命令に応じたデータをCPU側に返したりする。IPの大きさを考慮して、回路をPLDで作成する。
 次にこれらの回路の詳細を述べる。

カウンタ部
 カウンタ部では、ロータリー縁コーダの信号処理を行う。縁コーダ用カウンタICμPD4701A(以後カウンタICと呼ぶ:NEC)を用いて、ロータリーエンコーダの回転数をカウントする。この時、ロータリーエンコーダの信号がカウンタICのスレッショルドレベルを満たすように抵抗値(R1からR6)を設定する。この値は使用するロータリーエンコーダによって変わる。

スイッチ部
 カウンタ部に用いたカウンタICで、タッチセンサの信号処理も行う。タッチセンサには、チャッタレススイッチを用いる。チャタリング除去回路にはRSフリップフロップを用い、74LS279で作成する。カウンタICによりタッチセンサの状態を読み取り、スイッチフラグ(以後SF*)を発生させる。なお、このSF*を制御回路に取り込んで割り込み信号を発生させる。

制御回路
 制御回路部では、I/Oボードとのインターフェイスを行う。その役目は、CPUからの命令解読とタイミングの制御、割り込み信号の発生、バスリセット時にはカウンタをリセットし、タッチセンサの割り込みを禁止する。回路の小型化のために、PLD(16V8)2個を用いて作成する。

割り込みVECTOR発生回路
 割り込み時のVECTORはロータリーエンコーダのカウント値を出力するのと同じデータバスに載せるので、カウント値と割り込みVECTORの出力の切り替えに3ステートバッファを用いる。回路はを74LS244を用いて作成する。割り込みVECTORの設定用に8ビットのディップスイッチを用いる。スイッチはロータリーエンコーダボードをI/Oボードに搭載したままでも操作できるように横向きのディップスイッチA6DR-8を用いる。

3.インターフェース

I/O Subボードのインターフェイスをここに示す。

J3(I/Oボードへ)
No. ピン名称 方向 内容 No. ピン名称 方向 内容
1 GND - GND 26 GND - GND
2 CLK IN クロック(8MHz) 27 Vcc IN +5V
3 BRESET* IN CPUリセット信号 28 PWR* IN Read,Write Select
4 D00 - データ0ビット 29 IDA* IN ID PROM Select
5 D01 - データ1ビット 30 H1 IN high level入力
6 D02 - データ2ビット 31 MEMSELA* IN Memory R,W Cycle信号
7 D03 - データ3ビット 32 H2 IN high level入力
8 D04 - データ4ビット 33 INTSELA* IN Interrupt Cycle信号
9 D05 - データ5ビット 34 H3 IN high level入力
10 D06 - データ6ビット 35 IOSELA* IN I/O Cycle信号
11 D07 - データ7ビット 36 H4 IN high level入力
12 D08 - 未使用 37 ADDR1 IN Address1ビット
13 D09 - 未使用 38 H5 IN high level入力
14 D10 - 未使用 39 ADDR2 IN Address2ビット
15 D11 - 未使用 40 H6 IN high level入力
16 D12 - 未使用 41 ADDR3 IN Address3ビット
17 D13 - 未使用 42 IRQA0* OUT Interrupt信号(割込みレベル4)
18 D14 - 未使用 43 ADDR4 IN Address4ビット
19 D15 - 未使用 44 IRQA1* OUT Interrupt信号(割込みレベル5)
20 BS0* IN バイトリセット(下位) 45 ADDR5 IN Address5ビット
21 BS1* IN バイトリセット(上位) 46 H7 IN high level入力
22 V- IN -12V 47 ADDR6 IN Address6ビット
23 V+ IN +12V 48 ACKA* OUT Acknowledge
24 Vcc IN +5V 49 +5PSTBT IN 未使用
25 GND - GND 50 GND - GND

J5(I/Oボードを通過し、ロータリエンコーダ・タッチセンサへ) <
No. ピン名称 方向 内容 No. ピン名称 方向 内容
1 GND - GND 26 GND - GND
2 GND - GND 27 RRa IN 右ロータリーエンコーダa相信号
3 GND - GND 28 GND - GND
4 GND - GND 29 RRb IN 右ロータリーエンコーダb相信号
5 GND - GND 30 GND - GND
6 GND - GND 31 Vcc OUT Vcc
7 GND - GND 32 GND - GND
8 GND - GND 33 RLa IN 左ロータリーエンコーダa相信号
9 GND - GND 34 GND - GND
10 GND - GND 35 RLb IN 左ロータリーエンコーダb相信号
11 GND - GND 36 GND - GND
12 GND - GND 37 Vcc OUT Vcc
13 GND - GND 38 GND - GND
14 GND - GND 39 TRs* IN 右タッチセンサON信号
15 GND - GND 40 GND - GND
16 GND - GND 41 TRr* IN 右タッチセンサOFF信号
17 GND - GND 42 GND - GND
18 GND - GND 43 TMs* IN 中央タッチセンサON信号
19 GND - GND 44 GND - GND
20 GND - GND 45 TMr* IN 中央タッチセンサOFF信号
21 GND - GND 46 GND - GND
22 GND - GND 47 TLs* IN 左タッチセンサON信号
23 GND - GND 48 GND - GND
24 GND - GND 49 TLr* IN 左タッチセンサOFF信号
25GND - GND 50 GND - GND

CN5(モータ制御ボード)
No. ピン名称 方向 内容
1 Vcc IN Vcc
2 S0 OUT 右方向信号
3 S1 OUT 右PWM信号
4 S2 OUT 左方向信号
5 S3 OUT 左PWM信号

4.ソフトウェアビジビリティ

(注:アドレスのXXはIOボードのジャンパーによる設定により定まる。
Address
A8A7A6A5A4A3A2A1A0
Read/Write DATA
D7D6D5D4D3D2D1D0
MEMO
0XXXX0001 Read 2726252423222120
右ロータリエンコーダ・カウンタ下位8ビット
一定時間毎読む
0XXXX0011 Read SF L R M 2112102928
右ロータリ・エンコーダ カウンタ上位4ビット+スタートデータ
SF:スイッチフラグ(SF=L+R+M,active high)
L:左スイッチ(active high)
R:右スイッチ
M:中央スイッチ
一定時間毎,スイッチ割り込み時に読む
0XXXX0101 Read 2726252423222120
左ロータリエンコーダ・カウンタ下位8ビット
一定時間毎読む
0XXXX0111 Read SF L R M 2112102928
左ロータリ・エンコーダ カウンタ上位4ビット+スイッチデータ
SF:スイッチフラグ(SF=L+R+M,active high)
L:左スイッチ(active high)
R:右スイッチ
M:中央スイッチ
一定時間毎,スイッチ割り込み時に読む
0XXXX1001 Write (カウンタリセット)
XXXXXX01
右ロータリエンコーダ カウンタリセット
XXXXXX10
左ロータリエンコーダ カウンタリセット
XXXXX11
左右カウンタ同時リセット

右カウンタ読み込み後に行う

左カウンタ読み込み後に行う

スタート時に行う
FCXX47を設定するときはFCXX41を全て0にしてから行う事
* は赤外線センサボードを参照


制御フロー