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

PIC16F1618 ADC采样值超10位范围,MCC配置与代码不符求助

PIC16F1618 ADC采样异常问题

我正在开发首个PIC16F1618项目,遇到了奇怪的ADC采样异常问题。项目仓库:GitHub repo

我通过以下代码获取ADC采样值:

adc_result_t getADCValue(adc_channel_t channel) {
    adc_result_t sum = 0;
    adc_result_t sample;
    
    for (uint8_t i = 0; i < 32; i++ )
    {
        sample = ADC_GetConversion(channel); 
        sum += sample;
    }
    
    return sum >> 5; // 通过右移除以32
}

MCC生成的ADC_GetConversion()函数本应返回右对齐的10位ADC转换值。我给输入施加1.5V电压,预期得到约0x133的结果,实际却得到远超10位范围的0x4d00左右的值。注:我尽可能使用MCC生成的代码。

调试截图:MPLab调试界面显示采样值异常


更新

ADC MCC配置截图:显示配置为右对齐模式

但生成的ADC_Initialize()代码如下:

void ADC_Initialize(void)
{
    //ADPREF VDD; ADCS FOSC/64; ADFM left; 
    ADCON1 = 0x60;
...
}

注释显示ADFM为left(左对齐)?我感到困惑:右对齐应对应第7位置1,也就是ADCON1需加0x80?

内容的提问来源于stack exchange,提问作者weirdgyn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:30:05