日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 技術學院 > 技術前線
[導讀]MSP430F5529共有兩類共4個定時器,分別是Timer_A定時器3個和Timer_B定時器1個,按照每個寄存器配備的捕獲/比較器的個數(shù)分別命名為Timer0_A(內(nèi)有5個捕獲比較器)、Timer1_A(3個)、Timer2_A(3個)、Timer0_B(7個)。

定時器A是一個復合了捕獲/比較寄存器的十六位的定時(加減)計數(shù)器。定時器A支持多重捕獲/比較,PWM輸出和內(nèi)部定時,具有擴展中斷功能,中斷可以由定時器溢出產(chǎn)生或由捕獲/比較寄存器產(chǎn)生。

特征簡介:

○四種運行模式的異步16位定時/計數(shù)器

○自身時鐘源可選擇配置

○最多達5個可配置的捕獲/比較寄存器(CCR)

capture/compare registers

○可配置的PWM輸出

○異步輸入和輸出鎖存

○對所有Timer_A中斷快速響應的中斷向量寄存器

下面這張圖形象的解釋了Timer_A的結構特性

6.2 TA(Timer_A)的幾個基本操作設置(含寄存器介紹及設置)

聲明:所有寄存器同樣支持字和字節(jié)操作,不要忘記這是什么意思

所有寄存器初始化都為0x0000

6.2.1 TA控制寄存器TACTL(最常用最基本)

再次說明一下例如:TA0CTL、TA1CTL、TA2CTL分別表示3個不同

定時器A的控制寄存器

rw-(0)表示默認讀寫均為0

TASSELx :時鐘源選擇。盡量不要選TASSEL0-TACLK外部時鐘源,因為如果TACLK和CPU時鐘不同步,很容易出問題。(TA0CLK接P1.0引腳)

00 TACLK

01 ACLK

10 SMCLK

11 ~TACLK

IDx:第一次分頻控制。ID0-1分頻;ID1-2分頻;ID2-4分頻;ID3-8分頻

MC:工作模式控制。(建議在修改定時器運行模式前先停止定時器(中斷使能、中斷標志、TACLR例外),以避免產(chǎn)生未知的誤操作。)

00 停止模式:定時器停止

01 增模式: 定時器計數(shù)到TACCR0

10 連續(xù)模式,定時器計數(shù)到0FFFH

11增減模式:定時器加計數(shù)到TACCR0然后減計數(shù)到0000H

TACLR:定時器清零位。該位置位會復位TA寄存器,時鐘分頻和計數(shù)方向。

TACLR位會自動復位并置0

TAIE:定時器中斷使能

0:中斷禁止

1:中斷允許

TAIFG:中斷標志位

0:沒有中斷發(fā)生

1:有中斷掛起

6.2.2 計數(shù)值存放寄存器TAR

①顯然,最大存放計數(shù)值為0xFFFFh;

②(類似51單片機)可以被用來存放一個初值,然后選用連續(xù)模式。這樣不斷計滿再手動填充,從而達到精確計時的效果;

③默認為0,且對該寄存器可以直接賦值;

6.2.3 擴展寄存器TAEX0

很簡單,這個寄存器就是為了控制時鐘源的二次分頻(看結構圖)。

該寄存器的低3為定義為TAIDEX:000-111分別表示1-8分頻

6.2.4 捕獲/比較寄存器TACCR0-TACCR4(共5個)

比較模式下,用來設定計數(shù)終值;

捕獲模式下用來將捕獲的TAR值存放進TACCRx中。

6.3 MC控制的四種工作模式的詳細講解

6.3.1 MC=0停止模式

這是系統(tǒng)默認的模式,定時計數(shù)器禁止工作。

6.3.2 MC=1增模式

總結幾句話:(紅色標記的很重要)

①此模式下嚴禁從0xffff開始計數(shù);

②注意從0計到TACCR0,實際上記了TACCR0+1個數(shù);

③計到TACCR0后,會回到0重新開始計數(shù);

④如果TAR的值大于TACCR0,這時候會立即從0開始計數(shù);

⑤當定時器計數(shù)到TACCR0的值時,中斷標志CCIFG位(之后會講到)置位。當定時器由TACCR0返回0時,TAIFG中斷標志置位;

⑥在定時器運行時修改TACCR0,如果新的周期值大于或等于舊的周期值,或大于當前的定時器計數(shù)值,那么定時器立刻開始執(zhí)行新周期計數(shù)。如果新周期小于當前的計數(shù)值,那么定時器回到0。但是,在回到0之前會多一個額外的計數(shù)。

6.3.3 MC=2連續(xù)模式

在連續(xù)模式中,定時器重復計數(shù)到0FFFFH,然后重新從0開始增計數(shù)(除非每次重裝計數(shù)初值)。當定時器從0FFFFH到0時,TAIFG中斷標志置位。

應用:連續(xù)模式下利用捕獲/比較器產(chǎn)生需要的時間間隔。原理是:計數(shù)在一直進行,捕獲器TACCRX中存有第一個計數(shù)終值,每次捕獲器計到TACCRX時,會產(chǎn)生中斷標志,我們可以在中斷服務函數(shù)中寫入一個計算好的下一個的計數(shù)終值,這樣無限計算和中斷下去,那么該捕獲器就會產(chǎn)生一個穩(wěn)定的時間間隔序列。(其實吧,不明白也沒關系。就算明白了,也不好用,因為計算起來很麻煩而且也不好用)

如圖:

6.3.4 MC=3增減模式(常用于生成PWM波)

①該模式下,計數(shù)方向是固定的,即讓定時器停止后再重新啟動定時器,它就沿著停止時的計數(shù)方向和數(shù)值開始計數(shù)。如果不希望這樣,就需要將TACLR置位來清除方向。TACLR位也會清除TAR的值和定時器的時鐘分頻。

②此模式下置位情況如下圖:

③當定時器運行時,改變TACCR0的值,如果正處于減計數(shù)的情況,定時器會繼續(xù)減到0,新的周期在減到0后開始。

如果正處于增計數(shù)狀態(tài),新周期大于等于原來的周期,或比當前計數(shù)值要大,定時器會增計數(shù)到新的周期;如果新周期小于原來的周期,定時器立刻開始減計數(shù),但是,在定時器開始減計數(shù)之前會多計一個數(shù)。

6.4 捕獲比較模塊

這是在以上介紹的基礎上正式講TA的重要功能。

先看一個寄存器TACCTL0-TACCTL6:(TA中最復雜的寄存器,用到的時候查表啦)

CMx:捕獲模式設定 00 不捕獲

01 上升沿捕獲

10 下降沿捕獲

11上升和下降沿都捕獲

CCISx:捕獲源的選擇 00 CCIxA

01 CCIxB

10 GND

11 VCC

SCS:同步捕獲源,設定是否與時鐘同步

0 異步捕獲

1 同步捕獲

SCCI:選擇的CCI輸入信號由EQUx信號鎖存,并可通過該位讀取。

CAP: 0-比較模式 1-捕獲模式

OUTMOD:輸出模式控制位。(之后會在輸出模塊詳細解釋)

CCIE:中斷使能,該位允許相應的CCIFG標志中斷請求 。

0-中斷禁止 1 -中斷允許

CCI 3 :捕獲比較輸入,所選擇的輸入信號可以通過該位讀取

OUT : 對于輸出模式0,該位直接控制輸出狀態(tài) 。

0-輸出低電平 1-輸出高電平

COV:捕獲溢出位。該位表示一個捕獲溢出發(fā)出,COV必須由軟件復位。

0-沒有捕獲溢出發(fā)生 1-有捕獲溢出發(fā)生

CCIFG:捕獲比較中斷標志位。

0-沒有中斷掛起 1-有中斷掛起

最后一個寄存器TAIV:(還記得外部中斷寄存器嗎,里面同樣存儲的只是一個中斷代號)

里面沒有TACCR0的中斷標志,因為TACCR0優(yōu)先級最高,有一個專門的中斷向量)

這里面的標志位需要軟件手動清零。一種情況例外:兩個中斷同時發(fā)生,先響應優(yōu)先級高的中斷,當該中斷服務程序結束后,該位的中斷標志會自動清零,然后去響應另外一個中斷。

6.4.1比較模式

TA啟動時默認為比較模式。

(CAP=0時選擇比較模式)

比較模式簡介:(也就是一般意義上的定時計時模式)

這是定時器的默認模式,當在比較模式下的時候,與捕獲模式相關的硬件停止工作,如果這個時候開啟定時器中斷,然后設置定時器終值(將終值寫入TACCRx),開啟定時器,當TAR的值增加到和某個TACCRx里面的值相等的的時候,相應的中斷標志位CCIFGx置一,同時中斷標志位TAIFG置位。若中斷允許未開啟則只將中斷標志位CCIFGx置一。

(還記得51單片機的定時器嗎)

注意:當Timer_A要用到TACCR0的值作為終值來計數(shù)(也就是增模式或者增減模式),很顯然TACCR0的值一定要大于其TACCRx的值,否則那些比TACCR0大的計數(shù)值就沒有存在的意義了。

下面是我畫的一個圖。比較形象的解釋了工作原理。(期間TACCR的值不改變)

所謂的比較就是,如果計數(shù)器TAR中的值和某個TACCRx中的值相等了,那么相應的標志位就會置位。


msp430f5529定時器

這只是一個原理,實際應用的時候,會很靈活,通過一個一個設定每次的TACCR值,可以得到想要的各種時間間隔。

總結:比較模式用于選擇PWM輸出信號或在特定的時間間隔中斷。當TAR計數(shù)到TACCRx的值時:

○相應的中斷標志CCIFG置位;

○內(nèi)部信號EQUx=1

○EQUx根據(jù)輸出模式來影響輸出信號

○輸入信號CCI鎖存到SCCI

6.4.2 捕獲模式

當CAP=1時,選擇捕獲模式。捕獲模式用于記錄時間事件,比如速度估計或時間測量。捕獲輸入CCIXA和CCLXB連接外部的引腳或內(nèi)部的信號,這通過CCISX位來選擇。CMX位選擇捕獲輸入信號觸發(fā)沿;上升沿、下降沿或兩者都捕獲。當輸入信號的觸發(fā)沿到來時,捕獲事件發(fā)生:

○定時器的TAR值復制到TACCRX寄存器中

○中斷標志位CCIFG置位

注意:①捕獲信號可能會和定時器時鐘不同步,并導致競爭條件的發(fā)生。將SCS位置位可以在下個定時器時鐘使捕獲同步

②如果第二次捕獲發(fā)生時,第一次捕獲的TAR值還沒有及時被存到TACCRx,捕獲比較寄存器就會產(chǎn)生一個溢出邏輯,COV位在此時置位, COV位必須軟件清除。

6.5 輸出模塊

傳統(tǒng)的定時器,都是通過標志位的判斷來定時觸發(fā)事件的。而430則具有輸出模塊,通過和定時結合起來,可以方便的產(chǎn)生PWM信號或者其它控制信號

每個捕獲/比較器都有一個輸出口,如P1.1-P1.5對應TA0.0-TA0.4這5個捕獲比較器的輸出。

輸出模式: 輸出模式由OUTMODx位來確定,如下表對于所有模式來說(模式0除外),OUTx信號隨著定時器時鐘的上升沿而改變。輸出模式2,3,6和7對輸出模式0無效,因為此模式下,EQUx=EQU0。

(復位指的是置0)

OUTMODX模式說明

000輸出輸出信號OUTx由OUT位定義。當OUT位更

新時,OUTx信號立刻更新

001置位當定時器計數(shù)到TACCRX值時,輸出置位,并保

持置位直到定時器復位或選擇了另一個輸出模式

010翻轉/復位當定時器計數(shù)到TACCRX值時,輸出翻轉。當定

時器計數(shù)到TACCR0值時,輸出復位

011置位/復位當定時器計數(shù)到TACCRX值時,輸出置位。當定

時器計數(shù)到TACCR0值時,輸出復位

100翻轉當定時器計數(shù)到TACCRX值時,輸出翻轉。輸出

信號的周期將是定時器的2倍

101復位當定時器計數(shù)到TACCRX值時,輸出復位,并保

持復位直到選擇了另一個輸出模式

110翻轉/置位當定時器計數(shù)到TACCRX值時,輸出翻轉。當定

時器計數(shù)到TACCR0值時,輸出置位

111復位/置位當定時器計數(shù)到TACCRX值時,輸出復位。當定

時器計數(shù)到TACCR0值時,輸出置位

舉一個例子:結合上表看下圖

注意:在模式轉換的時候,一定要保持OUTMOD至少一位置位,除非轉向0模式。所以最好的做法是:先把OUTMOD置為7,然后再清除掉不需要的位。

做一個說明:比較模式下,當計數(shù)器TAR中的值和TACCRX中的設計值相等時,相應捕獲/比較器的EQUx就會置位。那么EQU0、EQUx和OUTMOD是怎么來影響輸出的呢?以模式2(翻轉/復位)為例,該模式的定義是這樣的:當定時器計數(shù)到TACCRX值時,輸出翻轉。當定時器計數(shù)到TACCR0值時,輸出復位。于是,這句話就也可以翻譯成在模式2的條件下,當EQUX=1時,輸出翻轉;當EQU0等于1的時候,輸出復位。這兩個信號這里相當于兩個觸發(fā)(使能)信號了。

總結

實驗一:

/*利用Timer_A比較模式下的多路定時,讓LED閃爍*/

#include

void main(void)

{

WDTCTL=WDTPW+WDTHOLD;

P1DIR|=(BIT1+BIT2+BIT3+BIT4+BIT5);//P1.1-P1.5為輸出方向

P1OUT=0x00; //全部拉低,初始化LED全滅

TA0CCTL1=CCIE; //捕獲比較器1開啟CCIFG位中斷

TA0CCR1=13107; //置入要比較的數(shù)值0xff/5=13107

TA0CCTL2=CCIE; //捕獲比較器2開啟中斷

TA0CCR2=26214; //13107*2=26214

TA0CCTL3=CCIE; //捕獲比較器3開啟中斷

TA0CCR3=39321; //13107*3=39321

TA0CCTL4=CCIE; //捕獲比較器4開啟中斷

TA0CCR4=52428; //13107*4=52428

TA0CTL|=TACLR+TAIE; //開啟中斷并清零

TA0CTL|=TASSEL_1+MC_2+TAIE;//選擇SCLK32.768KHZ作為時鐘,選用連續(xù)模式,并開啟中斷

/*這樣的話,5個燈閃一遍的時間為0xffff/32768=2S*/

__enable_interrupt(); //開啟總中斷

while(1);

}

/*TIMER0_A0_VECTOR是計時器0的CCR0的中斷寄存器,TIMER0_A1_VECTOR是計時器0的CCR1-CCR4、TA的寄存器*/

/*同理定時器TA1也是分為兩個TIMER1_A0_VECTOR和TIMER1_A1_VECTOR*/

#pragma vector=TIMER0_A1_VECTOR

__interrupt void TimerA(void)

{

switch(__even_in_range(TA0IV,14))

/* 這句話的意思是:只有在TA0IV的值是在0--14內(nèi)的偶數(shù)時才會執(zhí)行switch函數(shù)內(nèi)的語句

其作用是提高switch語句的效率*/

{

case 2:P1OUT=BIT1;break; //TACCR1 CCIFG置位,表明計數(shù)值和設定的13107相等了,也就是說計了0.4S了

case 4:P1OUT=BIT2;break; //TACCR2 CCIFG置位,表明計了0.8S了

case 6:P1OUT=BIT3;break; //TACCR3 CCIFG置位,表明計了1.2S了

case 8:P1OUT=BIT4;break; //TACCR4 CCIFG置位,表明計了1.6S了

case 14:P1OUT=BIT5;break; //TAIFG置位,表明計了2S了

default:break;

}

}

實驗二:比較模式-增減模式輸出PWM波


msp430f5529定時器

/*在比較和增減模式下產(chǎn)生PWM波(矩形波) */

/*提一個PWM波的用處:驅動直流電機。我們知道對于直流電機,驅動它的電流的頻率并不影響轉速 ,只有占空比會影響轉速*/

/*開發(fā)板上P2.0是有外接排針的,所以用這一端口輸出PWM*/

/*看CPU引腳發(fā)現(xiàn),P2.0為TA1.1,也就是定時器A1的1號捕獲比較器輸出口*/

#include

void main(void)

{

WDTCTL=WDTPW+WDTHOLD;

P2SEL|=BIT0; //聲明有特殊功能,不做普通I/O使用

P2DIR|=BIT0; //輸出

P2DS |=BIT0; //全力驅動,否則可能無法驅動電機

P2OUT&=~BIT0; //初始化輸出低電平

/*把SMCL配置為XT2 4MHZ*/

P5SEL=BIT2+BIT3; //聲明特殊功能,將用作外部時鐘晶振XT2輸入

UCSCTL6&=~XT2OFF; //開啟XT2

while(SFRIFG1 & OFIFG)

{

UCSCTL7 &=~(XT2OFFG+DCOFFG+XT1LFOFFG);//清除3種時鐘錯誤標志

SFRIFG1&=~(OFIFG);//清除時鐘錯誤標志位

} //直到XT2從起振到振蕩正常,沒有錯誤發(fā)生

UCSCTL4|=SELS_5; //把SMCLK的時鐘源選為XT2 4MHZ

TA1CCTL0=CCIE; //定時器A1的捕獲比較器0開啟CCIFG位中斷

TA1CCR0=200; //置入計數(shù)終值,則PWM頻率為10KHZ

TA1CCTL1=CCIE; //捕獲比較器1開啟中斷

TA1CCR1=50; //占空比為75%

TA1CTL|=TACLR; //將計時器A1清零

TA1CTL|=TASSEL_2+MC_3; //定時器選擇SMCLK作為時鐘源,且為增減模式

TA1CCTL1=OUTMOD_4; //定時器A1中的捕獲比較器1,輸出模式為4翻轉

while(1);

}

//呼吸燈//

// 介紹: 該程序利用TIMER A 的 UP模式 在P1.3腳產(chǎn)生PWM輸出

// 將CCR0設置為1500來定義PWM的周期,利用循環(huán)不斷改變CCR1的值,

// 實現(xiàn)利用改變PWM的占空比來改變LED亮度.

// SMCLK = MCLK = TACLK = default DCO

#include

void delay_nms(unsigned int n)// 延時函數(shù)

{

unsigned int j;

for (j=0;j<(n);j++)

{

__delay_cycles(400); //太短會使LED顯得好像在常亮,太長就要等較長時間來觀察了

}

}

void main(void)

{

unsigned const PWMPeriod = 1500; //設置PWM周期參數(shù),const聲明此值不允許改變.該數(shù)值太大,會導致LED閃爍

volatile unsigned int i; //聲明變量i是隨時可變的,系統(tǒng)不要去優(yōu)化這個值

WDTCTL = WDTPW + WDTHOLD; // 關閉看門狗

P1DIR |=BIT3; // 設置 P1.3為輸出

P1SEL |=BIT3; // 設置 P1.3為TA0.2輸出

TA0CCR0 = PWMPeriod; // 設置PWM 周期

TA0CCTL2 = OUTMOD_7; // 設置PWM 輸出模式為:7 - PWM復位/置位模式,

// 即輸出電平在TAR的值等于CCR2時復位為0,當TAR的值等于CCR0時置位為1,改變CCR2,從而產(chǎn)生PWM。其實模式2也可以

TA0CTL= TASSEL_2 +MC_1; // 設置TIMERA的時鐘源為SMCLK, 計數(shù)模式為up,到CCR0再自動從0開始計數(shù)

while(1)

{

TA0CCR2=0;//確保最開始是暗的

//漸亮過程:不斷設置TA0CCR2的值,使翻轉的時間變長,改變PWM的占空比

for(i=0;i

{

TA0CCR2=i;

delay_nms(4-(i/500)); //占空比變化的延時,調整延遲時間可改變呼吸燈變暗的速度

//在暗的時候延長delay時間,可增強效果

}

//漸暗過程:不斷設置TA0CCR2的值,使翻轉的時間變短,改變PWM的占空比

for(i=PWMPeriod;i>0;i-=1)

{

TA0CCR2=i;

delay_nms(4-(i/500)); //占空比變化的延時,調整延遲時間可改變呼吸燈變暗的速度

//在暗的時候延長delay時間,可增強效果

}

TA0CCR2=0; //確保燈暗

delay_nms(250); //時間長一點,增強視覺效果

}

}

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉