Usage example (Input pulse interval measuremen)
Measure the interval of the falling edges input to TImn pin.
[Waveform example]
[GUI setting example]
Timer |
Used | |||
TAU0 |
Used | |||
Channel0 |
||||
channel 0 |
Input pulse interval measurement | |||
Input source setting |
TI00 | |||
TI00 interval range |
0.125 (μs) < TI00 < 8.192 (ms) | |||
Enable using noise filter of TI00 pin input signal |
Unused | |||
Generates INTTM00when counting is started. |
Unused | |||
Input edge setting |
Falling edge | |||
End of timer channel0 capture, generate an interrupt (INTTM00) |
Used | |||
Priority |
Low |
Remark The period of count clock is 1/2 of the minimum value in the eage selected ‘TI00 interval range’. At this GUI setting example, the period of count clock is 0.0625usec.
[API setting example]
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 */
}