Everything

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

}