[C14] ADC MSP4302553

Discussion in 'SV hỏi - PIF trả lời' started by Châu Thanh Hải, Jul 1, 2016.

  1. Châu Thanh Hải

    Châu Thanh Hải Thành Viên PIF

    Hiện em đang tìm tòi về ADC nhưng cũng chưa rõ lắm , mọi người cho em hỏi sao em set up timer + adc check cũng không thấy lỗi gì ,nhưng sao nó không nhảy vào ngắt timer được . Mọi người giải đáp giúp em với , cảm ơn mọi người nhiều.
    Code:
    #include <msp430.h>
    #include <stdio.h>
    #include "LCD_16x2.h"
    /*
    * main.c
    */
    void Configure_Clock(void);
    void Configure_Adc(void);
    unsigned int GetAdcValue(void);
    void Configure_Timer(void);
     
    float temp;
    unsigned char l = 'V';
    void main(void) {
        WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer
        Configure_Clock();
        Configure_Timer();
        Configure_Adc();
     
        P2DIR |= BIT0;
        P2OUT |= BIT0;
     
        LCD_Init();
            while(1)
            {
            temp = GetAdcValue();
            temp = (temp*4+40)/1024;
            LCD_Clear();
            LCD_Home();
            LCD_PrintString("Voltage: ");
            LCD_PrintFloat(temp,5,3);
            LCD_Display(l);
            __delay_cycles(500000);
            }
    }
     
    #pragma vector = TIMER0_A0_VECTOR
    __interrupt void interrupt_CR0(void)
    {
        _no_operation();
    }
     
    #pragma vector = TIMER0_A1_VECTOR
    __interrupt void interrupt_CR1(void)
    {
        switch(TA0IV)
            {
            case 0x02:
            {
            P2OUT ^=BIT0;
            }
            break;
            }
    }
     
    void Configure_Timer(void)
    {
        TA0CTL  = TASSEL_2 + MC_2 + ID_3;
        TA0CCR0 = 6000;
        TA0CCR1 = 4000;
        TA0CCTL0 = CCIE;
        TA0CCTL1 = CCIE;
    }
     
    void Configure_Clock()
    {
        if(CALBC1_1MHZ == 0xFF)
        {
            while(1);
        }
        BCSCTL1 = CALBC1_1MHZ;
        DCOCTL = CALDCO_1MHZ;
        BCSCTL2 |= SELM_0;
    }
     
    void Configure_Adc()
    {
        ADC10CTL1 = INCH_0 | ADC10SSEL_0;
        ADC10AE0 = BIT0;
        ADC10CTL0 = SREF_0;
        ADC10CTL0 |= ADC10ON + ENC;
    }
     
    unsigned int GetAdcValue(void)
    {
        ADC10CTL0 |= ADC10SC;
        while(ADC10CTL1 & 1);
        return ADC10MEM;
    }
    
     
  2. Fujiko

    Fujiko Thành Viên PIF

    Em chưa có enable ngắt toàn cục kìa. :)
     
    huunho, 2death and Châu Thanh Hải like this.
  3. Châu Thanh Hải

    Châu Thanh Hải Thành Viên PIF

    aaaaaaa,em cảm ơn anh or chị gì đó :1cool_byebye:
     
    2death likes this.
  4. huunho

    huunho Trứng gà

    ban cho minh hỏi: mình đọc ADC 2 kênh thì dữ liệu lấy thế nào nhỉ?
     
Loading...

Share This Page