Usage example
Start A/D conversion by ‘External interrupt edge detection 0’ of ELC event. Store A/D conversion result to RAM, then stop ELC.
[GUI setting example]
| Event link controller | Used | |||
| ELC | Used | |||
| A/D conversion starts | Used | |||
| Event generation source | ‘External interrupt edge detection 0 | |||
| Interrupt | Used | |||
| INTP | Used | |||
| INTP0 | ||||
| Valid edge | Falling | |||
| Priority | Low | |||
| A/D convertor | Used | |||
| ADC | Used | |||
| A/D convertor operation setting | Used | |||
| Comparator operation setting | Operation | |||
| Resolution setting | 10 bits | |||
| VREF(+) setting | VDD | |||
| VREF(-) setting | VSS | |||
| Trigger setting mode | Hardware trigger no wait mode | |||
| Hardware trigger no wait mode | ELC | |||
| Operation mode setting | One-shot select mode | |||
| ANI0 - ANI23 analog input selection | ANI0 | |||
| A/D channel selection | ANI0 | |||
| Conversion time mode | Normal 1 | |||
| Conversion time | 38 (1216/fCLK)(μ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) | Used | |||
| Priority | Low | |||
[API setting example]
r_main.c
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
/* Start the AD converter */
R_ADC_Start();
while (1U)
{
;
}
/* End user code. Do not edit comment generated here */
}
r_cg_adc_user.c
/* Start user code for include. Do not edit comment generated here */
#include "r_cg_elc.h"
/* End user code. Do not edit comment generated here */
/* Start user code for global. Do not edit comment generated here */
volatile uint16_t g_adc_value;
/* End user code. Do not edit comment generated here */
static void __near r_adc_interrupt(void)
{
/* Start user code. Do not edit comment generated here */
/* Stop the AD converter */
R_ADC_Stop();
/* Return the conversion result in the buffer */
R_ADC_Get_Result((uint16_t *)&g_adc_value);
/* Stop the ELC event resources */
R_ELC_Stop(0x00000001U);
/* End user code. Do not edit comment generated here */
}