2927|4

50

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

MSP430内部温度传感器 [复制链接]

我这个第一次的时候总是得到负的值,好像是因为中断中的内容没有及时执行,temp第一次的时候好像值是0,不知道是什么原因,下面是部分程序。
void ADC12(void)
{
  ADC12CTL0 = SHT0_8+REFON+ADC12ON+REF2_5V;
  ADC12CTL1 = SHP;
  ADC12MCTL0= SREF_1+INCH_10;
  ADC12IE   = BIT0;
  ADC12CTL0|= ENC;
}


#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{
  temp = ADC12MEM0;
  _BIC_SR_IRQ(GIE);
  
}

void main (void)
{
  int x=0,y=0,z=0;
  WDTCTL = WDTPW + WDTHOLD;
  contrl();
  light();
  delayms(10);
  lcd_init();
  delayms(1);
  ADC12();
  
  while(1)
  {
    _BIS_SR(GIE);
    ADC12CTL0 |= ADC12SC;
    _NOP();
    TemperC = (temp - 1615)*704;
    TemperC = TemperC/4096;
   }
}
此帖出自单片机论坛

最新回复

你的ADC初始化完成后,也要有个延时,要等到参考电压稳定后才能开始转换。  详情 回复 发表于 2013-12-3 13:03
点赞 关注
 

回复
举报

6040

帖子

203

TA的资源

版主

沙发
 
转换是需要时间的,ADC还没转换完你就读temp的值了,当然不对。
此帖出自单片机论坛

点评

谢谢,读到temp的值了,加了一个延时。可是如果我直接下载到板子上的话,液晶显示就先显示一个很小的值,然后才正常,可是如果在Watch窗口观察的话,就不会有那个很小的值  详情 回复 发表于 2013-12-3 12:56
 
 

回复

50

帖子

1

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发lcofjp 的帖子

谢谢,读到temp的值了,加了一个延时。可是如果我直接下载到板子上的话,液晶显示就先显示一个很小的值,然后才正常,可是如果在Watch窗口观察的话,就不会有那个很小的值
此帖出自单片机论坛

点评

你的ADC初始化完成后,也要有个延时,要等到参考电压稳定后才能开始转换。  详情 回复 发表于 2013-12-3 13:03
 
 
 

回复

6040

帖子

203

TA的资源

版主

4
 

回复 板凳jinger0311 的帖子

你的ADC初始化完成后,也要有个延时,要等到参考电压稳定后才能开始转换。
此帖出自单片机论坛

点评

问题解决了,非常感谢。:)  详情 回复 发表于 2013-12-3 13:48
 
 
 

回复

50

帖子

1

TA的资源

一粒金砂(中级)

5
 

回复 4楼lcofjp 的帖子

问题解决了,非常感谢。
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

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