2446|5

17

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

请教斑竹,为什么调试窗口检测的结果与程序设计不符 [复制链接]

我在定时中断程序中实现软件启动adc12采样转换,中断程序的编写思想是:首先设置ENCADC12SC 启动adc采样,然后就是等待,实时判断ADC12IFG3这个转换标志位是否为1,当标志位置1时,我认为转换完成,这时读取ADC12MEM3的值并赋给results,具体程序如下:
///interrupt [TIMERA0_VECTOR] voidTimerA_ISR(void)
#pragmavector=TIMERA0_VECTOR
__interrupt voidTimerA_ISR(void)
{
   _DINT();                                        //disablethe interrupt
   ADC12CTL0|= ENC+ADC12SC;     //软件启动adc12
   do
   {
       _NOP();
   }                                                  //等待adc模数转换完成,若转换完成
                                                       //ADC12IFG3将被置位
  while(ADC12IFG&BIT3==0);
   results =ADC12MEM3;                   //若ADC12IFG3=1,读取ADC12MEM3数值并赋给中间变量results
   ADC12CTL0&= ~ENC;                  //disable convert
   _EINT();                                       //enable theinterrupt
}
      在调试中,发现watch窗口中的中间变量results值并不等于 ADC12MEM3的值,而是等于上一次中断时ADC12MEM3的值(举例说明:第一次中断时 ADC12MEM3 =0x256results=0,第二次中断时 ADC12MEM3 =0x512 results= 0x256 ),请问这是为什么?另外,我这种启动ADC12单通道单次采样的程序写法是否正确?

最新回复

中断里面的那句中断关闭没有意义,其实已经关掉了  详情 回复 发表于 2013-11-26 22:24

点评

断点设置在哪里了? 断点设置在results =ADC12MEM3; 执行完之后  详情 回复 发表于 2013-11-25 23:40
 
点赞 关注

回复
举报

5015

帖子

12

TA的资源

裸片初长成(初级)

沙发
 

回复 楼主zhy3928551 的帖子

断点设置在哪里了?
断点设置在results =ADC12MEM3;  执行完之后
 
个人签名《MCU工程师炼成记》作者之一
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
断电设置在这一句啦,ADC12CTL0&= ~ENC;                  //disable convert
 
 
 

回复

447

帖子

0

TA的资源

纯净的硅(中级)

4
 

1.按照你的程序运行了下,么有问题呀。要不你再多试几次,看看是不是总这样,在中断里设置一个计数标志位,当标志位等于n时,设置断点查看看results的值是不是和n-1时一样。你把ADC12初始化的程序也贴出来让大家看看
2.单通道单次采样转换时,这样写程序OK。不过我不明白为什么要_DINT(),进入中断后总中断默认关闭的,其他中断是不会进来的~

[ 本帖最后由 zzbaizhi 于 2013-11-26 15:42 编辑 ]

点评

中断里面的那句中断关闭没有意义,其实已经关掉了  详情 回复 发表于 2013-11-26 22:24
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

5
 
谢谢斑竹和zzbaizhi的热心帮助,该问题已经解决!
 
 
 

回复

5015

帖子

12

TA的资源

裸片初长成(初级)

6
 

回复 4楼zzbaizhi 的帖子

中断里面的那句中断关闭没有意义,其实已经关掉了
 
个人签名《MCU工程师炼成记》作者之一
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表