使用例(入力パルス間隔測定)
入力端子の立下りエッジの間隔を測定する
[波形例]
[GUI設定例]
タイマ |
使用する | |||
TAU0 |
使用する | |||
Channel0 |
||||
チャネル 0 |
入力パルス間隔測定 | |||
入力ソース設定 |
TI00 | |||
TI00測定可能なパルス間隔 |
0.125 (μs) < TI00 < 8.192 (ms) | |||
TI00端子入力信号のノイズ・フィルタ使用 |
使用しない | |||
カウント開始時にINTTM00発生する |
使用しない | |||
入力エッジ設定 |
立下りエッジ | |||
タイマ・チャネル0のキャプチャ完了(INTTM00) |
使用する | |||
優先順位 |
低 |
備考 カウント・クロックの周期は、「TI00測定可能なパルス間隔」で選択した範囲の最小値の1/2となります。この設定では、0.0625usecとなります。
[API設定例]
r_main.c
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
/* Start TAU0 channel 0 counter */
R_TAU0_Channel0_Start();
while (1U)
{
;
}
/* End user code. Do not edit comment generated here */
}
r_cg_timer_user.c
/* Start user code for global. Do not edit comment generated here */
volatile uint32_t g_width = 0UL;
/* End user code. Do not edit comment generated here */
static void __near r_tau0_channel0_interrupt(void)
{
if ((TSR00 & _0001_TAU_OVERFLOW_OCCURS) == 1U) /* overflow occurs */
{
g_tau0_ch0_width = (uint32_t)(TDR00 + 1U) + 0x10000U;
}
else
{
g_tau0_ch0_width = (uint32_t)(TDR00 + 1U);
}
/* Start user code. Do not edit comment generated here */
/* Get TAU0 channel 0 input pulse width. Pulse width(usec) = (Period of count clock(usec) * g_width) */
R_TAU0_Channel0_Get_PulseWidth((uint32_t *)&g_width);
/* End user code. Do not edit comment generated here */
}