|
![]() Loading
|
12bitADコンバーターを使うRXduinoのライブラリでは、RX62NのADコンバータは10bit版のほうが使われていました。 12bit版のA/Dを使う関数は現状のライブラリに入っていないのですが、お客様からのご要望があったので12bit A/Dを使うプログラムを書いてみました。 #include <tkdn_hal.h> #include <iodefine_gcc.h> #include <stdio.h> void s12ad_init(void) { SYSTEM.MSTPCRA.LONG &= ~(1 << 17); PORT4.DDR.BYTE = 0; // 全ポートを入力にする S12AD.ADCSR.BYTE = 0x0c; // S12ADのサンプリングクロックをPCLK (48MHz)にする S12AD.ADANS.WORD = 0x003f; // SD12ADを、CH0〜CH5でスキャンする } // AN0〜AN5をA/D変換する関数 void s12ad_sample(unsigned short *adcdata) { int i; S12AD.ADCSR.BIT.ADST = 1; // AD変換開始 while(S12AD.ADCSR.BIT.ADST) {} unsigned short *result = (unsigned short *)&S12AD.ADDR0; for(i=0;i<6;i++) { adcdata[i] = result[i]; } } int main() { char tmp[128]; unsigned short adcdata[6]; sci_init(SCI_AUTO, 38400); sci_convert_crlf(CRLF_CRLF,CRLF_CRLF); gpio_set_pinmode(PIN_LED0, 1); s12ad_init(); while(1) { gpio_write_port(PIN_LED0, 1); s12ad_sample(adcdata); gpio_write_port(PIN_LED0, 0); sprintf(tmp,"%04d %04d %04d %04d %04d %04d \n", adcdata[0], adcdata[1], adcdata[2], adcdata[3], adcdata[4], adcdata[5]); sci_puts(tmp); } }
6chを変換するのに要した時間は約8usでした。 このプログラムをRaXino♪で動かして、USB経由でAD変換値を表示してみました。 12ビットA/Dコンバータが必要になった際にはご活用ください。 |
|
|