My-CDC-Basic.Xプログラムコードのポイント
*MPLAB_X_IDE_v2.25とPIC18F4553マイコンの復習、3章:サンプルプログラムのファイル構造の変更とカスタマイズをベースに小修正しました。
(1)MAIN_RETURN main(void)の修正
以下を追加
// 入出力設定
ADCON0 = 0b00000001; //A/D converter module is enabled:A/D Idle:Channel 0 (AN0)
ADCON1 = 0b00001100; //AN0とAN1とAN2がアナログ設定:VDDとVSSが選択
TRISA = 0b00000111;//AN0とAN1とAN2を入力設定
TRISB = 0b00000000;//出力設定
TRISC = 0b00110000; //D-,D+(USB用)RC4とRC5を入力に設定
TRISD = 0b00000000;//出力設定
TRISE = 0b00000011; //SW1,2=INPUT LED=OUTPUT
LATA = 0b00000000;//ラッチ無し
LATB = 0b00000000;
LATC = 0b00000000;
LATD = 0b00000000;
LATE = 0b00000000;
ADCON2=0x3C;//ADC:111 = 20 TAD , 100 = FOSC/4
ADCON2bits.ADFM = 1;//ADC:1 = Right justified
(2)app_device_cdc_basic.cファイルの宣言
以下を追記
#define _XTAL_FREQ 48000000 //__delay_ms
unsigned short ADC0();
(3)void MyCDCBasicTasks()の修正
以下を追記
uint16_t RA0;
RA0=ADC0();
sprintf(writeBuffer,"%d\r\n",RA0);
(4)関数追加
unsigned short ADC0()
{
unsigned short result;
ADCON0bits.GO = 0; // Stop AD conversion
__delay_ms( 1 );
ADCON0bits.CHS = 0b0000; //Analog Channel Select bits=Channel 0 (AN0)
__delay_ms( 2 );
ADCON0bits.GO = 1; // Start AD conversion
while(ADCON0bits.NOT_DONE); // Wait for conversion
result=ADRESH*256+ADRESL;
return result;
}
*修正は少量でした!!