天天看點

[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
}
           

這裡面隻有一句話,  它的意思是結束休眠狀态,  進入工作