新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430單片機定時器面面觀

        MSP430單片機定時器面面觀

        作者: 時間:2016-11-11 來源:網絡 收藏
        對于MSP430 X449而言:

        默認情況如下:

        本文引用地址:http://www.104case.com/article/201611/316955.htm

        ACLK= LFXT1 = 32768Hz, 低頻時鐘源

        MCLK=SMCLK= default DCO = 32 x ACLK = 1048576Hz 高頻時鐘源

        ACLK ,MCLK ,SMCLK的頻率可以根據 FLL+相應的寄存器來調節

        時鐘源有:

        LFXT1CLK: 32768 HZ 即:32K

        XT2CLK: 4M

        DCOCLK: 選擇AP18PF時

        FN_2 1.04875M

        FN_3 1.08860M

        FN_4 1.710

        FN_8 3.4M

        以下引腳的復用功能如下:

        P1.5 : ACLK 82

        P1.4: SMCKL 83

        P1.1: MCLK 86

        —————————————————————————————————————————

        msp430 定時器學習筆記

        _BIS_SR(LPM3_bits + GIE) //進入LPM3低功耗模式和開總中斷允許

        中斷

        #pragma vector=TIMERA0_VECTOR

        __interrupt void Timer_A(void)

        {

        }

        TACTL timerA控制寄存器

        TAR timerA計數器

        CCTL0 捕獲/比較控制寄存器0

        CCRO 捕獲/比寄存器0(具有最高中斷優先級別,單獨使用一個中斷向量)

        CCTL1 捕獲/比較寄存器1

        CCR1 捕獲/比較寄存器1

        CCTL2 捕獲/比較寄存器2

        CCR2 捕獲/比較寄存器2

        TAIV 中斷向量寄存器

        其中,定時器,CCR2,CCR1三者共用一個中斷向量

        ——————————————————————————————————————————

        定時器A是一個16位的定時/計數器。它有3個捕獲/比較寄存器;能支持多個時序控制、多個捕獲/比較功能和多個PWM輸出;有廣泛的中斷功能,中斷可由計數器溢出產生,也可以由捕獲/比較寄存器產生。

        一、TimerA的4種工作模式

        1. 停止模式

        用于定時器暫停,并不發生復位,所有寄存器現行的內容在停止模式結束后都可用。當定時器暫停后重新計數時,計數器將從暫停時的值開始以暫停前的計數方向計數。

        2. 增計數模

        捕獲/比較寄存器CCR0用作Timer_A增計數模式的周期寄存器。因為CCR0為16位寄存器,所以該模式適用于定時器周期小于65536的連續計數情況。計數器TAR可以增計數到CCR0的值,當計數值與CCR0的值相等(或定時器值大于CCR0的值)時,定時器復位并從0開始重新計數。

        3. 連續計數模式

        在需要65536個時鐘周期的定時應用場合常用連續計數模式。定時器從當前值計數到0FFFH后,又從0開始重新計數。

        連續計數模式的典型應用:

        產生多個獨立的時序信號。利用捕獲比較寄存器捕獲各種其它外部事件發生的定時器數據。

        產生多個定時信號。

        4. 增/減計數模式

        需要生成對稱波形的情況經常可以使用增/減計數模式。該模式下,定時器先增計數到CCR0的值,然后反向減計數到0。計數周期仍由CCR0定義,它是CCR0計數器值的2倍。

        二、TimerA寄存器說明

        寄存器

        寄存器說明

        類型

        地址

        初始狀態

        TACTL

        Timer_A控制寄存器

        讀寫

        160H

        POR復位

        TAR

        Timer_A計數器

        讀寫

        170H

        POR復位

        CCTL0

        捕獲/比較控制寄存器0

        讀寫

        162H

        POR復位

        CCR0捕獲/比較寄存器0

        讀寫

        172H

        POR復位

        CCTL1

        捕獲/比較控制寄存器1

        讀寫

        164H

        POR復位

        CCR1捕獲/比較寄存器1

        讀寫

        174H

        POR復位

        CCTL2

        捕獲/比較控制寄存器2

        讀寫

        166H

        POR復位

        CCR2捕獲/比較寄存器2

        讀寫

        176H

        POR復位

        TAIV中斷向量寄存器

        讀寫

        12EH

        POR復位

        1. TACTL 控制寄存器,各位定義:

        15-10

        987

        6

        5

        4

        3

        2

        1

        0

        未用

        SSEL1SSEL0ID1ID0MC1MC0未用CLRTAIETAIFG

        SSEL1、SSEL0選擇進入定時器分頻器的時鐘源

        SSEL1

        SSEL0

        輸入時鐘源

        說明

        00TACLK用特定的外部引腳信號
        01ACLK輔助時鐘
        10MCLK系統時鐘
        11INCLK外部輸入時鐘

        ID1、ID0輸入分頻系數

        ID1

        ID0

        分頻系數

        00不分頻
        011/2分頻
        101/4分頻
        111/8分頻

        MC1、MC0計數模式控制位

        MC1

        MC0

        模式

        00停止模式
        01增計數模式
        10減計數模式
        11增/減計數模式

        CLR——定時器清除。當該位為1時,定時器復位。

        TAIE——定時器中斷允許位。0:禁止定時器溢出中斷;1:允許定時器溢出中斷。

        TAIFG——定時器溢出標志位。

        增計數模式:當定時器由CCR0計數到0時,TAIFG置位;

        連續計數模式:當定時器由0FFFFH計數到0時,TAIFG置位;

        增/減計數模式:當定時器由CCR0減計數到0時,TAIFG置位。

        2. TAR 16位計數器。

        3. CCTLx 捕捉/比較控制寄存器,各位定義:

        15 14

        13 1211109

        8

        7 6 5

        4

        3

        2

        1

        0

        CAPTMOD1~0

        CCIS1~0SCSSCCIx

        CAP

        OUTMODx

        CCIEx

        CCIx

        OUT

        COV

        CCIFGx

        CAPTMOD1~0——選擇捕獲模式

        00:禁止捕獲模式

        01:上升沿捕獲

        10:下降沿捕獲

        11:上升沿與下降沿都捕獲

        CCIS1~0——捕獲事件輸入源

        00:選擇CCIxA

        01:選擇CCIxB

        10:選擇GND

        11:選擇Vcc

        SCS——選擇捕獲信號與定時器時鐘同步、異步關系

        0:異步捕獲

        1:同步捕獲(實際中經常使用同步模式,捕獲總是有效的)

        SCCIx——比較相等信號EQUx將選中的捕獲/比較輸入信號CCIx(CCIxA,CCIxB,Vcc和GND)進行鎖存,然后可由SCCIx讀出。

        CAP——選擇捕獲模式還是比較模式。

        0:比較模式

        1:捕獲模式

        OUTMODx——選擇輸出模式

        000:輸出

        001:置位

        010:PWM翻轉/復位

        011:PWM置位/復位

        100:翻轉

        101:復位

        110:PWM翻轉/置位

        111:PWM復位/置位

        CCIEx——捕獲/比較模塊中斷允許位

        0:禁止中斷

        1:允許中斷

        CCIx——捕獲/比較模塊的輸入信號

        捕獲模式:由CCIS0和CCIS1選擇的輸入信號可通過該位讀出

        比較模式:CCIx復位

        OUT——輸出信號(如果OUTMODx選擇輸出模式0,則該位對應于輸入狀態)

        0:輸出低電平

        1:輸出高電平

        COV——捕獲溢出標志

        0:沒有捕獲溢出

        1:發生捕獲溢出

        當CAP=0時,選擇比較模式。捕獲信號發生復位。沒有使COV置位的捕獲事件。

        當CAP=1時,選擇捕獲模式。如果捕獲寄存器的值被讀出前再次發生捕獲事件,則COV置位。程序檢測COV來判斷原值讀出前是否又發生捕獲事件。讀捕獲寄存器時不會使溢出標志復位,須用軟件復位。

        CCIFGx——捕獲比較中斷標志

        捕獲模式:寄存器CCRx捕獲了定時器TAR值時置位

        比較模式:定時器TAR值等于寄存器CCRx值時置位

        4. CCRx 捕捉/比較寄存器:可讀可寫

        在捕獲模式,當滿足捕獲條件,硬件自動將計數器TAR數據寫入該寄存器。

        如果測量某窄脈沖(高電平)的脈沖長度,可定義上升沿和下降沿都捕獲。在上升沿時,捕獲一個定時器數據,這個數據在捕獲寄存器中讀出;再等待下降沿到來,在下降沿時又捕獲一個定時器數據;那么兩次捕獲的定時器數據差就是窄脈沖的高電平寬度。

        其中CCR0經常用作周期寄存器,其它CCRx相同。

        5. TAIV 中斷向量寄存器:

        Timer_A模塊使用兩個中斷向量。一個單獨分配給捕獲/比較寄存器CCR0;另一個作為共用中斷向量用于定時器和其它的捕獲/比較寄存器。

        捕獲/比較寄存器CCR0中斷向量具有最高的優先級。因為CCR0能用于定義增計數和增/減計數模式的周期。因此,它需要最快速的服務。CCIFG0在被中斷服務時能自動復位。

        CCR1~CCRx和定時器共用另一個中斷向量,屬于多源中斷,對應的中斷標志CCIFG1~CCIFGx和TAIFG1在讀中斷向量字TAIV后,自動復位。如果不訪問TAIV寄存器,則不能自動復位,須用軟件清除。

        15~5

        4~ 10

        0~0

        中斷向量0

        中斷優先級

        中斷源

        縮寫

        TAIV的內容

        最高捕獲/比較器1CCIFG12
        捕獲/比較器2CCIFG24
        ......
        捕獲/比較器xCCIFGx
        最低定時器溢出TAIFG110
        沒有中斷將掛起

        ————————————————————————————————————————————————

        //******************************************************************************

        //

        // Lierda, Inc

        // Built with IAR Embedded Workbench Version: 3.41a

        // ID: MSP430-TEST44X

        // 程序功能:實現延時 1S,驅動LED4閃爍

        // 通過本實驗了解MSP430內部的時鐘來源和不同頻率的設置。

        // 硬件連接:在必須連接P1.1、P1.5短接器,

        //******************************************************************************

        #include "msp430x44x.h"

        void main(void)

        {

        WDTCTL = WDTPW + WDTHOLD; // 停止看門狗定時器

        TACTL = TASSEL0 +TACLR; //選擇ACLK為分頻時鐘源,清TAR

        TACTL |= MC0; //開啟Timer_A,連續計數模式

        CCTL0 = CCIE; //開啟Timer_A的中斷

        CCR0 = 32000; //延時32000/32k=1s

        P5DIR |= BIT1;

        P5OUT |= BIT1;

        while(1)

        {

        _BIS_SR(LPM3_bits+GIE); //進入低功耗模式

        }

        }

        #pragma vector=TIMERA0_VECTOR

        __interrupt void Time_A()

        {

        P5OUT ^=BIT1;

        }



        關鍵詞: MSP430單片機定時

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 高安市| 肇源县| 洛南县| 永清县| 洪洞县| 滦平县| 普洱| 珠海市| 宣化县| 海林市| 翁牛特旗| 曲松县| 宝坻区| 塔城市| 辽阳市| 福鼎市| 滨海县| 即墨市| 徐汇区| 盐山县| 布尔津县| 杨浦区| 龙井市| 海宁市| 平潭县| 博客| 射洪县| 虎林市| 修文县| 炎陵县| 赣榆县| 屏东市| 兖州市| 永昌县| 广州市| 大姚县| 鲁山县| 库尔勒市| 临高县| 嘉义市| 乐清市|