【概要】
タイマ用のライブラリ関数は下記に対応しています。
(1) タイマ1〜5の5個の16ビットタイマ
(2) タイマ2/3とタイマ4/5の32ビットタイマ
(3) タイマ1は専用クロック発振回路を使ってスリープ中も動作可能
(4) タイマ5はADコンバータのイベントトリガ用にも使用可能
【関数詳細】
タイマ用に用意されているライブラリ関数は下表となります。
関数名 機 能 と 書 式 CloseTimerX
(X = 1 … 5 )タイマモジュールを停止させる 割り込みフラグはクリアされる
【書式】 void CloseTimerX(void);ConfigIntTimerX
(X = 1 … 5 )16ビットタイマの割り込みを設定する
【書式】 void ConfigIntTimerX(unsigned int config);
configは下記2項の組み合わせとする
@割り込み有効、無効(x=1〜5)
Tx_INT_ON Tx_INT_OFF
A割り込み優先レベル
Tx_INT_PRIOR_0 Tx_INT_PRIOR_1 Tx_INT_PRIOR_2
Tx_INT_PRIOR_3 Tx_INT_PRIOR_4 Tx_INT_PRIOR_5
Tx_INT_PRIOR_6 Tx_INT_PRIOR_7
【例】 ConfigIntTimer1(T1_INT_ON & T1_INT_PRIOR_4);OpenTimerX
(X = 1 … 5 )タイマを16ビットとして構成し動作モードを設定する
【書式】
void OpenTimer1(unsigned int config, unsigned int period);
Configは下記の組み合わせとする
@モジュールのオンオフ Tx_ON Tx_OFF
Aアイドル時の動作モード Tx_IDLE_CON Tx_IDLE_STOP
Bゲート積算モード Tx_GATE_ON Tx_GATE_OFF
Cプリスケーラ選択
Tx_PS_1_1 TxPS_1_8 Tx_PS_1_64 Tx_PS_1_256
Dクロック源 Tx_SOURCE_EXT Tx_SOURCE_INT
《タイマ1のみ》
E同期モード Tx_SYNC_EXT_ON Tx_SYNC_EXT_OFF
《タイマ2、4のみ》
F32ビットモード Tx_32BIT_MODE_ON Tx_32BIT_MODE_OFF
periodはPRレジスタに設定する16ビットの値
【例】 OpenTimer1((T1_ON & T1_IDLE_STOP & T1_GATE_OFF &
T1_PS_1_64 & T1_SYNC_EXT_ON & T1_SOURCE_INT), 3000);
ReadTimerX
(X = 1 … 5 )16ビットのタイマレジスタの読み出し
【書式】 unsigned int ReadTimerx(void);WriteTimerX
(X = 1 … 5 )16ビットタイマレジスタの設定
【書式】 void WriteTimer1(unsigned int timer);
timerはTMRレジスタにセットする16ビット値
CloseTimer23
CloseTimer4532ビットタイマをオフにし、タイマ3/5の割り込みを禁止する
【書式】 void CloseTimer23 (void);ConfigIntTimer23
ConfigIntTimer4532ビットタイマの割り込みを設定する
【書式】 void ConfigIntTimer23(unsigned int config);
void ConfigIntTimer45(unsigned int config);
configは下記2項の組み合わせとする
@割り込み有効、無効(x=1〜5)
Tx_INT_ON Tx_INT_OFF
A割り込み優先レベル
Tx_INT_PRIOR_0 Tx_INT_PRIOR_1 Tx_INT_PRIOR_2
Tx_INT_PRIOR_3 Tx_INT_PRIOR_4 Tx_INT_PRIOR_5
Tx_INT_PRIOR_6 Tx_INT_PRIOR_7
【例】 ConfigIntTimer23(T23_INT_ON & T23_INT_PRIOR_4);
OpenTimer23
OpenTimer4532ビットタイマとして構成し動作モードを設定する
【書式】
void OpenTimer23(unsigned int config, unsigned long period);
void OpenTimer45(unsigned int config, unsigned long period);
Configは下記の組み合わせとする
@モジュールのオンオフ Tx_ON Tx_OFF
Aアイドル時の動作モード Tx_IDLE_CON Tx_IDLE_STOP
Bゲート積算モード Tx_GATE_ON Tx_GATE_OFF
Cプリスケーラ選択
Tx_PS_1_1 TxPS_1_8 Tx_PS_1_64 Tx_PS_1_256
Dクロック源 Tx_SOURCE_EXT Tx_SOURCE_INT
E同期モード Tx_SYNC_EXT_ON Tx_SYNC_EXT_OFF
periodはPRレジスタに設定する32ビットの値
【例】 OpenTimer23((T23_ON & T23_IDLE_STOP & T23_GATE_OFF &
T23_PS_1_64 & T23_SYNC_EXT_ON & T23_SOURCE_INT), 300000);ReadTimer23
ReadTimer4532ビットのタイマレジスタの読み出し
【書式】 unsigned int ReadTimer23(void);WriteTimer23
WriteTimer4532ビットタイマレジスタの設定
【書式】 void WriteTimer1(unsigned int timer);
timerはTMRレジスタにセットする32ビット値
マクロとして用意されているものは下表となります
マクロ名 機 能 と 書 式 EnableTX
DisableIntTX
(X = 1 to 5)タイマXの割り込みを許可、禁止する SetPriorityIntTX
(X = 1 to 5)タイマXの割り込み優先レベルを設定する
【書式】 SetPriorityTx(priority); x=1〜5
priorityは1〜7のいずれか
【基本的な使い方】
(1) タイマ用ライブラリを使うときには下記ヘッダファイルをインクルードする
#include <timer.h>
(2) プロジェクトへのライブラリの登録
下図のようにPIC24F用のライブラリを登録します。
【使用例1】
実際の使用例は下記のようになります。
この例ではタイマ1とタイマ2の2個のタイマでLEDを点滅させていますが、
スイッチを押している間CPUの割り込みレベルを変更するので、優先レベルの低い
タイマ2の割り込みが禁止となりそちら側のLEDだけ点滅が停止します。