[MSP430FR2311 EVM] ADC테스트 - 내장 온도 센서 테스트



MSP430FR2311 는 10bit, 12bit ADC가 8채널이 있다. 최대 200ksps 까지 변환 가능하기존 MSP430시리즈와 크게 차이는 없지만 FRAM을 사용하면 장점이 될만한 기능이 있는것 같다.



MSP430FR2311 ADC 블록도



MSP430FR2311 ADC 초기화 코드


    // Configure ADC - Pulse sample mode; ADCSC trigger

    ADCCTL0 |= ADCSHT_8 | ADCON;                                  // ADC ON,temperature sample period>30us

    ADCCTL1 |= ADCSHP;                                            // s/w trig, single ch/conv, MODOSC

    ADCCTL2 |= ADCRES;                                            // 10-bit conversion results

    ADCMCTL0 |= ADCSREF_1 | ADCINCH_12;                           // ADC input ch A12 => temp sense

    ADCIE |=ADCIE0;                                               // Enable the Interrupt request for a completed ADC_B conversion


    // Configure reference

    PMMCTL0_H = PMMPW_H;                                          // Unlock the PMM registers

    PMMCTL2 |= INTREFEN | TSENSOREN;                              // Enable internal reference and temperature sensor





MSP430FR2311 온도센서 특성 그래프



MSP430FR2311 ADC 인터럽트 핸들러

// ADC interrupt service routine

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)

#pragma vector=ADC_VECTOR

__interrupt void ADC_ISR(void)

#elif defined(__GNUC__)

void __attribute__ ((interrupt(ADC_VECTOR))) ADC_ISR (void)

#else

#error Compiler not supported!

#endif

{

    switch(__even_in_range(ADCIV,ADCIV_ADCIFG))

    {

        case ADCIV_NONE:

            break;

        case ADCIV_ADCOVIFG:

            break;

        case ADCIV_ADCTOVIFG:

            break;

        case ADCIV_ADCHIIFG:

            break;

        case ADCIV_ADCLOIFG:

            break;

        case ADCIV_ADCINIFG:

            break;

        case ADCIV_ADCIFG:

            temp = ADCMEM0;

            // Temperature in Celsius

            // The temperature (Temp, C)=

            IntDegC = (temp-CALADC_15V_30C)*(85-30)/(CALADC_15V_85C-CALADC_15V_30C)+30;


            // Temperature in Fahrenheit

            // Tf = (9/5)*Tc | 32

            IntDegF = 9*IntDegC/5+32;

            //__bic_SR_register_on_exit(LPM3_bits);               // Exit LPM3


            break;

        default:

            break;

    }

}










저작자 표시 비영리 변경 금지
신고

블로그 이미지

nexp

카테고리

분류 전체보기 (1550)
[MyProject] (48)
[TI] (75)
[NXP] (51)
[ST_MICRO] (128)
[FreeScale] (31)
[MSP430] (139)
[Microchip] (131)
Cortex-M (36)
[ATMEL] (29)
[AnalogDevice] (22)
[Embedded] (2)
ARM9 (24)
[AVR] (80)
[DSP] (111)
[8051] (21)
[MCU] (50)
[INTERFACE] (210)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (127)
[SENSOR] (41)
[DATA] (21)
[FPGA] (29)
[EVB] (1)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (4)
[Link] (2)

티스토리 툴바