例1:用单通道重复采样模式对A1采样,将采样结果20次求平均,然后将结果存在变量ADC10_Result内。假设选择2分频后的ACLK做采样时钟,选择内部参考源 2.5V,ADC10SC触发采样,禁止ADC10中断,采样时间设置为64个采样时钟。
程序:
int ADC10_Result;
ADC10CTL1 |= CONSEQ_2; //单通道重复采样模式
ADC10CTL0 |= SREF_1+REFON+REF2_5V;//选择内部参考源2.5V,打开基准源
ADC10CTL0 |= ADC10SHT_3+MSC; //过采样率设置为64个采样周期,打开AD转换
ADC10CTL1|= ADC10SSEL_1+ADC10DIV_1+SHS_0; //ACLK2分频为采样时钟,用ADC10SC触发采集
ADC10CTL1 |=INCH_1; //选择通道A1
ADC10CTL0 |= ADC10ON; //开启ADC10
ADC10AE0 |= 0x02; //开启外部通道A1
for(int i=0;i<20;i++)
{
ADC10CTL0 |=ENC+ADC10SC; //开始转换
while((ADC10CTL0 &ADC10IFG)==0); //等待ADC10IFG标志变高(转换完成)
ADC10_Result+=ADC10MEM; //读取采样结果
}
ADC10_Result= ADC10_Result/20;
问题:
请问,在MSC=1的时候,ENC和ADC只要置过1,不就会自动取样转换了吗?为什么这个程序将其写在for循环内(每次都置1)?
而且自动取样转换,万一读取每次取样结果并处理取样结果的时间大于从这次转换完车到下一次转换完成的时间不就容易把下次的数据淹没吗?
求指教!万分感谢!
此帖出自
小平头技术问答
请问途中画粉 {MOD}圆圈的部分,是不是还应该加上有ADC10SC=1或者是上升沿才能进入下一次转换?
而且,如果每次都写ADC10CTL|=ENC+ADC10SC;的话,感觉从流程图来看,单通道单次采样和多次采样也没有什么区别啊。
非常感谢!
一周热门 更多>