Usage example (Phase counting mode)

A phase difference between external input signals from two pins TRGCLKA and TRGCLKB is detected and the TRG register is incremented/decremented.

Count the number of TRG register overflow and underflow.

[Waveform example]

[GUI setting example]

TimerRG

Used

TMRG

Used

Functions

Phase counting mode

Initial count

0

Counter clear

Clear disabled

CNTEN0

Used

CNTEN1

Used

CNTEN2

Used

CNTEN3

Used

CNTEN4

Used

CNTEN5

Used

CNTEN6

Used

CNTEN7

Used

Enable TRG overflow interrupt

Used

Enable TRG under flowinterrupt

Used

INTTRG priority

Low/ level3 (low priority level)

[API setting example]

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

}