大家好!最近看到一个用PIC18F45K80系列单片机写的ADC采样代码,主要代码如下:
ADC是12位精度的,一个通道采样64次,然后求平均值,但是我对V_SampleSum += (V_SampleData >> 4);这句不理解,V_SampleSum是累计64次的AD采样值,这里为什么不直接使用 V_SampleSum += ADC_SampleData;
还望专家们解释下这里代码的意义,谢谢了!
#define ShiftPoint 6
uint V_SampleData = 0; //临时变量
ulong V_SampleSum = 0; //输出电压采集值累加
volatile uint V_SampleValueFilt = 0; //输出电压滤波采集值
ADC_SampleData = (uint)(((ADRESH&0x0F)<<8) + ADRESL);
case S_54V: //54V采样电压通道
{
V_SampleData = ADC_SampleData + (V_SampleData - (V_SampleData >> 4));
if(SampleFlag == 0)
V_SampleSum += (V_SampleData >> 4);
break;
}
V_SampleValueFilt = (V_SampleSum>>(ShiftPoint));//求最终的ADC平均值
他这个采样速度是多少呀,这样采样下来,是不是精度要高很多呀?
你好!系统时钟FOSC是11.0592的晶振,然后4倍频,AD转换时钟是FOSC/64,AD结果获取时间TAD = 6
引用: lugl4313820 发表于 2024-3-4 10:02 他这个采样速度是多少呀,这样采样下来,是不是精度要高很多呀?
AD转换完成后会产生中断