#include <msp430x44x.h>
static volatile unsigned int ADCresult;
static volatile unsigned long int DegC, DegF;
void main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
ADC12CTL0 = ADC12ON+REFON+REF2_5V+SHT0_6; // Setup ADC12, ref., sampling time
ADC12CTL1 = SHP; // Use sampling timer
ADC12MCTL0 = INCH_10+SREF_1; // Select channel A10, Vref+
ADC12IE = 0x01; // Enable ADC12IFG.0
for (i=0; i<0x3600; i++) // Delay for reference start-up
{
}
ADC12CTL0 |= ENC; // Enable conversions
while(1)
{
ADC12CTL0 |= ADC12SC; // Start conversion
_BIS_SR(LPM0_bits+GIE); // Enter LPM0, enable interrupts
// DegC = (Vsensor - 986mV)/3.55mV
// Vsensor = (Vref)(ADCresult)/4095)
// DegC -> ((ADCresult - 1615)*704)/4095
DegC = ((((long)ADCresult-1615)*704)/4095);
DegF = ((DegC * 9/5)+32); // Calculate DegF
_NOP(); // SET BREAKPOINT HERE
}
}
__interrupt void ADC_ISR (void);
ADC12_ISR(ADC_ISR)
__interrupt void ADC_ISR (void)
{
ADCresult = ADC12MEM0; // Move results, IFG is cleared
_BIC_SR_IRQ(LPM0_bits); // Clear LPM0
}
MSP430F449에 TI에서 제공하는 위의 내용을 그대로 적용하였다.
물론 LCD에 적용해서 정상적인 동작하는 지 확인하였다.
정상 동작..
안정성 부분을 조금 더 확인 한 후에 기존 NTC104를 사용했던 부분을 제거 해도 될 듯 싶다.
잘못 사용하는 지 몰라도 104의 온도 오차 범위도 ± 2℃나 되니...
'초보의 아웅다웅 설계하기 > MSP 430' 카테고리의 다른 글
IAR Embedded Workbench for TI MSP430 v4.20A - 디버거 설정 (0) | 2011.01.18 |
---|---|
MSP-430 플래쉬 메모리 읽기 쓰기 (0) | 2010.11.27 |
MSP430 - 부져음 내기 (5) | 2010.11.06 |
IAR Embeded Workbench IDE - Error 1 (0) | 2010.11.05 |