使用例(位相計数モード)
TRGCLKA、TRGCLKB 端子からの外部入力信号の位相差を検出し、TRG レジスタをアップ/ダウンカウントさせ、オーバフロー回数とアンダフロー回数を数える。
[波形例]
[GUI設定例]
タイマRG |
使用する | |||
TMRG |
使用する | |||
機能 |
位相計数モード | |||
初期計数 |
0 | |||
カウンタクリア |
クリア禁止 | |||
CNTEN0 |
使用する | |||
CNTEN1 |
使用する | |||
CNTEN2 |
使用する | |||
CNTEN3 |
使用する | |||
CNTEN4 |
使用する | |||
CNTEN5 |
使用する | |||
CNTEN6 |
使用する | |||
CNTEN7 |
使用する | |||
TRGオーバフロー割り込み許可 |
使用する | |||
TRGアンダフロー割り込み許可 |
使用する | |||
INTTRG優先順位 |
レベル3(低優先順位) |
[API設定例]
r_cg_main.c
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
/* Start the TMRG module operation */
R_TMRG0_Start();
while (1U)
{
;
}
/* End user code. Do not edit comment generated here */
}
r_cg_tmrg_user.c
/* Start user code for global. Do not edit comment generated here */
volatile uint8_t inttrg_over_cnt = 0U;
volatile uint8_t inttrg_under_cnt = 0U;
/* End user code. Do not edit comment generated here */
static void __near r_tmrg0_interrupt(void)
{
/* Start user code. Do not edit comment generated here */
uint8_t temp_trg = 0U;
/* === Count number of overflow or under flow === */
/* Mask TRGSR resister to check overflow or underflow occurred */
temp_trg = TRGSR & 0x0CU;
if (temp_trg == 0x08U)
{
/* --- Count up number of overflow --- */
inttrg_over_cnt++;
/* --- Clear overflow Flag --- */
TRGSR &= 0x07U;
}
else
{
/* --- Count up number of underflow --- */
inttrg_under_cnt++;
/* --- Clear under flow Flag --- */
TRGSR &= 0x0BU;
}
/* End user code. Do not edit comment generated here */
}