查看: 1749|回复: 0

[MSP430]实战 ADC使用, 内部测温使用

[复制链接]

该用户从未签到

发表于 2020-11-22 19:43:15 | 显示全部楼层 |阅读模式
分享到:

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

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

每次运行程序结果不同

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

ADC初始化函数:

  1. void ConfigureAdcTempSensor(void)
  2. {
  3.   /* Configure ADC Temp Sensor Channel */
  4.       ADC10CTL1 = INCH_10 + ADC10DIV_0 + CONSEQ_2;         // Temp Sensor ADC10CLK/4
  5.   
  6.     ADC10CTL0 = SREF_1 + ADC10SHT_3 + MSC + REFON + ADC10ON + ADC10IE;
  7. // __delay_cycles(1000);                     // Wait for ADC Ref to settle
  8.   ADC10DTC1=0xfe;

  9.   ADC10CTL0&=~ENC;
  10.   while(ADC10CTL1&BUSY);
  11.   ADC10SA=0x0200; //(unsigned int)tempMeasured;
  12.   //data buffer start


  13.   ADC10CTL0 |= ENC + ADC10SC;               // Sampling and conversion start
  14.   __bis_SR_register(CPUOFF + GIE);          // LPM0 with interrupts enabled
  15.   tempAverage = tempMeasured[0];
  16.   tempCalibrated= tempAverage;
  17. }
复制代码

对于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是停止工作的,  进入中断


中断函数:

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

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-23 21:22 , Processed in 0.121456 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.