第 9 章 スペシャルファンクションレジスタ
13.4 タイマ機能
13.4.1 タイマモード
タイマモードは、内部クロックでカウントアップするモードです。指定した時間で定期的に割り込 みを発生させ ることができます。
13.4.1.1
設定動作モード選択
TA0MOD<TA0M>
に"000"
、"001"
のいずれかの値を設定するとタイマモードに なります。ソースクロックの選択はTA0MOD<TA0CK>
で行います。TA0CR<TA0S>
を"1"
に設定すると動作を開始します。タイマがスタートするとTA0MOD
および
TA0CR<TA0OVE>は書込みが無効となりますので、タイマをスタートさせる前に必ず各モード
の設定を行うようにしてください。
表
13-3
タイマモードの分解能、最大設定時間TA0MOD
<TA0CK>
ソースクロック [Hz] 分解能 最大設定時間
NORMAL1/2, IDLE1/2モード
SLOW1/2,
SLEEP1モード fcgck=10MHz fs=32.768kHz fcgck=10MHz fs=32.768kHz SYSCR1<DV9CK>
= "0"
SYSCR1<DV9CK>
= "1"
00 fcgck/210 fs/23 fs/23 102.4μs 244.1μs 6.7s 16s
01 fcgck/26 fcgck/26 - 6.4μs - 419.4ms
-10 fcgck/22 fcgck/22 - 400ns - 26.2ms
-11 fcgck/2 fcgck/2 - 200ns - 13.1ms
-13.4.1.2
動作TA0CR<TA0S>
を"1"
に設定すると、選択された内部ソースクロックで16
ビットアップカウンタ をインクリメントします。アップカウンタの値とタイマレジスタA (TA0DRA)の 設定値が一致す
ると、INTTCA0割り込み要求が発生し、アップカウンタが"0x0000" にクリアされます。カウンタ クリア後もカウントアップは継続されます。タイマ動作中にTA0CR<TA0S>
を"0"
に設定すると、カウントアップは停止され、アップカウンタは"0x0000"にクリアされます。
13.4.1.3
自動キャプチャTA0CR<TA0ACAP>
に"1"
を設定すると、アップカウンタの最新の内容をタイマレジスタB (TA0DRB)
に取り込むことができます(
自動キャプチャ機能)
。TA0CR<TA0ACAP>
が"1"
のとき、TA0DRBL
をリードすると、そのときのアップカウンタの内容を読み出すことができます。TA0DRBH
は、TA0DRBL
をリードしたとき同時に取り込まれますので、キャプチャ値を読み出すときは必ず
TA0DRBL
、TA0DRBH
の順に読み出してください。(
キャプチャの時刻はTA0DRBL
をリードしたタイミングになります)。なお、自動キャプチャ機能はタイマの動作中/停止中どち らでも利用することができます。タイマ停止中の場合は、TA0DRBL
は"0x00"
が読み出されます。TA0DRBH
はタイマ停止後もキャプチャ値を保持しますが、タイマ停止中にTA0DRBL
をリードすると"0x00"にクリアされます。
TA0CR<TA0ACAP>に"1"が書き込まれたままタイマをスタートした場合、タイマスタート直後
から自動キャプチャは有効になります。注
1) TA0CR<TA0S>を"1"から"0"に書き替えるのと同時に TA0CR<TA0ACAP>の設定値は変更できません。
(設定しても無効となります)
Page 153
13.4.1.4
レジスタのバッファ構成(1)
テンポラリバッファTMP89CM46
は8
ビットのテンポラリバッファを内蔵しており、TA0DRAL
に対してライト命令を実行すると、ダブルバッファの有効/無効に関係なく先ずこのテンポラリバッファに データが格納されます。次に
TA0DRAH
に対してライト命令を実行すると、設定値はダブル バッファまたはTA0DRAH
にデータが格納されます。同時にテンポラリバッファの設定値は ダブルバッファまたはTA0DRAL
にデータが格納されます。(下位レジスタと上位レジスタ の設定値が同時に有効になる構造となっています)。よってTA0DRA
にデータを設定する場 合は、必ずTA0DRAL
、TA0DRAH
の順に書き込んでください。テンポラリバッファの構成は図
13-1
を参照してください。(2)
ダブルバッファTMP89CM46
は、TA0CR<TA0DBF>の設定によりダブルバッファを利用することができます。
TA0CR<TA0DBF>
を"0"
に設定するとダブルバッファが無効に、TA0CR<TA0DBF>
を
"1"
に設定するとダブルバッファが有効となります。ダブルバッファの構成は図
13-1
を参照してください。-
ダブルバッファが有効の場合タイマ動作中に
TA0DRAH
に対してライト命令を実行すると、設定値は先ずダブ ルバッファに格納され、TA0DRAH/Lはすぐには更新されません。TA0DRAH/Lは前 回の設定値でアップカウンタと比較を行い、値が一致するとINTTCA0
割り込み要 求が発生し、ダブルバッファの設定値がTA0DRAH/L
に格納されます。以降は新し い設定値で一致検出が行われます。なお、
TA0DRAH/L
に対してリード命令を実行すると、TA0DRAH/L
の値(
現在の有効値)では無く、ダブルバッファの値(最後に設定した値)が読み出されます。
タイマ停止中に
TA0DRAH/L
に対してライト命令を実行すると、設定値はダブル バッファとTA0DRAH/L
の両方にすぐに格納されます。-
ダブルバッファが無効の場合タイマ動作中に
TA0DRAH
に対してライト命令を実行すると、設定値はすぐにTA0DRAH/L
に格納され、以降は新しい設定値で一致検出が行われます。このとき
TA0DRAH/L
に設定した値がアップカウンタの値より小さかった場合、アップカウンタが一度オーバーフローした後、新しい設定値で一致検出が行われる ため、割り込み要求の間隔が設定した時間よりも長くなる場合があります。これが 問題となる場合は、ダブルバッファを有効にして使用してください。
タイマ停止中に
TA0DRAH/L
に対してライト命令を実行すると、設定値はすぐにTA0DRAH/L
に格納されます。TMP89CM46
13.4
タイマ機能ソースクロック
カウンタ
タイマスタート
1 0
n
m TA0DRALのライト
TA0DRAHのライト
TA0DRAL
一致検出
nをライト sをライト
mをライト rをライト
TA0DRAHのライトで反映される
TA0DRAHのライトで反映される
割り込みで 反映される タイマ停止中はTA0DRAHの
ライトで同時に反映される
カウンタクリア
INTTCA0割り込み要求
2 3 4 mn-1
mn
0 1
rs
0 1
2 3 2 0
TA0DRAH TA0CR<TA0S>
s
r
タイマストップ
一致検出
カウンタクリア rs-1
TA0MOD<TA0DBE>
ダブルバッファ無効時(TA0MOD<TA0DBE>=”0”)
ソースクロック
カウンタ
タイマスタート
1 0
n
m TA0DRALのライト
TA0DRAHのライト
TA0DRAL
一致検出
nをライト sをライト
mをライト rをライト
カウンタクリア
INTTCA0割り込み要求
2 3 4 mn-1
mn
0 1
mn
0 1
2 3
TA0DRAH TA0CR<TA0S>
s
r テンポラリバッファ n
(8ビット)
s テンポラリバッファ n
(8ビット)
s
ダブルバッファ mn (16ビット)
rs
一致検出 一致検出
カウンタクリア
0 1
mn-1
rs rs-1 TA0MOD<TA0DBE>
ダブルバッファ有効時(TA0MOD<TA0DBE>=”1”)
図 13-2 タイマモードタイミングチャート
Page 155
ソースクロック
カウンタ
タイマスタート
TA0DRBLのリードでTA0DRBHが更新される
TA0DRBLのリード
TA0DRBHのリード
リード値 0x00
リード値 0x00 TA0DRBL
TA0DRBH TA0CR<TA0S>
タイマストップ
18FD
0000 0001 0002 18FE 18FF 1900 1901 1902 1903 1904 1905 1906 0000
FD 00 01
00 18
02 FE FF 00 01 02 03 04 05 06 00
00 TA0MOD<TA0ACAP>
リード値 0xFE
リード値 0x18
リード値 0x00
リード値 0x00 リード値
0x18