ロータリーエンコーダのデコード
割り込みが片エッジのため一寸工夫が必要(両エッジ指定可能なCPUもある)
動作シーケンスを下記に、軸の回転で接点が90度ずれながら交互にON/OFFする
←接点
| ←| ← ↓に向かってうごけば ①
| |
| |
| |
| |
| |
| |
|← |← ↑に向かってうごけば ②
方法A
①
↑ ↑割り込み
RE1__~~~~____~~~~____
↑ ↑
RE2____~~~~____~~~~__
001111000011110000
000011110000111100
001133220011332200
000011111111222222
②
↑ ↑
RE1____~~~~____~~~~____
↑
↑ ↑
RE2__~~~~____~~~~____~~
0000111100001111
0011110000111100
0022331100223311
4444333333332222
RE1,RE2ともHになった時
RE2(P21)が原因なら右=+
RE1(P20)が原因なら左=ー
方法B
①
↑ ↑割り込み
RE1__~~~~____~~~~____
↓ ↓
RE2____~~~~____~~~~__
001111000011110000
000011110000111100
001133220011332200
001111110011111100
②
↑ ↑
RE1____~~~~____~~~~____
↓ ↓
RE2__~~~~____~~~~____~~
00001111000011110000
00111100001111000011
0022331100223311
00001111111111111111
RE2の割り込み時
RE1が1なら左周り=-
RE1が0なら右周り=+
方法Bが簡単