Stellaris® LM3S9B96 Microcontroller

Stellaris® LM3S9B96 Microcontroller
23 章 直交エンコーダ・インターフェイス(QEI)
。
JAJU124
SPMS182D 翻訳版(23 章)
最新の英語版:
http://www.ti.com/lit/gpn/lm3s9b96
この資料は、Texas Instruments Incorporated(TI)が英文で記述した資料を、皆様のご理解の一助として頂くために日本テキサ
ス・インスツルメンツ(日本 TI)が英文から和文へ翻訳して作成したものです。資料によっては正規英語版資料の更新に対応して
いないものがあります。日本 TI による和文資料は、あくまでも TI 正規英語版をご理解頂くための補助的参考資料としてご使用下
さい。製品のご検討およびご採用にあたりましては必ず正規英語版の最新資料をご確認下さい。TI および日本 TI は、正規英語
版にて更新の情報を提供しているにもかかわらず、更新以前の情報に基づいて発生した問題や障害等につきましては如何なる
責任も負いません
JAJU124
23 直交エンコーダ・インターフェイス (QEI)
直交エンコーダは 2 チャネル・インクリメンタル・エンコーダとも呼ばれ、リニア変位をパルス信号に変換します。2 つ
の信号のパルス数と相対位相の両方を監視することで、位置や回転方向や速度を追跡できます。さらに、第 3 の
チャネル、つまりインデックス信号を使用して、位置カウンタをリセットすることもできます。
LM3S9B96 マイクロコントローラは、2 つの直交エンコーダ・インターフェイス(QEI)モジュールを備えています。それ
ぞれの QEI モジュールでは直交エンコーダ・ホイールの生成するコードを解釈して、時間の経過とともに位置情報を
積分し、回転方向を判定します。さらに、エンコーダ・ホイールの動作速度の概算値をキャプチャすることも可能
です。
Stellaris ® LM3S9B96 マイクロコントローラには QEI モジュールが 2 つ含まれており、次に挙げる機能により、2 つ
のモーターを同時に制御することを可能にします。
■ エンコーダの位置を追跡する位置積分器(position integrator)
■ 入力に対するプログラマブル・ノイズ・フィルタ
■ 組み込みタイマを使用した速度キャプチャ
■ QEI 入力の入力周波数を、最大でプロセッサ周波数の 1/4 (例: 50MHz のシステムの場合は 12.5MHz)にすること
が可能
■ 次の場合に割り込みを生成
– インデックス・パルス
– 速度タイマ周期割り込み
– 回転方向転換
– 位相エラー検出
23.1 ブロック図
図 23-1 は、Stellaris® QEI モジュールのブロック図です。
Stellaris LM3S9B96 Microcontroller Data Sheet (Rev. D) 23 章 翻訳版
図 23-1. QEI のブロック図
23.2 信号の説明
表 23-1 と表 23-2 には QEI モジュールの外部信号と、各信号の機能の説明が記載されています。QEI 信号はいく
つかの GPIO 信号の代替機能であり、リセット時のデフォルトは GPIO 信号になります。下表中にある「ピン・マルチ
プレクシング/ピン割り当て」という見出しの列には、各 QEI 信号として割り当て可能な GPIO ピンが記載されています。
QEI 機能を選択するには、GPIO 代替機能選択(GPIOAFSEL)レジスタにある AFSEL ビットを設定する必要があり
ます。カッコ内の数字は、指定された GPIO ポート・ピンに QEI 信号を割り当てるために、GPIO ポート制御
(GPIOPCTL) レ ジ ス タ の PMCn フ ィ ー ル ド 中 に 設 定 す る 値 で す 。 GPIO の 構 成 の 詳 細 に つ い て は 、
“General-Purpose Input/Outputs (GPIOs)”を参照してください。
表 23-1. QEI の信号(100LQFP)
ピン
名称
IDX0
IDX1
PhA0
ピン番号
10
72
90
92
100
61
84
11
25
95
ピン・マルチプレク
シング / ピン割り
当て
PD0 (3)
PB2 (2)
PB6 (5)
PB4 (6)
PD7 (1)
PF1 (2)
PH2 (1)
PD1 (3)
PC4 (2)
PE2 (4)
入出力
バッファの
タイプa
I
TTL
QEI モジュール 0 インデックス
I
TTL
QEI モジュール 1 インデックス
I
TTL
QEI モジュール 0 位相 A
説明
PhA1
96
PE3 (3)
I
TTL
QEI モジュール 1 位相 A
PhB0
22
23
47
83
96
11
36
95
PC7 (2)
PC6 (2)
PF0 (2)
PH3 (1)
PE3 (4)
PD1 (11)
PG7 (1)
PE2 (3)
I
TTL
QEI モジュール 0 位相 B
I
TTL
QEI モジュール 1 位相 B
PhB1
a. 「TTL」は、ピンが TTL 互換の電圧レベルを持つことを示します。
表23-2. QEIの信号(108BGA)
ピン
名称
G1
A11
A7
A6
A2
H12
D11
ピン・マルチプレク
シング / ピン割り
当て
PD0 (3)
PB2 (2)
PB6 (5)
PB4 (6)
PD7 (1)
PF1 (2)
PH2 (1)
G2
L1
A4
L2
M2
M9
D10
B4
G2
C10
A4
PD1 (3)
PC4 (2)
PE2 (4)
PC7 (2)
PC6 (2)
PF0 (2)
PH3 (1)
PE3 (4)
PD1 (11)
PG7 (1)
PE2 (3)
ピン番号
IDX0
IDX1
PhA0
PhB0
PhB1
入出力
バッファの
タイプa
I
TTL
QEI モジュール 0 インデックス
I
TTL
QEI モジュール 1 インデックス
I
TTL
QEI モジュール 0 位相 A
I
TTL
QEI モジュール 0 位相 B
I
TTL
QEI モジュール 1 位相 B
説明
a. 「TTL」は、ピンが TTL 互換の電圧レベルを持つことを示します。
23.3 機能の説明
QEI モジュールでは、直交エンコーダ・ホイールの生成する 2 ビットのグレー・コードを解釈して、時間の経過とともに
位置情報を積分し、回転方向を判定します。さらに、エンコーダ・ホイールの動作速度の概算値をキャプチャすること
も可能です。
位置積分器と速度キャプチャは個別にイネーブルにすることが可能ですが、位置積分器は速度キャプチャがイネー
ブル可能になる前にイネーブルにする必要があります。QEI モジュールは 2 つの位相信号 PhA と PhB を交換して
解釈し、正転と逆転の意味を入れ替え、システムの誤配線を修正することも可能です。また、エンコーダによっては、
位相信号をクロック、方向信号を出力と解釈することも可能です。
QEI モジュールの入力信号にはデジタル・ノイズ・フィルタが備わっており、このフィルタをイネーブルにして誤動作を
防止できます。ノイズ・フィルタでは、エッジ検出回路を更新する前に、指定された数の連続クロック・サイクルの間、
入力が安定していることが必要になります。フィルタは QEI 制御(QEICTL)レジスタの FILTEN ビットによりイネーブル
になります。入力更新(input update)の周波数は、QEICTL レジスタの FILTCNT ビット・フィールドを使用してプログ
ラム可能です。
QEI モジュールでは、直交位相モードと、クロック/方向モードという 2 つの信号動作モードをサポートします。直交位
相モードでは、エンコーダにより 90 度位相のずれた 2 つのクロックが生成されるため、エッジ関係を利用して回転の
方向を判定できます。クロック/方向モードでは、ステップを示すクロック信号と、回転の方向を示す方向信号がエンコ
ーダにより生成されます。このモードは、QEICTL レジスタ(P1111 参照)の SIGMODE ビットにより決定されます。
直交位相モードを使用するように QEI モジュールを設定する(SIGMODE ビットがクリアされる)場合は、位置積分器
用のキャプチャ・モードを設定して、PhA 信号のエッジごとに位置カウンタを更新したり、PhA と PhB 両方のエッジご
とに更新したりするようにできます。位置カウンタを PhA エッジと PhB エッジのたびに更新すると、位置分解能は高く
なりますが、位置カウンタの範囲がそれだけ狭くなります。
PhA のエッジが PhB のエッジより進んでいる場合は、位置カウンタの値が増加(インクリメント)します。PhB のエッジ
が PhA のエッジより進んでいる場合は、位置カウンタの値が減少(デクリメント)します。立ち上がりエッジと立ち下が
りエッジのペアが一方の位相に見られ、他方の位相にはエッジがない場合は、回転の方向が変化しています。
位置カウンタは、1. インデックス・パルスを検知した 2. 最大位置値に達したという 2 つの条件のどちらかが満たさ
れた場合に、自動的にリセットされます。リセット・モードは、QEICTL レジスタの RESMODE ビットにより決定され
ます。
RESMODE が設定された場合は、インデックス・パルスが検知されると位置カウンタがリセットされます。このモード
により、位置カウンタが値[0:N-1]に制限されます。ここで N は、エンコーダ・ホイールが完全に一回転した時の位相
エッジの数です。QEI 最大位置値(QEIMAXPOS)レジスタを N-1 でプログラムして、位置 0 から逆方向に回転すると
位置カウンタの値が N-1 に移行します。このモードでは、位置レジスタには、一度インデックス・パルスがあることが
確認されたインデックス位置(つまりホーム位置)を示すエンコーダの絶対位置が入っています。
RESMODE がクリアされた場合は、位置カウンタの範囲が[0:M]に制約されます。ここで、M はプログラム可能な最
大値です。このモードでは、位置カウンタはインデックス・パルスを無視します。
速度キャプチャでは、速度タイマとカウント・レジスタを使用し、任意の周期内の位相エッジの数をカウントします。
直前の速度タイマ周期内のエッジ・カウントは QEI 速度(QEISPEED)レジスタを介してコントローラに利用され、その
間に QEI 速度カウンタ(QEICOUNT)レジスタには現在の速度タイマ周期内でのエッジ・カウント数が積算されていま
す。現在の速度タイマ周期が完了すると直ちに、カウントされた全エッジ数が QEISPEED レジスタに上書きされてコ
ントローラから使用可能になり、QEICOUNT レジスタがクリアされ、次の速度タイマ周期内のエッジ・カウントが開始
されます。任意の速度タイマ周期内にカウントされたエッジ数は、エンコーダの速度に正比例します。
図 23-2 は、Stellaris®直交エンコーダが位相入力信号を変換してクロック・パルスや方向信号にする様子と、速度プ
レディバイダの動作(4 分周モード)を示しています。
図 23-2. 直交エンコーダと速度プレディバイダの動作
QEI タイマ・ロード(QEILOAD)レジスタで、タイマのロード値を指定することにより、タイマの周期を構成できます。タ
イマがゼロに達すると割り込みをトリガすることが可能になり、ハードウェアによりタイマが QEILOAD 値でリロードさ
れ、カウントダウンを続行します。エンコーダの速度が遅い場合は、意味のある結果を得るのに十分なエッジをキャ
プチャするために、速度タイマ周期もそれだけ長くする必要があります。エンコーダの速度が速ければ、速度タイマ周
期も短くてすみ、そして/あるいは、速度プレディバイダを使用することも可能になります。
次の式では、速度カウンタ値を rpm 値に変換します。
ここで、
clock はコントローラのクロック速度、
ppr は物理エンコーダの 1 回転ごとのパルス数です。
QEICTLレジスタに設定されるキャプチャ・モード(CAPMODEのクリアは2、CAPMODE の設定は4) に基づいて、
edgesは2または4になります。
例として、600 rpmで動作するモーターを考えてみます。2048パルス/回転の直交エンコーダをそのモーターに取り付
けて、8192位相エッジ/回転を生成するようにします。速度プレディバイダ「÷1」(VELDIVがクリアされます)とし、PhA
エッジとPhBエッジ両方でのクロッキングを使用すると、これは81,920パルス/秒(モーターが1秒に10回回転する)に
なります。タイマが10,000Hzでクロッキングされていて、ロード値が2,500 (1秒の¼)の場合は、1回の更新につき
20,480パルスがカウントされます。上の式を使用すると、次のようになります。
ここで、モーターの速度を3000 rpmに上げてみることにします。すると、409,600パルス/秒、つまり1秒の¼ごとに
102,400という結果になります。再度上の式を使用すると、次のようになります。
この式の評価には注意が必要です。中間値が、32ビットで表される最大の整数値を超える可能性があるためです。
上の例では、クロックが10,000、ディバイダ(除数)が2,500ですが、(それらがコンパイル時の定数であれば)両方とも
100でプレディバイド(事前分周)して100および25にすることが可能です。つまり、それらがコンパイル時の定数であ
れば、単純な4の倍数に簡約されて、エッジカウント係数「÷4」により約分できます。
重要: コンパイル時定数の係数(constant factors)を簡約することは、この式の中間値を制御し、この式の計算の
処理要件を減らすために最も適した方法です。
ディバイザ(約数)が2の累乗となるようなタイマ・ロード値を選択すると、分周(division)の必要が無くなります。これに
より、分周の代わりに単純なシフトで済ますことが可能になります。エンコーダで2の累乗のパルス数/回転を使用し
ている場合は、ロード値を2の累乗にすることが可能です。それ以外のエンコーダの場合は、積(product)が2の累乗
に非常に近くなるようにロード値を選択する必要があります。例えば100パルス/回転のエンコーダの場合は、ロード
値82を使用した結果ディバイザを32,800(2の14乗から0.09%の誤差)にすることができます。この場合、15ビットシフ
トによりほとんどの分周値を用いる場合に対する十分な近似値が得られます。 絶対的な確度が必要になる場合は、
マイクロコントローラの分周命令を使用することもできます。
QEIモジュールでは、位相エラー、方向転換、インデックス・パルスの受信、速度タイマ周期といういくつかのイベント
時にコントローラ割り込みを生成できます。標準的なマスキング、未処理割り込みステータス、割り込みステータス、
割り込みクリアの各機能が提供されます。
23.4 初期化と構成
次の例は、直交エンコーダ・モジュールを構成して、絶対位置を読み戻す方法を示しています。
1.
0x0000.0100 という値をシステム制御モジュールの RCGC1 レジスタに書き込むことにより、QEI クロックをイネ
ーブルにします。
2.
システム制御モジュールの RCGC2 レジスタを介して、適切な GPIO モジュールに対してクロックをイネーブルに
します。
3.
GPIO モジュールで、GPIOAFSEL レジスタを使用して代替機能用の適切なピンをイネーブルにします。どの
GPIO を構成するかを判断するには、表 25-4 を参照してください。
4.
GPIOPCTL レジスタの PMCn フィールドを構成して、QEI 信号を適切なピンに割り当てます。(表 25-5 を参照)
5.
直交エンコーダを構成して、両方の信号でエッジをキャプチャし、インデックス・パルスでリセットを行うことで絶
対位置を保持します。1 ラインにつき 4 つのエッジがある 1000 ラインのエンコーダであれば、4000 パルス/回転
という結果になります。したがって、カウンタがゼロベースであるため、最大位置値を 3999 (0xF9F)に設定してく
ださい。
■ 0x0000.0018をQEICTLレジスタに書き込みます。
■ 0x0000.0F9FをQEIMAXPOSレジスタに書き込みます。
6. QEICTLレジスタのビット0を設定することにより、直交エンコーダをイネーブルにします。
7. エンコーダ位置が要求されるまで待機します。
8. QEI位置(QEIPOS)レジスタの値を読み出すことにより、エンコーダ位置を読み取ります。
23.5 レジスタ・マップ
表23-3は、QEIレジスタのリストです。記載されているオフセットはレジスタのアドレスに対する16進インクリメントであ
り、モジュールのベース・アドレスに関連しています。
■ QEI0: 0x4002.C000
■ QEI1: 0x4002.D000
QEI モジュールのクロックは、レジスタがプログラム可能になる前にイネーブルにする必要があることに注意してくだ
さい。
表 23-3. QEI のレジスタ・マップ
オフセット
0x000
名前
QEICTL
タイプ
R/W
リセット
0x0000.0000
説明
QEI 制御
0x004
QEISTAT
RO
0x0000.0000
QEI ステータス
0x008
QEIPOS
R/W
0x0000.0000
QEI 位置
0x00C
QEIMAXPOS
R/W
0x0000.0000
QEI 最大位置値
0x010
QEILOAD
R/W
0x0000.0000
QEI タイマ・ロード
0x014
QEITIME
RO
0x0000.0000
QEI タイマ
0x018
QEICOUNT
RO
0x0000.0000
QEI 速度カウンタ
0x01C
QEISPEED
RO
0x0000.0000
QEI 速度
0x020
QEIINTEN
R/W
0x0000.0000
QEI 割り込みイネーブル
0x024
QEIRIS
RO
0x0000.0000
QEI ロウ割り込みステータ
ス
0x028
QEIISC
R/W1C
0x0000.0000
QEI 割り込みステータスお
よびクリア
23.6 レジスタの説明
このセクションの以降のページでは、QEI のレジスタをアドレス・オフセットの番号順に記載し、説明します。
レジスタ 1: QEI 制御 (QEICTL)、オフセット 0x000
このレジスタには、QEI モジュールの設定が入っています。直交エンコーダ・ブロックと速度キャプチャ・ブロックには
セパレート・イネーブル(separate enables)が備わっており、速度をキャプチャするには直交エンコーダをイネーブル
にする必要がありますが、速度を必要としないアプリケーションでは速度のキャプチャは必要ありません。位相信号
の解釈、位相の交換、位置更新モード、位置リセット・モード、速度プレディバイダは、すべてこのレジスタを介して設
定されます。
QEI 制御 (QEICTL)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x000
タイプ R/W、リセット 0x0000.0000
ビット /
フィールド
31:20
名称
タイプ
リセット
予約
RO
0x000
19:16
FILTCNT
R/W
0x0
説明
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
入力フィルタのプリスケールのカウント
このフィールドは、入力更新の周波数を制御します。
このフィールドがクリアされると、入力が 2 システム・クロック後
にサンプリングされます。このフィールドが 0x1 の場合は、入力
が 3 システム・クロック後にサンプリングされます。同様に、この
フィールドが 0xF の場合は、入力が 17 クロック後にサンプリン
グされます
13
12
FILTEN
STALLEN
R/W
R/W
0
0
入力フィルタのイネーブル
値
説明
0
QEI 入力はフィルタリングされません。
1
QEI 入力信号上でデジタル・ノイズ・フィルタをイネ
ーブルにします。エッジ検出回路が更新される前
に、入力が、連続した 3 クロック・エッジの間安定し
ている必要があります。
QEI の停止
値
説明
0
デバッガによりマイクロコントローラが停止しても、
QEI モジュールは停止しません。
1
デバッガによりマイクロコントローラが停止すると、
QEI モジュールは停止します。
11
10
9
8:6
INVI
INVB
INVA
VELDIV
R/W
R/W
R/W
R/W
0
0
0
0x0
インデックス・パルスの反転
値
説明
0
影響なし
1
IDX 入力を反転します。
PhB の反転
値
説明
0
影響なし
1
PhB 入力を反転します。
PhA の反転
値
説明
0
影響なし
1
PhA 入力を反転します。
プレディバイダ速度
このフィールドは、QEICOUNT アキュムレータに加算される前
に、入力された直交パルスのプレディバイダを定義します。
値
0x0
0x1
0x2
0x3
0x4
0x5
0x6
0x7
5
4
3
2
1
VELEN
RESMODE
CAPMODE
SIGMODE
SWAP
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
プレディバイダ
÷1
÷2
÷4
÷8
÷16
÷32
÷64
÷128
キャプチャ速度
値
説明
0
影響なし
1
直交エンコーダの速度のキャプチャをイネーブルに
します。
リセット・モード
値
説明
0
位置カウンタは、QEIMAXPOS レジスタの
MAXPOS フィールドで定義された通りに、最大値に
達した時点でリセットされます。
1
インデックス・パルスがキャプチャされた時点で位
置カウンタがリセットされます。
キャプチャ・モード
値
説明
0
PhA エッジのみがカウントされます。
1
PhA エッジと PhB エッジがカウントされることによ
り、位置分解能が 2 倍になりますが、範囲は 1/2 に
なります。
信号モード
値
説明
0
PhA 信号と PhB 信号が、直交位相信号として動作
します。
1
PhA 信号と PhB 信号が、クロックおよび方向として
動作します。
交換信号
値
説明
0
影響なし
1
PhA 信号と PhB 信号を交換します。
0
ENABLE
R/W
0
QEI のイネーブル
値
説明
0
影響なし
1
直交エンコーダ・モジュールをイネーブルにします。
レジスタ 2: QEI ステータス (QEISTAT)、オフセット 0x004
このレジスタでは、QEI モジュールの動作についてのステータスを提供します。
QEI ステータス (QEISTAT)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x004
タイプ RO、リセット 0x0000.0000
ビット /
フィールド
31:2
名称
タイプ
リセット
予約
RO
0x0000.000
1
DIRECTION
RO
0
説明
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
回転の方向
エンコーダが回転している方向を示します。
0
ERROR
RO
0
値
説明
0
エンコーダは正方向に回転しています。
1
エンコーダはエンコーダは逆方向に回転していま
す。
エラーの検出
0
エラーなし
1
グレー・コード列でエラーが検出されました(つまり、
両方の信号が同時に変化しています)
レジスタ 3: QEI 位置 (QEIPOS)、オフセット 0x008
このレジスタには、位置積分器の現在の値が入っています。値は QEI 位相信号入力のステータスにより更新され、こ
のレジスタへの書き込みことにより特定の値に設定できます。
QEI 位置 (QEIPOS)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x008
タイプ R/W、リセット 0x0000.0000
ビット /
フィールド
31:0
名称
タイプ
POSITION
R/W
リセット
説明
0x0000.0000 現在の位置積分器の値
位置積分器の現在の値です。
レジスタ 4: QEI 最大位置値 (QEIMAXPOS)、オフセット 0x00C
このレジスタには、位置積分器の最大値が入っています。正方向に動いている場合に位置レジスタがこの値を超え
てインクリメントすると、リセットされてゼロになります。逆方向に動いている場合に位置レジスタがゼロからデクリメン
トされると、リセットされてこの値になります。
QEI 最大位置値 (QEIMAXPOS)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x00C
タイプ R/W、リセット 0x0000.0000
ビット /
フィールド
31:0
名称
タイプ
MAXPOS
R/W
リセット
説明
0x0000.0000 積分器の最大位置値
位置積分器の最大値です。
レジスタ 5: QEI タイマ・ロード (QEILOAD)、オフセット 0x010
このレジスタは、速度タイマのロード値が入っています。この値は、タイマがゼロになった後のクロック・サイクルでタ
イマにロードされるため、必要な周期のクロック数よりも1少ないです。したがって、例えば時間周期あたりのクロック
数を10進数で2000クロックにするには、このレジスタに10進数1999が入っている必要があります。
QEI タイマ・ロード (QEILOAD)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x010
タイプ R/W、リセット 0x0000.0000
ビット /
フィールド
31:0
名称
タイプ
LOAD
R/W
リセット
説明
0x0000.0000 速度タイマのロード値
速度タイマのロード値です。
レジスタ 6: QEI タイマ (QEITIME)、オフセット 0x014
このレジスタには、速度タイマの現在値が入っています。このカウンタは、QEICTLレジスタのVELENビットがクリア
になっている場合はインクリメントされません。
QEI タイマ (QEITIME)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x014
タイプ RO、リセット 0x0000.0000
ビット /
フィールド
31:0
名称
タイプ
TIME
RO
リセット
説明
0x0000.0000 速度タイマの現在値
速度タイマの現在値です。
レジスタ 7: QEI 速度カウンタ (QEICOUNT)、オフセット 0x018
このレジスタには、現在の時間周期での速度パルスの動作中カウントが入っています。このカウントは動作中の合計
であるため、適用対象の時間周期を正確に知ることはできません(つまり、QEITIMEレジスタによって返される時間
にこのレジスタの読み出しが対応している必要は必ずしもありません。どちらかの値が変化した可能性のある時間
は、2つの読み出し間にはわずかしか存在しないためです)。実際のエンコーダ速度を判定するには、QEISPEEDレ
ジスタを使用する必要があります。このレジスタは情報目的でのみ提供されます。このカウンタは、QEICTLレジスタ
のVELENビットがクリアになっている場合はインクリメントされません。
QEI 速度カウンタ (QEICOUNT)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x018
タイプ RO、リセット 0x0000.0000
ビット /
フィールド
31:0
名称
タイプ
COUNT
RO
リセット
説明
0x0000.0000 速度パルスのカウント
この速度タイマ周期中の、エンコーダ・パルスの動作中の合計
です。
レジスタ 8: QEI 速度 (QEISPEED)、オフセット 0x01C
このレジスタには、直近で測定された直交エンコーダの速度が入っています。この値は、直前の速度タイマ周期でカ
ウントされた速度パルスの数に対応しています。このレジスタは、QEICTLレジスタのVELENビットがクリアになって
いる場合は更新されません。
QEI 速度 (QEISPEED)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x01C
タイプ RO、リセット 0x0000.0000
ビット /
フィールド
31:0
名称
タイプ
SPEED
RO
リセット
説明
0x0000.0000 速度
直交エンコーダの速度の測定値です。(単位: パルス/周期)
レジスタ 9: QEI 割り込みイネーブル (QEIINTEN)、オフセット 0x020
このレジスタには、各QEIモジュール割り込みのイネーブルが入っています。このレジスタの対応するビットが設定さ
れると、割り込みコントローラに対して割り込みがアサートされます。
QEI 割り込みイネーブル (QEIINTEN)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x020
タイプ R/W、リセット 0x0000.0000
ビット /
フィールド
31:4
名称
タイプ
リセット
予約
RO
0x0000.000
3
INTERROR
R/W
0
2
1
0
INTDIR
INTTIMER
INTINDEX
R/W
R/W
R/W
0
0
0
説明
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
位相エラー割り込みイネーブル
値
説明
1
QEIRIS レジスタの INTERROR ビットが設定され
ると、割り込みコントローラに割り込みが送信されま
す。
0
INTERROR 割り込みは抑止され、割り込みコント
ローラに送られません。
回転方向転換割り込みイネーブル
値
説明
1
QEIRIS レジスタの INTDIR ビットが設定されると、
割り込みコントローラに割り込みが送信されます。
0
INTDIR 割り込みは抑止され、割り込みコントローラ
に送られません。
速度タイマ割り込みイネーブル
値
説明
1
QEIRIS レジスタの INTTIMER ビットが設定される
と、割り込みコントローラに割り込みが送信されま
す。
0
INTTIMER 割り込みは抑止され、割り込みコントロ
ーラに送られません。
インデックス・パルス検出割り込みイネーブル
値
説明
1
QEIRIS レジスタの INTINDEX ビットが設定される
と、割り込みコントローラに割り込みが送信されま
す。
0
INTINDEX 割り込みは抑止され、割り込みコントロ
ーラに送られません。
レジスタ 10: QEI 未処理割り込みステータス (QEIRIS)、オフセット 0x024
このレジスタは、(QEIINTENレジスタを介して設定された)コントローラに対してアサートされる割り込みを発生させる
かどうかにかかわらず、アサートされた割り込みソースのステータスを提供します。
ビットが設定されている場合は、ラッチされたイベントが発生しています。ビットがクリアになっている場合は、対応す
るイベントは発生していません。
QEI 未処理割り込みステータス (QEIRIS)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x024
タイプ RO、リセット 0x0000.0000
ビット /
フィールド
31:4
名称
タイプ
リセット
予約
RO
0x0000.000
3
INTERROR
RO
0
説明
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
位相エラーの検出
値
説明
1
位相エラーが検出されました。
0
割り込みは発生していません。
このビットは、QEIISC レジスタの INTERROR ビットに 1 を書き
込むことでクリアされます。
2
INTDIR
RO
0
回転方向転換の検出
値
説明
1
回転方向が変化しました。
0
割り込みは発生していません。
このビットは、QEIISC レジスタの INTDIR ビットに 1 を書き込む
ことでクリアされます。
1
INTTIMER
RO
0
速度タイマ割り込み
1
速度タイマがタイマ・ロード値になりました。
0
割り込みは発生していません。
このビットは、QEIISC レジスタの INTTIMER ビットに 1 を書き
込むことでクリアされます。
0
INTINDEX
RO
0
インデックス・パルスのアサート
値
説明
1
インデックス・パルスが発生しました。
0
割り込みは発生していません。
このビットは、QEIISCレジスタのINTINDEXビットに1を書き込
むことでクリアされます。
レジスタ 11: QEI 割り込みステータスおよびクリア (QEIISC)、オフセット 0x028
このレジスタは、コントローラに対してアサートされた割り込みソースの現時点のセットを提供します。ビットが設定さ
れている場合は、ラッチされたイベントが発生していて、そのイベントによる割り込みの生成がイネーブルになってい
ます。ビットがクリアになっている場合は、対応するイベントが発生していないか、そのイベントによる割り込みの生成
がイネーブルになっていません。このレジスタはR/W1Cであり、あるビット位置に1を書き込むと、そのビットおよび対
応する割り込みがクリアされます。
QEI 割り込みステータスおよびクリア (QEIISC)
QEI0 ベース: 0x4002.C000
QEI1 ベース: 0x4002.D000
オフセット 0x028
タイプ R/W1C、リセット 0x0000.0000
ビット /
フィールド
31:4
名称
タイプ
リセット
予約
RO
0x0000.000
3
INTERROR
R/W1C
0
説明
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
位相エラー割り込み
値
説明
1
QEIRIS レジスタと QEIINTEN レジスタの
INTERROR ビットが設定され、割り込みコントロー
ラに割り込みを提供します。
0
割り込みが発生していないか、マスクされていま
す。
このビットは、1 を書き込むことでクリアされます。このビットをク
リアすると、QEIRIS レジスタの INTERROR ビットもクリアされ
ます。
2
INTDIR
R/W1C
0
回転方向転換割り込み
値
説明
1
QEIRIS レジスタと QEIINTEN レジスタの INTDIR
ビットが設定され、割り込みコントローラに割り込み
を提供します。
0
割り込みが発生していないか、マスクされていま
す。
このビットは、1 を書き込むことでクリアされます。このビットをク
リアすると、QEIRIS レジスタの INTDIR ビットもクリアされま
す。
1
INTTIMER
R/W1C
0
速度タイマ割り込み
値
説明
1
QEIRIS レジスタと QEIINTEN レジスタの
INTTIMER ビットが設定され、割り込みコントローラ
に割り込みを提供します。
0
割り込みが発生していないか、マスクされていま
す。
このビットは、1 を書き込むことでクリアされます。このビットをク
リアすると、QEIRIS レジスタの INTTIMER ビットもクリアされま
す。
0
INTINDEX
R/W1C
0
インデックス・パルス割り込み
値
説明
1
QEIRIS レジスタと QEIINTEN レジスタの
INTINDEX ビットが設定され、割り込みコントローラ
に割り込みを提供します。
0
割り込みが発生していないか、マスクされていま
す。
このビットは、1 を書き込むことでクリアされます。このビットをク
リアすると、QEIRIS レジスタの INTINDEX ビットもクリアされま
す。