Usage example

Get A/D conversion results of 1 pin 4 times. Then, calculate the average of the results.

[GUI setting example]

32-bit multiply-accumlator

MAC32bit

Used

32-bit multiply-accumlator operation setting

Used

Fixed point mode setting

Disable

Enable multiply-accumulation overflow/underflow (INTMACLOF

Unused

A/Dconvertor

ADC

Used

A/D convertor operation setting

Used

Comparator operation setting

Stop

Resolution

10 bits

VREF(+) setting

VDD

VREF(-) setting

VSS

Trigger setting mode

Software trigger mode

Operation mode setting

One-shot select mode

ANI0 ANI5 analog input selection

ANI0

A/D channel selection

ANI0

Conversion time mode

Normal 1

Conversion time

608/fCLK 25.3333(μs)

Conversion result upper/lower bound value setting

Generates an interrupt request (INTAD) when ADLLADCRHADUL

Upper bound (ADUL) value

255

Lower bound (ADLL) value

0

Use A/D interrupt (INTAD)

Unused

[API setting example]

r_cg_main.c

/* Start user code for global. Do not edit comment generated here */

volatile mac32bit_uint64_t g_mac32bit_buf;

volatile uint16_t g_adc_fix;

volatile uint16_t g_buffer;

volatile uint8_t g_cnt;

/* End user code. Do not edit comment generated here */

void main(void)

{

R_MAIN_UserInit();

/* Start user code. Do not edit comment generated here */

/* Start the AD converter */

R_ADC_Start();

while (1U)

{

while (0U == ADIF)

{

;

}

ADIF = 0U;

/* Return the conversion result in the buffer */

R_ADC_Get_Result((uint16_t *)&g_buffer);

/* Caculate unsigned values in multiply-accumulation mode */

R_MAC32Bit_MACUnsigned(1U, g_buffer, (mac32bit_uint64_t *)&g_mac32bit_buf);

if ((++g_cnt) >= 4U)

{

g_cnt = 0U;

g_adc_fix = (g_mac32bit_buf.low_low >> 4U);

g_mac32bit_buf.low_low = 0U;

g_mac32bit_buf.low_high = 0U;

g_mac32bit_buf.high_low = 0U;

g_mac32bit_buf.high_high = 0U;

}

}

/* End user code. Do not edit comment generated here */

}