关于430g2553--ADC10的问题

2019-03-24 09:53发布

例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)?
而且自动取样转换,万一读取每次取样结果并处理取样结果的时间大于从这次转换完车到下一次转换完成的时间不就容易把下次的数据淹没吗?
求指教!万分感谢!

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
doforfuture
2019-03-24 18:27
< :TI_MSP430_内容页_SA7 -->
msp430_now 发表于 2015-7-14 03:19
ADC10CTL0 |=ENC+ADC10SC; //开始转换
上面这句话的意思是ADC转换开始,此时ADC的中断程序ISR被触发

wh ...

但是,由单通道重复采样的状态转移图看,当MSC=1,ENC=1的时候,并不需要手动再对ENC和ADC10SC置一了啊。采样转换是自动进行的啊。谢谢!

一周热门 更多>

相关问题

    相关文章