注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

tiankai001的个人空间 http://home.eeworld.com.cn/space-uid-139222.html [收藏] [复制] [分享] [RSS]

日志

msp430单片机开发实录(13)

已有 96 次阅读2018-12-18 17:32 |个人分类:Proteus for msp 430




此内容由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单片机的中断标志是只要满足相应条件就会产生,跟有没有开启相关中断使能无关,并且这个标志硬件自动清除,程序里面不用处理。

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-3-25 05:32 , Processed in 0.033758 second(s), 11 queries , Gzip On, MemCache On.

Powered by EEWORLD电子工程世界

© 2019 http://bbs.eeworld.com.cn/

返回顶部