• 検索結果がありません。

Timer1 モジュール ( ゲート制御対応 )

ドキュメント内 PIC16(L)F1703/7 Data Sheet (ページ 177-188)

PIC16(L)F1703/7

20.0 Timer1 モジュール ( ゲート制御

PIC16(L)F1704/8

20.1 Timer1 の動作

Timer1

モジュールは

16

ビットのインクリメント カウ ンタで、

TMR1H:TMR1L

レジスタペアを介してアクセ スします。

TMR1H

または

TMR1L

に書き込むと、カウ ンタ値を直接更新できます。

内部クロック源を使うと、このモジュールはタイマと して機能し、1命令サイクルごとにインクリメントし ます。外部クロック源を使うと、このモジュールはタ イマまたはカウンタとして機能し、外部クロック源の 指定したエッジごとにインクリメントします。

Timer1を有効にするには、 T1CONレジスタのTMR1ON

ビットと

T1GCON

レジスタの

TMR1GE

ビットをそれ ぞれセットします。表20-1に、Timer1のイネーブル 選択を示します。

20.2 クロック源の選択

T1CON

レジスタの

TMR1CS<1:0>

T1OSCEN

ビッ トにより

Timer1

のクロック源を選択します。表20-2 に、クロック源の選択を示します。

20.2.1

内部クロック源

内部クロック源を選択した場合、TMR1H:TMR1Lレジ スタペアは、

Timer1

プリスケーラで決まる

F

OSCの倍 数単位でインクリメントします。

F

OSCの内部クロック源を選択した場合、Timer1 レジ スタの値は、1命令クロックサイクルあたり

4

カウン ト分インクリメントします。このため、

Timer1

の値を 読み出す場合、分解能に

2 LSB

の誤差が生じます。

Timer1

の分解能を最大限に活かすには、

Timer1

クロック 入力をゲート制御する非同期の入力信号が必要です。

非同期の信号源として、以下のものが使えます。

• Timer1

ゲートへ接続される

T1G

ピン上の非同期イ ベント

20.2.2

外部クロック源

外部クロック源を選択した場合、

Timer1

モジュールは タイマまたはカウンタとして動作します。

カウンタとして使う場合、Timer1 は外部クロック入力

T1CKI

の立ち上がりエッジでインクリメントします。こ

の外部クロック入力は、マイクロコントローラのシス テムクロックに同期させる事が可能ですが、非同期で 動作させる事もできます。

クロック オシレータによるタイマとして使う場合、専 用の内部オシレータ回路と外付けの

32.768 kHz

水晶 振動子を使えます。

表 20-1:

Timer1

イネーブル選択

TMR1ON TMR1GE Timer1

の動作

0 0

なし

0 1

なし

1 0

常に

ON

1 1

カウント有効

Note:

カウンタモードの場合、下記の

1

つまた

は複数の条件発生後はカウンタが最初の 立ち上がりエッジでインクリメントする 前に、立ち下がりエッジを

1

回検出する 必要があります。

• POR

Timer1

を有効にした

• TMR1H

または

TMR1L

に書き込んだ

• Timer1

を無効にした

• T1CKI

High

の時に

Timer1

を無効

(TMR1ON = 0)

にして、その後

T1CKI

Lowの時に Timer1

を有効

(TMR1ON=1)

にした

20-2:

クロック源の選択

TMR1CS<1:0> T1OSCEN

クロック源

PIC16(L)F1703/7

20.3 Timer1 プリスケーラ

Timer1

のプリスケーラは、クロック入力の

1/1、1/2、

1/4

1/8

倍の

4

種類の設定が可能です。プリスケール カウンタは、T1CONレジスタの

T1CKPS

ビットで制 御します。プリスケールカウンタは直接読み書きでき ません。しかし、TMR1Hまたは

TMR1L

への書き込み 時にクリアされます。

20.4 Timer1 ( セカンダリ ) オシレータ

専用 の

32.768 kHz

低消 費電 力オ シレ ータ 回路 が、

SOSCI (

入力

)

SOSCO (

アンプ出力

)

の間に内蔵さ れています。この内部回路は、外付けの

32.768 kHz

水 晶振動子と組み合わせて使います。

オシレータ回路は、

T1CON

レジスタのT1OSCENビッ トをセットすると有効になります。このオシレータは、

スリープ中も動作を継続します。

20.5 非同期カウンタモード時の Timer1 動作

T1CON

レジスタの

T1SYNC

制御ビットをセットした 場合、外部クロック入力は同期されません。タイマは 内部位相クロックに非同期でインクリメントします。

外部クロック源が選択されている場合、タイマはス リープ中も動作を継続するため、オーバーフロー割 り込みを生成してプロセッサを復帰させる事ができ ます。しかし、このタイマの読み書きには、ソフト ウェアに特別な注意を払う必要があります

(

セクショ

20.5.1「非同期カウンタモードにおけるTimer1

読み書き」参照

)

20.5.1

非同期カウンタモードにおける

Timer1

の読み書き

タイマが外部の非同期クロックで動作している間は、

TMR1H

または

TMR1L

の正しい読み出し動作が

(

ハー ドウェアによって

)

保証されます。しかし、

16

ビット タイマを

2

つの

8

ビット値として読み出すため、2回 の読み出しの間にタイマがオーバーフローする可能性 に注意する事が必要です。

タイマへの書き込みの場合、実行前にタイマを停止す る事を推奨します。レジスタがインクリメント中にタ イマレジスタへ書き込むと、書き込みの競合が発生す る場合があります。この場合、

TMR1H:TMR1L

レジス タペアが予期しない値となる事があります。

20.6 Timer1 ゲート

Timer1

は、フリーランニング カウンタ、または

Timer1

ゲート回路による有効

/

無効切り換えが可能なカウン タとして設定できます。この機能は

Timer1

ゲートイ ネーブルとも呼ばれます。

Timer1

ゲートは複数の選択可能なソースによって駆

動できます。

20.6.1 Timer1

ゲートイネーブル

Timer1

ゲート イネーブルモードを有効にするには、

T1GCONレジスタのTMR1GEビットをセットします。

Timer1

ゲート イネーブルモードの極性は、T1GCON レジスタの

T1GPOL

ビットによって設定します。

Timer1

ゲート イネーブルモードが有効の場合、

Timer1

Timer1

クロック源の立ち上がりエッジでインクリ

メントします。

Timer1

ゲートイネーブルモードが無 効の場合、

Timer1

はインクリメントせずに現在のカウ ント値を保持します。タイミングの詳細は、図20-3を 参照してください。

Note:

このオシレータを使う場合、起動と安定

化の時間が必要です。従って、Timer1を

使うには

T1OSCEN

をセットし、適切な

遅延を確保する必要があります。OST遅 延と同様の遅延をソフトウェアで実装す るには、TMR1IF ビットをクリアしてか ら

TMR1H:TMR1L

レジスタペアを

FC00h

にプリセットします。

1024

クロックサイ クルが経過すると

TMR1IF

フラグがセッ トされ、オシレータが動作中でかつ十分 安定している事を示します。

Note:

動作を同期モードから非同期モードに切

り換える際は、インクリメントがスキップ される可能性があります。非同期モード から同期モードに切り換える際は、イン クリメントが

1

回多く実行される可能性 があります。

表 20-3:

Timer1

ゲートイネーブルの選択

T1CLK T1GPOL T1G Timer1

の動作

0 0

カウントする

0 1

カウントを保持する

1 0

カウントを保持する

1 1

カウントする

PIC16(L)F1704/8

20.6.2 Timer1

ゲートのソース選択

表20-4に

Timer1

ゲートのソース選択を示します。ソー ス選択には、T1GCONレジスタの

T1GSS

ビットを使 います。使える各ソースの極性も選択できます。極性 の選択には、T1GCONレジスタの

T1GPOL

ビットを 使います。

表 20-4:

Timer1

ゲートのソース

20.6.2.1 T1G

ピンのゲート動作

T1G

ピンは、

Timer1

のゲート制御用に使われるソース の

1

つです。このピンから

Timer1

のゲート回路に外部 ソースを供給できます。

20.6.2.2 Timer0

オーバーフロー ゲート動作

Timer0

FFh

から

00h

へインクリメントすると、

Low

から

High

に遷移するパルスが自動的に生成され、内 部で

Timer1

ゲート回路に供給されます。

20.6.3 Timer1

ゲート トグルモード

Timer1

のゲート トグルモードが有効の場合、シング

ルレベル パルスの長さではなく、Timer1 ゲート信号 のフルサイクルの長さを計測できます。

Timer1

ゲートのソースは、信号のインクリメント エッ ジごとにステートが変化するフリップフロップを介し て接続されます。タイミングの詳細は、図20-4を参照 してください。

Timer1

ゲート トグルモードを有効にするには、

T1GCON

レジスタの

T1GTM

ビットをセットします。

T1GTM

ビットがクリアされると、フリップフロップはクリア されて、その状態を保持します。これは、どのエッジ を計測するかを制御するために必要です。

20.6.4 Timer1

ゲート シングルパルス モード

Timer1

ゲートシングルパルスモードを有効にすると、

シングルパルスのゲートイベントをキャプチャでき ます。

Timer1

ゲートシングルパルスモードを有効にす るには、まず

T1GCON

レジスタの

T1GSPM

ビットを セットします。次に、

T1GCONレジスタのT1GGO/DONE

ビットをセットします。

Timer1

は、次のインクリメン トエッジで完全に有効になります。パルスの次のト レーリング エッジで、

T1GGO/DONE

ビットが自動的 にクリアされます。ソフトウェアで

T1GGO/DONE

ビットが再度セットされるまで、他のいかなるゲート イベントも

Timer1

をインクリメントできません。タ イミングの詳細は、図20-5を参照してください。

T1GCON

レジスタの

T1GSPM

ビットをクリアする事 でシングルパルス ゲート モードを無効にする場合、

T1GGO/DONE

ビットもクリアする必要があります。

トグルモードとシングルパルス モードを同時に有効 にすると、両方の動作を併用できます。これにより、

Timer1

ゲートソースのサイクル時間を計測できます。

タイミングの詳細は、図20-6を参照してください。

20.6.5 Timer1

ゲート値ステータス

Timer1

ゲート値ステータスを使うと、ゲート制御値の

最新のレベルを読み出す事ができます。この値は、

T1GCON

レジスタの

T1GVAL

ビットに格納されてい ます。

Timer1

ゲートが有効ではない

(TMR1GE

ビット がクリアされている

)

場合でも

T1GVAL

ビットの値は 有効です。

20.6.6 Timer1

ゲートイベント割り込み

Timer1

ゲートイベント割り込みが有効の場合、ゲート

イベントの完了時に割り込みを生成できます。

T1GVAL

の立ち下がりエッジで、

PIR1

レジスタの

TMR1GIF

フラ グビットがセットされます。

PIE1

レジスタの

TMR1GIE

ビットをセットすると、割り込みの生成が認識され ます。

Timer1

ゲートが有効ではない

(TMR1GE

ビットがクリ アされている

)

場合でも、

TMR1GIF

フラグビットは動 作します。

T1GSS Timer1

ゲートのソース

00 Timer1

ゲートピン

01 Timer0

のオーバーフロー

(TMR0のFFhから 00hへのインクリメント)

10

予約済み

11

予約済み

Note:

ゲート極性の変更と同時にトグルモード

を有効にすると、不定動作が生じる可能 性があります。

ドキュメント内 PIC16(L)F1703/7 Data Sheet (ページ 177-188)