Everything

R_TMR_RG0_Get_PulseWidth

16ビット・タイマRG0のパルス幅を読み出します。

備考1.          API 関数を呼び出しは、16ビット・タイマRG0をインプット・キャプチャ機能で使用している場合に限られます。

備考2.          パルス幅測定中にオーバフロー(2回以上)が発生した場合、正常なパルス幅を読み出すことはできません。

 

[指定形式]

#include  “r_cg_macrodriver.h”

#include  “r_cg_timer.h”

void      R_TMR_RJ0_Get_PulseWidth ( uint32_t * const active_width,
uint32_t * const inactive_width, timer_channel_t channel );

 

[引数]

I/O

引数

説明

O

unit32_t * const active_width;

TRGIO0端子から読み出したアクティブレベル幅を格納する領域へのポインタ

O

uint32_t * const inactive_width;

TRGIO0端子から読み出したインアクティブ・レベル幅を格納する領域へのポインタ

I

timer_channel_t channel;

読み出し対象端子

  TMCHANNELA :             TRGIOA0端子

  TMCHANNELB :             TRGIOB0端子

 

[戻り値]

なし

 

 

 

使用例(アウトプットコンペアモード)

一定間隔でトグル動作を行い,デューティ50%の方形波を出力する

 

[波形例]

 

[GUI設定例]

タイマRG

使用する

TMRG

使用する

機能

アウトプットコンペア機能

カウントソース設定

内部クロック

内部クロック設定

自動

TRGカウンタ設定 (カウンタクリア)

TRGGRAコンペア一致でクリア

レジスタ機能設定 (TRGGRC)

ジェネラルレジスタ

レジスタ機能設定 (TRGGRD)

ジェネラルレジスタ

コンペア値設定 (TRGGRA)

100μs (実際の値:100)

出力設定 (TRGIOA端子)

トグル出力

TRGGRAコンペア一致割り込み許可

使用する

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 */

}

 

 

使用例(PWMモード)

指定した周期/デューティのPWM出力を行う

 

[波形例]

 

[GUI設定例]

タイマRG

使用する

TMRG

使用する

機能

PWMモード

カウントソース設定

内部クロック

内部クロック設定

自動

カウンタクリア

TRGGRAコンペア一致でクリア

レジスタ機能設定 (TRGGRC)

ジェネラルレジスタ

レジスタ機能設定 (TRGGRD)

ジェネラルレジスタ

周期

100μs (実際の値:100)

デューティ

50(%) (実際の値:50)

TRGGRAコンペア一致割り込み許可

使用する

TRGGRBコンペア一致割り込み許可

使用しない

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 */

}

 

 

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

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)使用例を参照