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 ADLL≦ADCRH≦ADUL | 
| 
 | 
 | 
 | 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 */
}