Everything

使用例(位相計数モード)

TRGCLKATRGCLKB 端子からの外部入力信号の位相差を検出し、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 */

}

割り込みコントローラ(ICU)使用例を参照