使用例

1ch10bit 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)

 

 

 

変換結果上限/下限値設定

ADLLADCRHADULで割り込み要求信号(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 */

}