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

目次

  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.ピン名称方向内容
1GND-GND26GND-GND
2CLKINクロック(8MHz)27VccIN+5V
3BRESET*INCPUリセット信号28PWR*INRead,Write Select
4D00-データ0ビット29IDA*INID PROM Select
5D01-データ1ビット30H1INhigh level入力
6D02-データ2ビット31MEMSELA*INMemory R,W Cycle信号
7D03-データ3ビット32H2INhigh level入力
8D04-データ4ビット33INTSELA*INInterrupt Cycle信号
9D05-データ5ビット34H3INhigh level入力
10D06-データ6ビット35IOSELA*INI/O Cycle信号
11D07-データ7ビット36H4INhigh level入力
12D08-未使用37ADDR1INAddress1ビット
13D09-未使用38H5INhigh level入力
14D10-未使用39ADDR2INAddress2ビット
15D11-未使用40H6INhigh level入力
16D12-未使用41ADDR3INAddress3ビット
17D13-未使用42IRQA0*OUTInterrupt信号(割込みレベル4)
18D14-未使用43ADDR4INAddress4ビット
19D15-未使用44IRQA1*OUTInterrupt信号(割込みレベル5)
20BS0*INバイトリセット(下位)45ADDR5INAddress5ビット
21BS1*INバイトリセット(上位)46H7INhigh level入力
22V-IN-12V47ADDR6INAddress6ビット
23V+IN+12V48ACKA*OUTAcknowledge
24VccIN+5V49+5PSTBTIN未使用
25GND-GND50GND-GND

J5(I/Oボードを通過し、ロータリエンコーダ・タッチセンサへ) <
No.ピン名称方向内容No.ピン名称方向内容
1GND-GND26GND-GND
2GND-GND27RRaIN右ロータリーエンコーダa相信号
3GND-GND28GND-GND
4GND-GND29RRbIN右ロータリーエンコーダb相信号
5GND-GND30GND-GND
6GND-GND31VccOUTVcc
7GND-GND32GND-GND
8GND-GND33RLaIN左ロータリーエンコーダa相信号
9GND-GND34GND-GND
10GND-GND35RLbIN左ロータリーエンコーダb相信号
11GND-GND36GND-GND
12GND-GND37VccOUTVcc
13GND-GND38GND-GND
14GND-GND39TRs*IN右タッチセンサON信号
15GND-GND40GND-GND
16GND-GND41TRr*IN右タッチセンサOFF信号
17GND-GND42GND-GND
18GND-GND43TMs*IN中央タッチセンサON信号
19GND-GND44GND-GND
20GND-GND45TMr*IN中央タッチセンサOFF信号
21GND-GND46GND-GND
22GND-GND47TLs*IN左タッチセンサON信号
23GND-GND48GND-GND
24GND-GND49TLr*IN左タッチセンサOFF信号
25GND-GND50GND-GND

CN5(モータ制御ボード)
No.ピン名称方向内容
1VccINVcc
2S0OUT右方向信号
3S1OUT右PWM信号
4S2OUT左方向信号
5S3OUT左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にしてから行う事
* は赤外線センサボードを参照


制御フロー