单片机 > 单片机程序设计 > 详情

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

发布时间:2020-08-27 发布时间:
|

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


#include "TFTTFT_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

}

这里面只有一句话,  它的意思是结束休眠状态,  进入工作

关键字:MSP430  ADC  内部测温 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC单片机基础知识之二