新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430F149 定時器

        MSP430F149 定時器

        作者: 時間:2016-12-02 來源:網絡 收藏
        (1)利用定時器A的模式2(連續(xù))實現(xiàn)的定時資料

        利用定時器A的模式2(連續(xù))實現(xiàn)的定時資料 在程序中對TACTL的控制,當TACTL為如下的賦值時

        TACTL = TASSEL_2 + MC_2 + TAIE; // SMCLK, contmode, interrupt

        可以改變TASSEL_X來實現(xiàn)不同的定時,

        當為TASSEL_1時選ACLK為定時時鐘,可以實現(xiàn)最短2S的定時,其次為2S的倍數的定時。

        當為TASSEL_2時選 SMCLK為定時時鐘,定時取決于SMCLK的時鐘源,

        1、SMCLK選 DCO = 800KHZ為時鐘源,最短定時時間 為 0.08S 的定時,其次為其倍數。
        2、SMCLK選 XT2也即外部高頻晶振,此時定時取決于晶振頻率,及其對分頻的設置上。主要是設置BCSCTL1及 BCSCTS2.

        BCSCTL1 &= ~XT2OFF;
        BCSCTL2 |= SELS + DIVS_3;

        通過對上面兩句的不同設置,可實現(xiàn)不同的延時。



        /******************************************************************************
        // MSP-FET430P140 Demo - Timer_A, Toggle P3.4, Overflow ISR, DCO SMCLK
        //
        // Description: Toggle P3.4 using software and Timer_A overflow ISR.
        // In this example an ISR triggers when TA overflows. Inside the TA
        // overflow ISR P3.4 is toggled. Toggle rate is approximatlely 12Hz.
        // Proper use of the TAIV interrupt vector generator is demonstrated.
        // ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~800kHz
        //
        //MSP430F149
        // ---------------
        // /|| XIN|-
        // | | |
        // --|RST XOUT|-
        // | |
        // | P3.4|-->LED
        //
        // Dasheng
        // LiTian Electronic Inc.
        // Feb 2008
        // Built with IAR Embedded Workbench Version: 3.42A
        功 能: 由定時器A,采用800KHz的DCO,來實現(xiàn)近一秒的定時中斷;
        計算方法: T = 1/800,000 = 1.25uS so 根據連續(xù)計數模式,當計到0XFFFF時,發(fā)生溢出中斷
        因此溢出一次的時間是: 65536*1.25 = 0.0819S,所以計時1秒需12次溢出。
        ******************************************************************************/

        #include

        typedef unsigned char uchar;
        typedef unsigned int uint;
        uchar flag=0;

        void main(void)
        {
        WDTCTL = WDTPW + WDTHOLD; // Stop WDT
        BCSCTL1 &= ~XT2OFF;
        BCSCTL2 |= SELS + DIVS_3;

        3DIR|= BIT4;

        TACTL = TASSEL_2 + MC_2 + TAIE; // SMCLK, contmode, interrupt
        _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt

        }
        // Timer_A3 Interrupt Vector (TAIV) handler
        #pragma vector=TIMERA1_VECTOR
        __interrupt void Timer_A(void)
        {
        switch( TAIV )
        {
        case 2: break; // CCR1 not used
        case 4: break; // CCR2 not used
        case 10: P4OUT ^= BIT5; // overflow
        break;
        }
        }

        /*

        // Timer A0 interrupt service routine
        #pragma vector=TIMERA0_VECTOR
        __interrupt void Timer_A (void)
        {
        P4OUT ^= BIT5; // Toggle P3.4
        }

        */

        (2)利用定時器A的模式1(上升)實現(xiàn)的定時資料

        此時要用到TACCTL0 及 TACCR0 ,根據設定的不同的TACCR0及不同的TASSEL_X即可實現(xiàn)不同的定時。

        但此時的中斷程序要改變。

        對定時器A的中斷的說明:

        1、TIMERA1_VECTOR 的中斷地址為 0XFFEA, 此中斷入口地址包含3個中斷源,屬于多源中斷,通過TAIV的值,可以知道是哪個源的中斷,當TAIV 為0X02H時 中斷源為 TACCR1 CCR1IFG

        當TAIV 為0X04H時,中斷源為 TACCR2 CCR2IFG

        當TAIV 為0X0AH時,中斷源為 TA OVERFLOW TAIFG

        2、TIMERA0_VECTOR 的中斷地址為 0XFFEC 為單源中斷,中斷源為TACCR0 CCR0IFG


        上一頁 1 2 下一頁

        關鍵詞: MSP430F149定時

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 麻栗坡县| 喜德县| 九龙城区| 广平县| 奉贤区| 称多县| 兴和县| 万载县| 昭通市| 杭锦旗| 故城县| 吉安市| 金门县| 浮梁县| 新巴尔虎左旗| 织金县| 罗平县| 美姑县| 衡阳县| 沙洋县| 霍山县| 界首市| 宣武区| 甘谷县| 陆良县| 庆云县| 永春县| 晋城| 宾川县| 嵊州市| 新津县| 梅河口市| 岑巩县| 竹溪县| 乡城县| 霸州市| 滦平县| 明光市| 舒城县| 赤峰市| 普兰店市|