T_PRDHx, T_PRDLx

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を利用します。

API

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
2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |