PICのタイマはどんなもの

PIC のタイマはどんなもの
5
PIC のタイマは
どんなもの
分でわかるタイマ
神崎 康宏
マイコンには周辺モジュールがたくさん搭載されています.
みんなが使うのがタイマです.
1
タイマ 0 の構成
PIC には最低「タイマ 0」の 8 ビット・タイマ
た後,そのままカウント・アップの動作を続けて
が内蔵されています.よく利用される PIC の多く
います.
は,それに加えてタイマ 1
(16 ビット)
,タイマ 2
(8
● タイマ 0 で時間待ちする
ビット)の合計三つを内蔵していることもありま
タイマ 0 を使用したシンプルな時間待ちのプロ
す.
グラムは,次のような設定をします.
タイマ 0 のカウンタのしくみの部分を図 1 に示
① OPTION レジスタのカウンタのクロックに,
します.
「システム・クロック」もしくは「外部
3
3
3
のクロック・パルス」を数えるという動作をしま
内部のシステム・クロックを選択
② タイマ 0 レジスタにカウント・アップする初
す.カウンタに初期値を書き込むと,その値から
期値を W レジスタにセットする
255 まで CPU の動作とは別にカウント・アップ
③ オーバフロー・ビットをクリアする
し,256 でオーバフロー・ビットを ON
(=1)にし
④ W レジスタにセットした値をタイマ 0 レジス
て,カウンタはゼロ・クリア
(0 に戻る)
されます.
したがって,タイマのカウントは,初期値の書き
込みからオーバフロー・ビットが ON になるまで
タにセット
⑤ INTCON レ ジ ス タ の タ イ マ 0 の オ ー バ フ ロ
ー・ビットをチェックし,フラグが ON にな
ると計数が完了する
が「設定時間」になります.カウンタは 0 に戻っ
パルスが一つ入力するごとに
カウンタの値が一つ増す
0
1
P I Cのシステム・
クロックを,カ
ウンタの入力ク
ロックとする
INTCONレジスタのT0IFビットが,
‘1’
のとき…オーバフローあり
‘0’
のとき…オーバフローなし
2
3
255
システム・クロック
1
の のパルスが入力
4
される
外部からの
パルス
255+1でオーバフローのビットが
ONになり,カウンタは0になる
付加
回路
どちらか選択できる
マイコンの外からのパルスを
カウンタへの入力パルスとし
て利用できることができる
TMR0
255からカウントしたい値を
引いた値をTMR0にセットし,
カウントを開始する
これはOPTIONレジスタのT0CSビットの値で選定する.
T0CS…
‘0’
…内部クロック
T0CS…
‘1’
…外部クロック
図 1 タイマ 0
(TMR0)
のカウンタのしくみ
33
5
分でわかるタイマ
タイマ0の設定は,基本的に
はリセット後のデフォルト
の設定値を使用する
8MHzのシステム・
クロックの場合,
(1/8MHz)
×4
×4
=
(0.125μs)
=0.5μsのパルス
入力となる
この期間が計測時間
リスト 1
タイマ0の処理
プログラム
bcf
OPTION_REG,T0CS
movlw
bcf
movwf
btfss
goto
repl
D'256'-D'100'
INTCON,T0IF
TMR0
INTCON,T0IF
rep1
② D'256'-D'100'は10
進数で256-100 の引き
算を示す.カウントアッ
プする数を引く数にセッ
トする
④
⑤
③ INTCON割り込みレジス
タのオーバフロー・フラ
グをクリア
100カウントしているので,50μs
の待ち時間が設定できる
以上の処理を行うプログラムをリスト 1 に示し
タイマの使い方,わかりましたか? タイマは,マ
イコンのプログラムとは無関係に,クロック・パル
スを数えるという動作をしています.しかし,これ
では,あっという間にオーバフローをしてしまって,
長い時間を測れないですね.
ます.このプログラムを計時が必要な場所に配置
し,初期値を書き込み,オーバフロー・ビットが
ON になるまでが計測時間ということになります.
2
① システム・クロックを
使用するためにクリア
プリスケーラを使用すると,より広い範囲の対応ができる
タイマ 0 は図 2 に示すように,8 ビットのプリ
プリスケーラは電源が入ったときやリセット直後
スケーラが内蔵されています.このプリスケーラ
のデフォルトの設定値では,ウォッチドッグ・タ
は,分周器とも呼ばれ,入力のパルスに対して割
イマ(WDT)で利用されています.そのためプリ
り算をします.
スケーラを利用するためには,OPTION レジス
タの PSA ビットを‘0’,そして PS2,PS1,PS0
タイマ 0 の場合,これらタイマ 0 の使い方を決
める設定は OPTION レジスタで行います.この
内部クロックとしてはシステ
ム・クロック/4のクロックがこ
こに加わる
デバイスによっ
て割り当てられ
るピン番号が異
なる
タイマ0
111
WDT
1:2
1:1
1:4
1:2
1:256
1:128
0
8ビットの読み
書き可能なレジ
スタ.計数結果
が示される
1
T0CKI
ピン
8ビット
1
プログラマブル・
プリスケーラ
内部クロックと
同期を取る
0
T0SE
T0CS
図 2 PIC のタイマ 0 の内部ブロック図
PS2, PS1, PS0 PSA
OPTION_REG
レジスタの制御
ビット
TMR0
PSout
(2サイクル遅延)
3
入力クロックのエッジ選択. ‘1’:入力が“H”
から
“L”
でインクリメント
‘0’:入力が“L”
から
“H”
でインクリメント
34
PS2, PS1, PS0
000
001
データ・バス
FOSC /4
外部クロック
は,この端子
より入力
T0CS
ソース・クロックの選択
回路.OPTION_REGレ
ジスタのT0CSが
‘0 ’
の内
部クロック,
‘1 ’
の外部ク
ロック
∼
P I C12F683の場合.
5番ピン
(GP2/AN2/
T0CK I / I NT∼)
の 3 ビットでプリスケーラの分周比を決めます.
プリスケーラ
出力
PSAプリスケーラ割り当てビット
‘1’
:WDTに割り当て
‘ 0’
:タイマ0に割り当て
リセット後のデフォルト値
レジスタ値がFFから00
にオーバフローするとき
に割り込みを発生する.
I N T C O N レジスタの
T0IFビットをチェック
することで,オーバフロ
ーを検出できる