最近做了个跟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)!!!!
关键字:avr单片机 ad信号 单独采集
引用地址:
关于avr单片机两路ad信号的单独采集问题
推荐阅读最新更新时间:2024-03-16 13:31
AVR单片机教程——ADC
ADC 计算机的世界是0和1的。单片机可以通过读取0和1来确定按键状态,也可以输出0和1来控制LED。即使是看起来不太0和1的PWM,好像可以输出0到5V之间的电压一样,达到0和1之间的效果,但本质上还是高低电平。 但是,世界上终究还是有0和1无法表示的。如果引脚上被施加0到5V之间的电压,寄存器PINx无法告诉我们具体情况,只能指示这个电压是1.5V以下还是3V以上(参考数据手册“Electrical characteristics”)。这种可以连续变化的信号称为模拟信号,与离散的、只能取0或1(0或5V)的数字信号对立。 这并不代表数字世界无法处理模拟信号,相反,一种相当常用的处理模拟信号的方法,就是把模拟信号转换成数
[单片机]
AVR单片机寄存器DDR,PORT和PIN之间对应关系
AVR单片机每一个I/O口都对应3个寄存器DDRx,PORTx和PINx,其中DDRx为数据方向,即输入或输出;PORTx为将内部上拉电阻的状态,PINx为读取的外部引脚的状态.以下是三者对应关系:(假设DDRx.n,PORTx.n如下,PINx.n悬空) 0 0 x : 输入, 高阻态, PINx.n的值不确定. 0 1 1 : 输入, 上拉, 值为1. 1 0 0 : 输出0, 无拉. 1 1 1 : 输出1, 上拉. 代码实例: #include mega16.h void main(void) { unsigned char result; PORTA = 0b1111
[单片机]
采用AVR单片机控制实现太阳能光伏直流控制器设计
当今世界能源短缺以及环境污染问题日益严重,这些问题迫使人们寻找和使用新的代替能源。随着电子技术、太阳能电池板生产技术的提高,使得太阳能的利用越来越普遍。太阳能具有无地域限制的特点,而我国很多地方仍然处于缺电状态,特别是一些边远地区、旅游景区,由于非常分散,依靠电网供电难度大、成本高,因而选择太阳能供电十分必要,而在太阳能发电系统中,控制器是十分关键的部件之一。 目前市面上一些太阳能控制器提高效率的手段仅仅局限在单一物理量算法研究(比如只对电压、电流的跟踪),效率的提高是很有限的。我们经过多次实际考察与测量,发现发电效率较高的产品往往价格昂贵,且适应性差,一般都用于固定场合,如大型太阳能发电站等;一些低价的控制器为了降低成本,内
[单片机]
基于AVR单片机设计的电压电流功率表
测试范围:360.00V5A2000W 设计思路: 1、利用AVR单片机ATtiny26L一对差分AD做VI转换; 2、为了提高测试的速度,使用V1、I1、V2、I2.......V64、I64交错AD测试;取样时间是50Hz工频的整数倍; Vout = 1/64(V1+....+V64) Iout = 1/64(I1+....+I64) Pout = 1/128(V1*I0+V1*I1+V2*I1+V2*I2+.....+V64*I63+V64*I64) 3、电路增加了升压电路,将Li电提升到7.1V。增加Li电简单限压充电电路,使用外部电源时,升压电路停止工作; 4、利用内部EEPROM做校正数据保存。 单片机编程: T
[单片机]
AVR单片机驱动CH451实例程序_C语言
1) CH451简介 CH451可用于LED数码管显示驱动、键盘扫描控制、μP监控电路等领域。芯片封装包括双列直插DIP28、SOP28以及DIP24S封装。其内置RC振荡电路,可以直接动态驱动8位数码管或者64位LED,具有BCD译码或不译码功能,可实现数据的左移、右移、左循环、右循环、各数字独立闪烁等控制功能。CH451内置大电流驱动级,段电流不小于30 m A,字电流不小于160mA,并有16级亮度控制功能。该器件内置64键键盘控制器,可实现8×8矩阵键盘扫描,并内置去抖动电路,可提供按键中断与按键释放标志位等功能。CH451可选择简洁的1线串行接口或高速4线串行接口,且内置上电复位,可提供高电平有效复位和低电平有效复位
[单片机]
基于MMS的即时报警系统设计
引言 随着社会的发展,入室盗窃案越来越多,使人们财产受到极大的威胁。由于入室盗窃者非常狡猾,使警方破案极为困难。而本系统的设计可以为家居提供安全保障,同时为警方破案提供最大化帮助。目前,市场上也出现了各式各样的智能家居控制系统,说明家居安防越来越受重视,即时报警系统不可或缺。 本文设计的报警系统以即时报警为理念,即时将报警系统抓拍的罪犯图像以MMS(Multimedia Messaging Service,彩信)形式发送给用户,从而让用户及时掌握家中动态,为破案提供直接证据。本系统同时能与用户语音交互,用户可以主动要求系统抓拍室内当前图像。 1 系统的工作原理 1.1 系统方案设计 系统总体方案的设计应该全面考虑系统的总
[单片机]
基于AVR单片机的安全工器具监控系统的实现
众所周知,安全是电力企业一个永恒的主题,而安全工器具的好坏,将直接影响着电力企业在生产过程中的人身和设备安全。笔者提出了一种基于AVR单片机的安全工器具监控系统的设计方案,主要是对安全工器具的离就位状态信息、有效使用期限和安全工器具柜内的温湿度状况等进行监控,可以根据实现安全工器具柜内温湿度的自动调节,能够自动记录安全工器具的相关信息。本文首先阐述了系统的总体结构,然后详细论述了系统的硬件设计和软件设计。 1 安全工器具监控系统的总体结构 1.1 系统结构 本文所设计的安全工器具监控系统主要分为下位机数据采集和上位机数据管理两个部分,两者之间通过网络进行通信。 系统首先通过数据采集板对安全工器具柜的相关量进行采
[单片机]
基于AVR单片机的电动代步车控制器
本世纪将是一个人口老龄化程度越来越高的世纪,老年人和残疾人的护理将是社会的一个沉重负担。据老龄委统计结果显示,2004年底,中国60岁及以上老年人口为1.43亿,2014年将达到2亿,2026年将达到3亿,老龄人口的规模将越来越大。同时在我国人口中有8 296万残疾人,占全国总人口的比例为6.34%,其中肢体残疾人数2 412万,占29.07%。老年人和残疾人这个庞大的弱势群体需要一种适合他们心理和生理的代步车来满足日常生活及参与社会活动的需要。 随着科学技术的迅速发展和人民的生活水平的不断提高,手动轮椅逐渐被性能优越、操作简单、行驶安全的电动代步车所替代。电动代步车的出现除了能满足老年人或残疾人室内外活动的要求之外,还在医
[单片机]