初级会员

- 积分
- 88
- 金钱
- 88
- 注册时间
- 2020-6-28
- 在线时间
- 27 小时
|
使用康威电子提供的例程,因为ADS1256有一个中断引脚,所以例程使用的是中断读取AD采样数据。问题一:移植到我的项目的过程中,我想在需要读取AD数据的时候打开中断,不需要读取AD的时候关闭中断,也就是中断读取AD只在我需要的时候进行。刚开始是直接用如下方式
这段代码没有用延时,而是在启动中断读取的时候随后就关闭了中断读取,实验发现这样的执行情况下,数据还没有开始读取,中断就已经被关闭了,所以不可能读取出任何的数据。
解决方法:在开中断和关中断之间添加延时,为ADC读取数据多提供一些时间,使中断中能够读取出多准确的AD数据。
问题二:项目需求中需要3个通道的ADC数据,则需要在中断中读取3个ADC通道,操作如下
在问题一已经解决的情况下,我在中断中去读取3个通道的数据,结果发现有一个通道读取出来的数据是0,而其它两个通道正常,我以为是通道坏了的原因,于是尝试着去更换通道,结果发现,不论我怎么样更换通道,结果都是数据中有一个通道是0,调试发现是因为读取数据的时间不够多,也就是中断的时间不长,ADS1256是只要有一个通道准备好数据了,它就会产生一个中断信号,所以如果开启中断的时间不长,就会导致后面的通道还没有准备好,那么就采集不到那个通道的数据。解决方法是提高中断开启与中断关闭之间的延时时间,给所有通道更多时间去采集数据。另外还有一个解决方法是提高采样率,这样的话就会让通道有更快的采样速度,从而能更快的采集好数据。
综上:ADS1256使用时要注意以下几点
①ADS1256是扫描采样的,也就是从通道1~8轮流采集数据,只要有一个通道准备好数据,就会触发一个中断,也就是8个通道的数据读取就必须进入8次中断,一次中断读取一个通道的数据。
②在上面的情况下,提高采样率、增加中断处理时间能够提高采样的准确性。
附带本人调试能用的ADS1256中断读取程序。
|
|