Renesas RAマイコンを使ってみよう(5)~UARTとスイッチを使ってみよう~2 の続きです。
今回は、ADCを使ってみましょう。
ADCの追加
FSP Configuratio から ADC を追加します。
最初に使用する P000 のピンを見てみましょう。
P000 は ADC0 となっています。
New Stack⇒Analog⇒ADC(r_adc) を選択します。
g_adc0_ADC(r_adc) のプロバティを開きます。
Mode を SingleScan⇒Continuous Scan
Channel0、VoltageSensor のチェックを入れます。
ここまで設定した段階で Generate Project Content をクリックします。
プログラム作成
Developer Assistance を開き g_adc0 ADC から
Call R_ADC_Open,R_ADC_ScanCfg,R_ADC_ScanStart を探し追加します。
次に Call R_ADC_ScanStart を追加します。
次に Call R_ADC_Read を追加します。
これでADCを読み取ることが出来ます。
読み込む ADC は ADC_CHANNEL_0 になります。
読み込んだデータは adcval とします。
adcval 及び出力内容を規定します。
出力の adcout は 13 だとオーバーフローするので 14 にしました。
今回は、STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (12) ADCを使ってみよう と同じく sprintf を使用します。
オーバーフローの警告が出ています。
出力の様子
送信する値の桁数が減る事で元の改行部分が残り改行が2回分送られています。
uint16_t adcval;
uint8_t adcout[14];
void hal_entry(void)
{
/* TODO: add your own code here */
R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);
R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
R_ADC_ScanStart(&g_adc0_ctrl);
while(1){
R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_0, &adcval);
sprintf((char*)adcout,"ADCVAL %u \n\r",(unsigned int)adcval);
R_SCI_UART_Write(&g_uart0_ctrl,adcout,sizeof(adcout));
R_BSP_SoftwareDelay (100, BSP_DELAY_UNITS_MILLISECONDS);
}