T_PRDHx ( Timer Width High Register X)および T_CNTL( Timer Width Low Register x )はパルス周期値を表示・指定します。カウンターは32ビットであるため、HとLの二本のレジスタを使用します。
タイマーが3系統あるため、T_PRDH0、T_PRDH1、T_PRDH2、T_PRDL0、T_PRDL1、T_PRDL2の六本が用意されています。
二つのレジスタとも16ビット符号なしレジスタです。初期値は0です。二つのレジスタはパルス周期を格納する内部32ビットレジスタの上位と下位の値を表します。以下に各モードでのパルス周期レジスタの働きを記述しますが、モードの詳細についてはT_CNTHx, T_CNTLxを参照してください。
このモードでは、パルス幅レジスタは生成するパルスの周期を指定します。パルス周期はタイマーがイネーブルの状態でも書き換えることができます。
詳細はT_WHRx, T_WLRxを参照してください。
このモードではパルス周期レジスタは読み出し専用です。
このモードではパルス周期レジスタは書き込み専用です。値は無視されますが周期レジスタの書き込みを上下ワード一斉に行うための引き金としてT_WLRxを利用します。
C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hで行われています。T_PRDHxにアクセスする前には必ずIOPGにTimer_Pageを設定してください。T_PRDLxのアクセスも同様です。
TIMER0の場合は以下のとおりです。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, Timer_Page) // TIMERページに設定 io_space_write(T_PRDH0, 値) // T_PRDH0に値を設定 変数 = io_space_read(T_PRDH0) // T_PRDH0の値を取得
TIMER1の場合は以下のとおりです。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, Timer_Page) // TIMERページに設定 io_space_write(T_PRDH1, 値) // T_PRDH1に値を設定 変数 = io_space_read(T_PRDH1) // T_PRDH1の値を取得
TIMER2の場合は以下のとおりです。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, Timer_Page) // TIMERページに設定 io_space_write(T_PRDH2, 値) // T_PRDH2に値を設定 変数 = io_space_read(T_PRDH2) // T_PRDH2の値を取得
項目 | マニュアルのページ等 |
---|---|
解説 | HR 12-6 |