T_CFGRx ( Timer Configuration Register )はタイマーの動作モードを設定します。
タイマーが3系統あるため、T_CFGR0、T_CFGR1、T_CFGR2の三本が用意されています。
このレジスタは図1のような構造をもっています。初期値は0です。
図1 レジスタの構造
各ビットの意味は以下のとおりです。
タイマーの動作モードを指定します。
パルス幅変調モードにおいて、TMRxピンの出力の極性を指定します。
パルス幅計測モードにおいて、TMRxピンの入力の極性を指定します。
パルス幅変調モードにおいて、連続パルス出力を指定します。
パルス幅計測モードにおいて、割り込み位置を指定します。
割り込みを有効にします。
パルス幅測定モードでのパルスの入力ピンを指定します。
パルス幅測定モードでは測定周期の始まりとともに割り込みが発生します。そのため、最初の一回の割り込みは正しい周期を反映していません。
C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hで行われています。T_CFGRxにアクセスする前には必ずIOPGにTimer_Pageを設定してください。
TIMER0の場合は以下のとおりです。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, Timer_Page) // TIMERページに設定 io_space_write(T_CFGR0, 値) // T_CFGR0に値を設定 変数 = io_space_read(T_CFGR0) // T_CFGR0の値を取得
TIMER1の場合は以下のとおりです。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, Timer_Page) // TIMERページに設定 io_space_write(T_CFGR1, 値) // T_CFGR1に値を設定 変数 = io_space_read(T_CFGR1) // T_CFGR1の値を取得
TIMER2の場合は以下のとおりです。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, Timer_Page) // TIMERページに設定 io_space_write(T_CFGR2, 値) // T_CFGR2に値を設定 変数 = io_space_read(T_CFGR2) // T_CFGR2の値を取得
アナログデバイセズが配布しているmcmの中のビット定義ファイルdef2191bit.hから関連するビット定義部分をここに引用します。
// Definition for TCFGR #define TIN_SEL BIT_5 #define IRQ_ENA BIT_4 #define PERIOD_CNT BIT_3 #define PULSE_HI BIT_2 #define TMODE_OFST 0 #define TMODE_MASK ( 0x3 << TIMOD_OFST ) #define TMODE_PWMOUT ( 1 << TIMOD_OFST ) #define TMODE_WIDTHCAP ( 2 << TIMOD_OFST ) #define TMODE_EXTCLK ( 3 << TIMOD_OFST )
項目 | マニュアルのページ等 |
---|---|
説明 | HR B-84 |
解説 | HR 12-2 |