PIC16F18877电位器ADC采样值仅复位后更新一次,求原因排查
PIC16F18877 ADC值不更新问题解决方案
问题根因
你的代码仅在系统初始化完成后触发了一次ADC转换,主循环中没有重新触发新的转换,每次读取的都是首次转换的结果寄存器缓存值,因此只有复位时会更新一次采样结果。
修复代码
#include "mcc_generated_files/mcc.h" void display_result(float v); void main(void) { adc_result_t convResult = 0; float v = 0; // 初始化设备 SYSTEM_Initialize(); while (1) { // 每次循环先触发ADC转换 ADCC_StartConversion(POT); // 等待转换完成 while (!ADCC_IsConversionDone()); convResult = ADCC_GetConversionResult(); v = convResult * 3.3 / 1023; // 输出结果 display_result(v); } } void display_result(float v) { if (v > 1.65) { LED_SetHigh(); } else { LED_SetLow(); } }
可选排查项(修改后仍有问题可检查)
- 确认MCC中ADCC配置为单次转换模式,若配置为自动连续转换模式,需确认对应开启位配置生效
- 确认电位器硬件连接正常:两端分别接3.3V和GND,中间抽头接开发板标注为POT的ADC通道引脚
- 确认ADC参考电压配置为VDD(3.3V),和你的计算系数匹配
内容的提问来源于stack exchange,提问作者forumflaneur
相关产品推荐
相关产品推荐

