5. プログラムの解説
5.2 プログラムの解説
5.2.10 タイマ RD1 の設定
381 : /* タイマRD1 外部入力(ロータリエンコーダのパルスカウント) */
382 : trdioa0sel0 = 1; /* TRDCLK端子:P2_0に設定 */
383 : stclk_trdfcr = 1; /* 外部クロック入力有効に設定 */
384 : trdcr1 = 0x15; /* TRDCLK端子 両エッジカウント */
385 : tstart1_trdstr= 1; /* TRD1カウント開始 */
タイマ
RD1
を外部クロック入力にして、ロータリエンコーダのパルスを入力します。今回のタイマRD1
の設定を、下図に示します。
タイマ
RD1
TRD1 タイマRD制御レジスタ1 bit2~0
f32(1600ns) f8(400ns) f4(200ns) f2(100ns) f1(50ns)
P2_0
TRDCLK端子
ロータリエンコーダの パルス
(1)
タイマRD
端子選択レジスタ0(TRDPSR0:Timer RD function select register 0)の設定
ビット シンボル 説明 設定値
7 - "0"を設定
bit0=
"1"
6 trdiod0sel0
TRDIOD0
端子選択ビットを設定します。0:TRDIOD0
端子は使用しない1:P2_3
に割り当てる5 trdioc0sel1 TRDIOC0
端子選択ビットを設定します。00:TRDIOC0
端子は使用しない01:設定しないでください 10:P2_1
に割り当てる11:設定しないでください 4 trdioc0sel0
3 trdiob0sel1 TRDIOB0
端子選択ビットを設定します。00:TRDIOB0
端子は使用しない01:設定しないでください 10:P2_2
に割り当てる11:設定しないでください 2 trdiob0sel0
1 - "0"を設定
0 trdioa0sel0
TRDIOA0/TRDCLK
端子選択ビットを設定します。0:TRDIOA0/TRDCLK
端子は使用しない1:P2_0
に割り当てるここでは、P2_0端子を
TRDIOA0
出力端子/TRDCLK入力端子します。ど ちらの機能にするかは、この後で設定します。5.
プログラムの解説(2)
タイマRD
機能制御レジスタ(TRDFCR:Timer RD function control register)の設定ビット シンボル 説明 設定値
7 pwm3_trdfcr
PWM3
モード選択ビットを設定します。"1"を設定
※"1"は
PWM3
モードが無効になる設定です。bit6=
"1"
6 stclk_trdfcr
外部クロック入力選択ビットを設定します。
0:外部クロック入力無効 1:外部クロック入力有効
この設定で、P2_0端子をタイマ
RD
の外部クロック入力端子にします。5 - "0"を設定
4 - "0"を設定
3 - "0"を設定
2 - "0"を設定
1 cmd1_trdfcr
コンビネーションモード選択ビットを設定します。PWM
モードでは“00”(タイマモード、PWMモード、PWM3モード)にしてく0 cmd0_trdfcr
ださい(3)
タイマRD
制御レジスタ1(TRDCR1:Timer RD control register 1)の設定
ビット シンボル 説明 設定値
7 cclr2_trdcr1 TRD1
カウンタクリア選択ビットを設定します。000:クリア禁止(フリーランニング動作)
001:TRDGRAi
のコンペア一致でクリア010:TRDGRBi
のコンペア一致でクリア011:同期クリア(他のタイマ RDi
のカウンタと同時にクリア)(注4)
100:設定しないでください
101:TRDGRCi
のコンペア一致でクリア110:TRDGRDi
のコンペア一致でクリア111:設定しないでください
0x15 6 cclr1_trdcr1
5 cclr0_trdcr1
4 ckeg1_trdcr0
外部クロックエッジ選択ビット(注
3)を設定します。
00:立ち上がりエッジでカウント 01:立ち下がりエッジでカウント 10:両エッジでカウント
11:設定しないでください
今回は、ロータリエンコーダのパルスを立ち上がり、立ち下がりの両方で カウントするようにします。
3 ckeg0_trdcr0
2 tck2_trdcr0
カウントソース選択ビットを設定します。
000:f1 (1/20MHz=50ns) 001:f2 (2/20MHz=100ns) 010:f4 (4/20MHz=200ns) 011:f8 (8/20MHz=400ns) 100:f32 (32/20MHz=1600ns)
101:TRDCLK
入力(注1)または fC2 (注 2)
fC2 = 2/XCIN
クロック=今回は未接続110:fOCO40M (高速オンチップオシレータ 40MHz=今回は未接続)
111:fOCO-F(注 4) (高速オンチップオシレータを FRA2
で分周したクロック=今回は未接続)
1 tck1_trdcr0
0 tck0_trdcr0
5.
プログラムの解説注
1. TRDECR
レジスタのITCLK0
ビットが“0”(TRDCLK入力)かつTRDFCR
レジスタのSTCLK
ビットが“1”(外部クロック入力有効)のとき、有効です。
注
2.
タイマモードで、TRDECRレジスタのITCLK0
ビットが“1”(fC2)のとき有効です。注
3. TCK2~TCK0
ビットが“101”(TRDCLK入力またはfC2)、TRDECR
レジスタのITCLK0
ビットが“0”(TRDCLK 入力)、かつTRDFCR
レジスタのSTCLK
ビットが“1”(外部クロック入力有効)のとき、有効です。注
4. fOCO-F
を選択するとき、CPUクロックより速いクロック周波数にfOCO-F
を設定してください。(4)
タイマRD
スタートレジスタ(TRDSTR:Timer RD start register)の設定ビット シンボル 説明 設定値
7 - "0"を設定
bit1=
"1"
6 - "0"を設定
5 - "0"を設定
4 - "0"を設定
3 csel1_trdstr
TRD1
カウント動作選択ビットを設定します。0:TRDGRA1
レジスタとのコンペア一致でカウント停止1:TRDGRA1
レジスタとのコンペア一致後もカウント継続2 csel0_trdstr
TRD0
カウント動作選択ビットを設定します。0:TRDGRA0
レジスタとのコンペア一致でカウント停止1:TRDGRA0
レジスタとのコンペア一致後もカウント継続1 tstart1_trdstr
TRD1
カウント開始フラグを設定します。0:カウント停止 1:カウント開始 0 tstart0_trdstr
TRD0
カウント開始フラグを設定します。0:カウント停止
1:カウント開始
5.
プログラムの解説
ドキュメント内
基板マイコンカー製作キットVer.2 プログラム解説マニュアル
(ページ 67-70)