JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

PIC16F1705 MCC ADC テスト

2022-04-04 18:20:10 | MPLAB X MCC
 MPLAB X + XC8 + MCC環境で、PIC16F1705のADCのテストをします。

 回路図です。AN0から入力した電圧をAD変換して、その数値(0~1023)をシリアル通信で出力して、TeraTermに表示します。
 電源は、USBシリアル変換モジュールFT234から供給します。AD変換のリファレンスは、VDDとします。
 

 プロジェクトを作成し、MCCを立ち上げます。

 System moduleの設定をします。Internal Clockは、16MHz_HFとしました。


 ADCモジュールとEUSARTモジュールを導入して、設定します。
 ADCモジュールは、Result Alignment=right(右詰め)だけ設定しました。


 EUSARTの設定は、9600bpsのままで、何も設定せず、そのままです。


 Pinモジュールです。EUSARTは、RC4=TX,RC5=RXがデフォルトで設定されています。ADCは、RA0=AN0に設定されています。PIC16F1705は、8チャンネルのアナログ入力(AN0~AN7)を持っています。今回は、AN0だけを使いました。他のアナログ入力を使う場合は、Pin Managerで該当部分をクリックして、設定します。


 Generateして、MCCを終了します。
 プログラムです。
 1秒ごとにAN0の電圧をAD変換して、数値をシリアル通信で送信します。
 printf()を使っていますので、プロジェクトのPropatiesで、C standardをC90にします。また、
#include <stdlib.h>
#include <stdio.h>
の設定が必要です。
-----------------------------------------------------------------
/*
 * PIC16F1705 MCC ADC test
 * 2022.4.4
 * JH7UBC Keiji Hata
*/

#include "mcc_generated_files/mcc.h"
#include <stdlib.h>
#include <stdio.h>

void putch(uint8_t ch)
{
     EUSART_Write(ch);
}

void main(void)
{
     // initialize the device
     SYSTEM_Initialize();

     while (1)
    {
         uint16_t data=ADC_GetConversion(0);
         printf("%4d\r\n",data);
         __delay_ms(1000);
    }
}
-----------------------------------------------------------------
 ブレッドボードです。


 TeraTermの画面です。VRを回していくとAD変換された値が徐々に大きくなっていきました。