新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 关于avr单片机两路ad信号的单独采集问题

关于avr单片机两路ad信号的单独采集问题

作者:时间:2013-12-07来源:网络收藏

最近做了个跟ad相关的项目,需要两路,具体步骤如下
1.选择参考电源 2.选择采集通道 3.选择ad转换时钟 4.使能ad模块,5开始转换,6.等待转换结束,7.读取数据

经过测试分别单路采集没问题,可把两个连起来,就出问题了,第二路采集的结果跟第一路总是相同,把第二路放到前边,然后采集第一路,结果第一路的结果跟第二路的相同。郁闷啊,经过检查初始化及管脚设置都正确,测试多次仍然没办法解决,暂时放下处理其他问题。过了一周左右,重新看ad采集部分的数据手册,发现如下字句:

一旦读出ADCL, ADC 对数据寄存器的寻址就被阻止了。也就是说,读取ADCL 之后,即使在读ADCH 之前又有一次ADC 转换结束,数据寄存器的数据也不会更新,从而保证了转换结果不丢失。ADCH 被读出后, ADC 即可再次访问ADCH 及ADCL 寄存器。

上面一段话意思就是,读取数据时要先读ADCL的数据,然后再度ADCH的数据,如果顺序反过来,则会读取ADCL 之后,即使在读ADCH 之前又有一次ADC 转换结束,数据寄存器的数据也不会更新。所以问题找到了,我的程序就是先读的ADCH后读的ADCL,所以再进行第二次的AD转换时,数据寄存器数据没有更新。读出的值就是第一次转换的结果。

希望大家能够引以为戒,切记:AVR单片机AD采集部分,读结果数据要先读低字节(ADCL)后读高字节(ADCH)!!!!

单片机相关文章:单片机教程


单片机相关文章:单片机视频教程


单片机相关文章:单片机工作原理




评论


相关推荐

技术专区

关闭