2013-11-01 38 views
0

@Gurus,我在引腳P2_2上連接了帶有MSP430F2274的溼度傳感器(套件CC2530 ZNP),並使用以下代碼讀取傳感器的輸出電壓。但它似乎並沒有工作。每次我都會得到一個不同的值,而且它的傳感器的實際輸出也會變得不同。我有一個單獨的模塊負責時鐘和定時器。該套件具有板載光源和溫度傳感器,這些傳感器似乎工作得很好。你能看一下嗎?與MSP430接口的外部傳感器

getHumidity() 
{ 
int result, volt; 

ADC10CTL0 &= ~ENC; 
ADC10CTL0 &= ~ADC10ON; 

// P2.2 -> Humidity Sensor - A2 

P2DIR &= ~0x04; 
P2SEL &= ~0x04; 
ADC10AE0 |= 0x04; // ADC Low Bit (A2) 
ADC10AE1 = 0x00; 
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE + REF2_5V; 
ADC10CTL1 = INCH_2 + ADC10DIV_3; // Input Selct and Clock Div 
ADC10CTL0 |= ENC + ADC10SC; // Start to sample 

// __bis_SR_register(CPUOFF + GIE); // LPM0 w/ int 

while(ADC10CTL1 & ADC10BUSY); 
result = ADC10MEM; // Store Result 
if (result < 0) result = 0; // Correct for potential Weirdness 
volt=(int)((result*2500.00)/1023.00); 
ADC10AE0 = 0; // Reset Selection Bits 
ADC10AE1 = 0; 

ADC10CTL0 &= ~ENC; 

ADC10CTL0 &= ~(REFON + ADC10ON); 

return volt; // Return Result 

} 

非常感謝,

MEGHA

+0

@Gurus,我還是想不通爲什麼它不工作。任何幫助將不勝感激。 謝謝 – megha

回答

0

這裏是MSP430G2553一個例子,我想我應該是一樣的

BCSCTL1 = CALBC1_16MHZ; // Set range 
DCOCTL = CALDCO_16MHZ; 
BCSCTL2 &= ~(DIVS_3); // SMCLK = DCO = 16MHz 

ADC10CTL1 = INCH2 + ADC10DIV_0 + CONSEQ_0 + SHS_0; 
ADC10CTL0 = SREF_0 + ADC10SHT_2 + ADC10ON + ADC10IE; 
ADC10AE0 |= BIT2; 

P2SEL |= BIT2; //ADC Input pin P2.2 

ADC10CTL0 &= ~ENC; 
while (ADC10CTL1 & BUSY); 
ADC10SA = ADC10MEM; 
ADC10CTL0 |= ENC + ADC10SC; // ENC = enable conversion, ADC10SC = Sampling and conversion start