You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:51:01