1241|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

[MSP430]实战 ADC使用, 内部测温使用 [复制链接]

首先说说问题, 感觉这个Code Compose Studio 比较奇怪

#include "TFT\TFT_Driver.h"
找不到文件, 无法打开
没有include 仅在同一工程下就可以使用函数

每次运行程序结果不同

下面给出一个使用ADC的实例:

ADC初始化函数:

void ConfigureAdcTempSensor(void)
{
  /* Configure ADC Temp Sensor Channel */
      ADC10CTL1 = INCH_10 + ADC10DIV_0 + CONSEQ_2;         // Temp Sensor ADC10CLK/4
  
    ADC10CTL0 = SREF_1 + ADC10SHT_3 + MSC + REFON + ADC10ON + ADC10IE;
 // __delay_cycles(1000);                     // Wait for ADC Ref to settle
  ADC10DTC1=0xfe;
 
  ADC10CTL0&=~ENC;
  while(ADC10CTL1&BUSY);
  ADC10SA=0x0200; //(unsigned int)tempMeasured;
  //data buffer start
 
 
  ADC10CTL0 |= ENC + ADC10SC;               // Sampling and conversion start
  __bis_SR_register(CPUOFF + GIE);          // LPM0 with interrupts enabled
  tempAverage = tempMeasured[0];
  tempCalibrated= tempAverage;
}
对于ADC10CTL1的配置,  如果你只采集一个那么就是CONSEQ_2,  使用内部测温就是INCH_10
想要知道更多的操作寄存器的DEFINE 你需要在 MSP430G25XX.h 里面 以及 User Guide 中进行对照

DTC 某种程度上可以控制采样速度

ADC10SA 是start Address , 我使用0x0200 是因为我知道我采集数据的起始地址是它, 

在你的loop中需要加入这两行代码使得模拟值持续更新

    ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
    __bis_SR_register(CPUOFF + GIE);        // LPM0 with interrupts enabled

第二句话是指, 让系统进入休眠状态, 降低功耗,  这时候我们的CPU是停止工作的,  进入中断


中断函数:

// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
  __bic_SR_register_on_exit(CPUOFF);        // Return to active mode
}
这里面只有一句话,  它的意思是结束休眠状态,  进入工作


 

 
点赞 关注

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

随便看看
查找数据手册?

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