2319|1

6366

帖子

4912

TA的资源

版主

楼主
 

msp430单片机开发实录(13) [复制链接]




此内容由EEWORLD论坛网友tiankai001原创,如需转载或用于商业用途需征得作者同意并注明出处



msp430单片机开发实录(13)


现象:
我们的产品用到AD转换的时候,一般是定期开启AD转换,获取AD转换的值,采用的是查询方式,不用AD转换中断。一般在从AD转换结果寄存器中取出AD值之前,要先判断AD转换的状态,也就是判断AD转换是否完成,因为只有转换完成,才能取出正确的AD值,一般情况下都会判断AD转换的忙状态,我一般用下面的语句。
  1. while (ADC10CTL1 & ADC10BUSY) ;
复制代码

但是今天再看几年前我写的一个程序时,忽然发现,我在那个程序里面用了下面的语句
  1. while(!(ADC10IFG & ADC10IFG0))
复制代码

目前这两种语句在不同的产品中都用了,并且都已经大批量出货了,没有发现AD转换不准确的问题。那么这两种语句到底有没有区别呢?


试验:
看上面两个语句,第一条语句是判断AD转换的状态是出于“忙”还是“空闲状态”,这个很容易理解,在“忙”的时候,说明正在进行AD转换,所以要等“空闲”的时候,AD转换结果寄存器里面的值才是正确的结果。
而第二条语句用的是判断中断标志,前面我已经说了,我的AD转换是定期开启转换,查询方式,不用中断。那么这里用判断中断标志的方式合适吗?
原来,在430单片机中,有中断功能的模块,一旦启用了这个功能,那么不管我们是否开启了中断使能,只要这个功能产生的条件满足,都会产生一个中断标志,所以这里使用判断中断标志的方法是没问题的,并且这个中断标志是硬件自动清除的。

验证:

分别采用“忙”标志位检测和中断标志判断的方式进行AD转换,反复多次测试,都能够正确获得AD转换结果。

备注:
msp430单片机的中断标志是只要满足相应条件就会产生,跟有没有开启相关中断使能无关,并且这个标志硬件自动清除,程序里面不用处理。

最新回复

实践出真知,感谢分享!  详情 回复 发表于 2018-12-19 08:12
 
点赞 关注(1)

回复
举报

1246

帖子

18

TA的资源

五彩晶圆(初级)

沙发
 
实践出真知,感谢分享!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表