10章:AD変換

    作成2014.03.17

     PIC18F4553マイコンでタタイマ(PWMモード)のプログラムを検討します。

  1. 評価回路
     AD変換の評価回路を図10-1に示します。
     RA0をアナログ入力に設定し、ボリュウムで入力電圧を調整します。
     出力はRD0〜7にLEDを接続し、2進数で結果を表示します。



  2. ADCソースプログラム
    (1)ADCソースプログラム
    ADCソースプログラムを以下に示します。
    //ADC
    #include <xc.h>
    #include <p18f4553.h>
    #include <stdint.h>
    #include <stdbool.h>
    
    #pragma config PLLDIV   = 5	// (20MHz crystal)
    #pragma config CPUDIV   = OSC1_PLL2	//「 主 発振 器 そのまま」「システム96MHzPLLソースを2 分 の 一 」
    #pragma config USBDIV   = 2	// Clock source from 96MHz PLL/2
    #pragma config FOSC     = HSPLL_HS	//外付け振動子利用の高速クロック発振で、PLLを 使 う
    #pragma config FCMEN    = OFF	//フェイルセーフクロックモニターを 無効
    #pragma config IESO     = OFF	//発振 器 の 内部 外部 切 り 替 えを 無効
    #pragma config PWRT     = OFF	//電源オン時タイマーを使わない
    #pragma config BOR      = ON	//ハードだけでブラウンアウトリセット 機能 を使う
    #pragma config BORV     = 3	//最小電圧設定
    #pragma config VREGEN   = ON	//USB Voltage Regulator = ON
    #pragma config WDT      = OFF	//ウオッチドッグタイマを 無効
    #pragma config WDTPS    = 32768	//ウォッチドッグタイマーのプリスケーラが1:32,768
    #pragma config MCLRE    = ON	//MCLRを 有効 にしてRE3入力端子は 無効
    #pragma config LPT1OSC  = OFF	//タイマー1 発振 器 を 高電力 モードにする
    #pragma config PBADEN   = OFF	//リセット 時 にPORTB0〜4をデジタル 入出力 に 選択 する
    #pragma config CCP2MX   = OFF	//CCP2の入出力をRB3にマルチプレックスしない
    #pragma config STVREN   = ON	//スタック満杯あるいはアンダーフロー時にリセットする
    #pragma config LVP      = OFF	//ICSPモードでの単一書き込み電源は 使 わない
    #pragma config ICPRT    = OFF	// Dedicated In-Circuit Debug/Programming = OFF
    #pragma config XINST    = OFF	// Extended Instruction Set = OFF
    #pragma config CP0      = OFF	//ブロック0(000800−001FFFh)のコードを保護しない
    #pragma config CP1      = OFF
    #pragma config CP2      = OFF
    #pragma config CP3      = OFF
    #pragma config CPB      = OFF
    #pragma config CPD      = OFF
    #pragma config WRT0     = OFF	//ブロック0 (000800-001FFFh) の書込み保護しない
    #pragma config WRT1     = OFF
    #pragma config WRT2     = OFF
    #pragma config WRT3     = OFF
    #pragma config WRTB     = OFF	// Boot block (000000-0007FFh)の書込み保護しない
    #pragma config WRTC     = OFF	//Configuration registers (300000-3000FFh) の書込み保護しない
    #pragma config WRTD     = OFF	//Data EEPROM の書込み保護しない
    #pragma config EBTR0    = OFF	//Block 0 (000800-001FFFh) を他のブロック実行時のテーブル読み取りから保護しない
    #pragma config EBTR1    = OFF
    #pragma config EBTR2    = OFF
    #pragma config EBTR3    = OFF
    #pragma config EBTRB    = OFF	//Boot block (000000-0007FFh)を他のブロック実行時のテーブル読み取りから保護しない
    
    
    // メイン関数
    void main (void)
    {
        uint16_t    result;
        uint8_t LED;
    	// 入出力設定
    	ADCON0	=	0b00000001; //A/D converter module is enabled:A/D Idle:Channel 0 (AN0)
    	ADCON1  =	0b00001110; //AN0のみアナログ設定:VDDとVSSが選択
    	TRISA   =	0b00000000;
        	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;
    
    	// 電圧レベルの初期設定
    	PORTA = 0xFF;
    	PORTB = 0xFF;
    	PORTC = 0xFF;
    
            TRISAbits.TRISA0 = 1; //RA0(AN0)を入力設定
    	ADCON0bits.CHS = 0b0000; //Analog Channel Select bits=Channel 0 (AN0)
    
    	// 永久ループ
    	while(1)
    	{
    		ADCON0bits.GO = 1;              // Start AD conversion
    		while(ADCON0bits.NOT_DONE);     // Wait for conversion
    		result = ADRESH;
    		result <<=  8;
    		result |= ADRESL;
    		result >>=  4;
    		LED =  result;
    		// LED点灯
    		PORTD = ~LED;
                    int ii = PORTD; //デバッグポイント
    	}
    }
    
     ADC.cの内容は以下を開いてコピーします。
    「ADC.cの内容」にいく。


  3. 動作確認
     動作確認の状況を以下に示します。

    *ボリュウムを回すとRA0の電圧が変化します。これに従ってLEDの2進表示の値が変化することが確認できます。


  4. AD変換まとめ
    (1)PIC18F4553マイコンの最大の特徴はアナログ入力12ビットx13chです。
    (2)AD変換プログラムはデータシートを参照して作成しましたが、以外とすんなり動作しました。
    (3)AD変換は以外と簡単にできることが確認できましたが、測定したデータをどう処理するか?これは大きな課題です。
    (4)複雑なデータ処理はパソコンで行うのが理想です。
    (5)したがって、PIC18F4553マイコンとパソコンのUSB接続が大きな課題となります。
    (6)いよいよ、PIC18F4553マイコンとパソコンのUSB接続に挑戦です。











11章:Device - HID - Custom Demosに行く。

トップページに戻る。