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

分享到:

最近做了个跟ad相关的项目,需要单独采集两路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)!!!!
 

继续阅读
Microchip推出两大全新单片机系列

Microchip 8位MCU产品部副总裁Steve Drehobl表示:“新一代Arduino开发板选用ATmega4809器件,不仅加强了两家公司的合作关系,还为Arduino平台带来了CIP和智能模拟的优势”。

51单片机、AVR单片机和PIC单片机IO口的操作

51单片机、AVR单片机和PIC单片机IO口结构的均不同,导致了IO口操作也不同。操作单片机IO口的目的是让单片机的管脚输出逻辑电平和读取单片机管脚的逻辑电平。下面我们来看看51单片机、AVR单片机和PIC单片机IO口的操作的方法。

一个小经验,让你的AVR单片机功耗超低

休眠电流要最小:掉电模式必须的,然后能关闭的功能全部关闭,关闭BOD检测,关闭看门狗,电压越低越好,1.8V,频率越低越好。

51、AVR与PIC,三种单片机IO口的操作

51单片机、AVR单片机和PIC单片机IO口结构的均不同,导致了IO口操作也不同。操作单片机IO口的目的是让单片机的管脚输出逻辑电平和读取单片机管脚的逻辑电平。下面我们来看看51单片机、AVR单片机和PIC单片机IO口的操作的方法。

Microchip推出新款megaAVR单片机,结合特有耐辐射性能与低成本开发特性

为空间应用开发耐辐射系统不但需要很长的交期,而且成本非常高,因为系统必须具备极高的可靠性才能在恶劣的环境下长年工作。今天,NewSpace和其他重要的航空航天应用都要求加速开发,降低成本。为满足这些需求,Microchip Technology Inc.(美国微芯科技公司)推出了一种新型单片机(MCU),该器件结合了特有的耐辐射性能以及现有商用(COTS)器件的低成本开发特性。

©2018 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss