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変換された値が徐々に大きくなっていきました。