第 9 章 スペシャルファンクションレジスタ
13.4 タイマ機能
13.4.5 パルス幅測定モード
パルス幅測定モードは、TCA0端子入力の立ち上がり/立ち下がりエッジを開始トリガにしてカウ ントをスタートし、入力パルス幅を内部クロックで測定するモードです。
13.4.5.1
設定動作モード選択
TA0MOD<TA0M>
に"110"
を設定するとパルス幅測定モードになります。ソース クロックの選択はTA0MOD<TA0CK>で行います。
トリガとなるエッジは、トリガエッジ入力の選択
TA0MOD<TA0TED>で選択します。
TA0MOD<TA0TED>
を"0"
にすると立ち上がりエッジ、"1"
にすると立下りエッジをトリガとして キャプチャを開始します。キャプチャ実行後の動作は、パルス幅測定モード制御
TA0MOD<TA0MCAP>
により決定されま す。TA0MOD<TA0MCAP>を"0"にすると両エッジキャプチャ、"1"にすると片エッジキャプチャ 動作になります。また、オーバーフロー割り込み制御
TA0CR<TA0OVE>で、アップカウンタのオーバーフローが
発生した場合の動作を選択できます。TA0OVE
を"1"
にすると、オーバーフロー発生時にINTTCA0
割り込み要求が発生し、"0"
にするとオーバーフロー発生時にINTTCA0
割り込み要求は発生しま せん。なお、本モードでは、
TA0
入力端子を使用しますので、あらかじめポートの設定でTCA0
端子 を入力にセットしておく必要があります。TA0CR<TA0S>に" 1"を設定すると動作を開始します。このとき TA0DRA、TA0DRB
レジスタ は"0x0000"に初期化されます。タイマがスタートするとTA0MOD
およびTA0CR<TA0OVE>は書
込みが無効となりますので、タイマをスタートさせる前に必ず各モードの設定を行うようにして ください。13.4.5.2
動作タイマスタート後、指定したトリガエッジ
(
スタートエッジ)
がTCA0
端子に入力されるとINTTCA0
割り込み要求が発生し、指定されたソースクロックでアップカウンタのインクリメントが行われます。次に指定したエッジと逆方向のエッジを検出すると、アップカウンタの値を
TA0DRB
に取り込みINTTCA0
割り込み要求が発生し、TA0SR<TA0CPFB>
が"1"
にセットされま す。このときTA0MOD <TA0MCAP>
の設定によって次の動作が異なります。・ 両エッジキャプチャ
(TA0MOD<TA0MCAP>
が"0"
のとき)
逆方向のエッジを検出後もカウントアップは停止しません。次に指定したトリガエッ ジが入力されると、アップカウンタの値を
TA0DRA
に取り込み、INTTCA0
割り込み要 求が発生し、TA0SR<TA0CPFA>が1
にセットされます。このときアップカウンタ は"0x0000"にクリアされます。・ 片エッジキャプチャ
(TA0MOD<TA0MCAP>
が"1"
のとき)
逆方向のエッジを検出後カウントアップは停止し、アップカウンタは"0x0000"にクリ アされます。次にスタートエッジが入力されると
INTTCA0
割り込み要求が発生し、ア ップカウンタは再度インクリメントを開始します。キャプチャ動作中にアップカウンタがオーバーフローした場合、オーバーフローフラグ
TA0SR<TA0OVF>
が"1"
にセットされます。このときオーバーフロー割り込み制御TA0CR
<TA0OVE>
が"1"
にセットされている場合、INTTCA0
割り込み要求が発生します。キャプチャ完了フラグ
(TA0SR<TA0CPFA, TA0CPFB>
、オーバーフローフラグ(TA0SR
<TA0OVF>)は TA0SR
を読み出すことによって自動的に"0"にクリアされます。Page 163
キャプチャ値は、次のトリガエッジが検出されるまでに
TA0DRB (両エッジの場合は TA0DRA
も含む)から必ず読み出してください。読み出しを行わない場合、キャプチャ値は不定となりま す。また、TA0DRA
、TA0DRB
は、16
ビットアクセス命令による読み出しを行ってください。タイマ動作中に
TA0CR<TA0S>
を"0"
に設定すると、カウントアップは停止され、アップカウン タは"0x0000"にクリアされます。注
1)
タイマスタート後、指定したトリガエッジと逆方向のエッジを先に検出した場合、キャプチャは行われ ず、INTTCA0割り込み要求も発生しません。この場合、指定したトリガエッジを次に検出した時点から キャプチャを開始します。ソースクロック
カウンタ
カウンタクリア カウンタクリア
カウンタクリアカウンタクリア タイマスタート
カウントスタート
カウントスタート タイマスタート後、先に立ち下がりエッジ
を検出した場合は割り込みは発生しない
1
TA0DRBH, L 0
INTTCA0割り込み要求
0 2 3 4 mn-1 3
mn
1 0
mn
2 0
TA0CR<TA0S>
タイマストップ
TA0MOD<TA0TED>
TCA0端子入力
片エッジキャプチャ(TA0MOD<TA0MCAP>=”1”)
タイマスタート後、先に立ち下がりエッジ を検出した場合は割り込みは発生しない ソースクロック
カウンタ
タイマスタート
1
TA0DRBH, L 0
INTTCA0割り込み要求
0 2 3 4 mn-1 mn mn+1 st-1
st
mn
0
0 1 2
TA0DRAH, L 0
TA0SR<TA0CPFB>
TA0SR<TA0CPFA> TA0SRのリード
TA0DRBのリード
TA0DRAのリード st
TA0CR<TA0S>
TA0SR<TA0CPFB>
TA0SRのリード TA0SRのリード
TA0SRのリード TA0SRのリード
タイマストップ
TA0MOD<TA0TED>
TCA0端子入力
両エッジキャプチャ(TA0MOD<TA0MCAP>=”0”)
TA0DRBのリード
TA0SRのリード
図 13-7 パルス幅測定モードタイミングチャート
TMP89CM46
13.4
タイマ機能13.4.5.3
キャプチャ処理例図
13-8
にINTTCA0
割り込みサブルーチンを使ったキャプチャ処理例を示します。キャプチャエッジやオーバフローは、ステータスレジスタ
(TA0SR)
を使用すると容易に判定することができ ます。RETI TA0SR
<TA0OVF>
TA0SR
<TA0CPFB>
TA0SR⺒ߺߒ
ࠛಣℂ
TA0DRB⺒ߺߒ
ࠠࡖࡊ࠴ࡖ୯ߩಣℂ
1
ࠝࡃࡈࡠ⊒↢
ࠛ࠶ࠫࠠࡖࡊ࠴ࡖഀࠅㄟߺಣℂ
0 (ࠝࡃࡈࡠᧂ)
1 (ࠠࡖࡊ࠴ࡖቢੌ) 0
ࠠࡖࡊ࠴ࡖᧂ
INTTCA0ഀࠅㄟߺ ࠨࡉ࡞࠴ࡦ INTTCA0ഀࠅㄟߺ
ࠨࡉ࡞࠴ࡦ
RETI TA0SR
<TA0OVF>
TA0SR
<TA0CPFB>
TA0SR⺒ߺߒ
ࠛಣℂ
TA0DRB⺒ߺߒ
1
ࠝࡃࡈࡠ⊒↢
ਔࠛ࠶ࠫࠠࡖࡊ࠴ࡖഀࠅㄟߺಣℂ
0 (ࠝࡃࡈࡠᧂ)
1 (ࠠࡖࡊ࠴ࡖቢੌ) 0
ࠠࡖࡊ࠴ࡖᧂ
TA0SR
<TA0CPFA>
TA0DRA⺒ߺߒ
1 (ࠠࡖࡊ࠴ࡖቢੌ) 0
ࠠࡖࡊ࠴ࡖᧂ
ࠠࡖࡊ࠴ࡖ୯ߩಣℂ