1chの10bit AD変換値の4回平均値を算出
[GUI設定例]
32ビット積和演算回路動作設定 |
||||
MAC32bit |
使用する | |||
32ビット積和演算回路動作設定 |
使用する | |||
固定小数点モード設定 |
無効 | |||
乗算累積オーバーフロー/アンダーフローを有効にします(INTMACLOF) |
使用しない |
A/Dコンバータ |
||||
ADC |
使用する | |||
A/Dコンバータ動作設定 |
使用する | |||
コンパレータ動作設定 |
停止 | |||
分解能設定 |
10 ビット | |||
VREF(+)設定 |
VDD | |||
VREF(-)設定 |
VSS | |||
トリガ・モード設定 |
ソフトウエア・トリガ・モード | |||
動作モード設定 |
ワンショット・セレクト・モード | |||
|
|
|
ANI0 - ANI5 アナログ入力端子設定 |
ANI0 |
|
|
|
変換開始チャネル設定 |
ANI0 |
|
|
|
変換時間モード |
標準1 |
|
|
|
変換時間 |
608/fCLK 25.3333(μs) |
|
|
|
変換結果上限/下限値設定 |
ADLL≦ADCRH≦ADULで割り込み要求信号(INTAD)を発生 |
|
|
|
上限値(ADUL) |
255 |
|
|
|
下限値(ADLL) |
0 |
|
|
|
A/Dの割り込み許可(INTAD) |
使用しない |
[API設定例]
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 */
}