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
相关产品推荐
相关产品推荐

