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 */
}
使用例(位相計数モード)
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 */
}