MSP430 單片機時鐘模塊提供 3個時鐘信號輸出,以供給片內各部電路使用。
1-ACLK: 輔助時鐘信號。由圖所示,ACLK 是從 FLXT1CLK 信號由 1/2/4/8 分頻器分頻后所得到的。由BCSCTL1 寄存器設置DIVA相應為來決定分頻因子.ACLK可用于提供CPU外圍功能模塊作時鐘信號使用。
2-MCLK: 主時鐘信號。由圖所示,MCLK 是由 3 個時鐘源所提供的。他們分別是LFXT1CLK,XT2CLK(F13、F14,如果是 F11,F11X1 則由 LFXT1CLK 代替),DCO 時鐘源信號提供.MCLK主要用于MCU和相關系統模塊作時鐘使用。同樣可設置相關寄存器來決定分頻因子及相關的設置。
3-SMCLK: 子系統時鐘,SMCLK 是由 2 個時鐘源信號所提供。他們分別是XT2CLK(F13、F14)和DCO,如果是F11、F11X1則由LFXT1CLK代替TX2CLK。同樣可設置相關寄存器來決定分頻因子及相關的設置。
BCSCTL1 基本時鐘系統控制寄存器1
7 6 5 4 3 2 1 0
XT2OFF TXS DIVA.1 DIVA.0 XT5V Rsel.2 Resl.1 Resl.0
XT2OFF 控制XT2振蕩器的開啟與關閉。
TX2OFF=0,XT2振蕩器開啟。
TX2OFF=1,TX2振蕩器關閉(默認為TX2關閉)
XTS 控制LFXT1 工作模式,選擇需結合實際晶體振蕩器連接情況。
XTS=0,LFXT1 工作在低頻模式(默認)。
XTS=1,LFXT1 工作在高頻模式(必須連接有高頻相應的高頻時鐘源)。
DIVA.0 DIVA.1 控制ACLK分頻。
0 不分頻(默認)
1 2分頻
2 4分頻
3 8分頻
XT5V 此位設置為0。
Resl1.0,Resl1.1,Resl1.2 三位控制某個內部電阻以決定標稱頻率。
Resl=0,選擇最低的標稱頻率。
……。。
Resl=7,選擇最高的標稱頻率。
BSCCTL2 |= DIVM_x (x=0,1,2,3)MCLK分頻(x=0,不分頻;x=1,2分頻;x=2,4分頻;x=3,8分頻)
DIVS_0
BCSCTL2 基本時鐘系統控制寄存器2
7 6 5 4 3 2 1 0
SELM.1 SELM.0 DIVM.1 DIVM.0 SELS DIVS.1 DIVS.0 DCOR
SELM.1 SELM.0 選擇MCLK時鐘源
0 時鐘源為DCOCLK(默認)
1 時鐘源為DCOCLK
2 時鐘源為LFXT1CLK(對于MSP430F11/12X),時鐘源為XT2CLK(對于MSP430F13/14/15/16X);
3 時鐘源為LFTXTICLK。
DIVM.1 DIVM.0 選擇MCLK分頻
0 1分頻(默認)
1 2分頻
2 4 分頻
3 8 分頻
SELS 選擇SMCLK時鐘源
0 時鐘源為DCOCLK(默認)
1 時鐘源為LFXT1CLK(對于MSP430F11/12X),時鐘源為XT2CLK(對于MSP430F13/14/15/16X)。
DIVS.1 DIVS.0 選擇SMCLK分頻。
0 1分頻
1 2分頻
2 4分頻
4 8分頻
DCOR 選擇DCO電阻
0 內部電阻
1 外部電阻
PUC信號之后,DCOCLK被自動選擇MCLK時鐘信號,根據需要,MCLK的時鐘源可以另外設置為LFXT1或者XT2。設置順序如下:
?。?] 復位OscOff
?。?] 清除OFIFG
[3] 延時等待至少50us
?。?] 再次檢查OFIFG,如果仍然置位,則重復[3]、[4]步驟,直到OFIFG=0為止。
低功耗設置的技巧問題:
1、LPM4:在振蕩器關閉模式期間,處理機的所有部件工作停止,此時電流消耗最小。此時只有在系統上電電路檢測到低點電平或任一請求異步響應中斷的外部中斷事件時才會從新工作。因此在設計上應含有可能需要用到的外部中斷才采用這種模式。否則發生不可預料的結果。
2、LPM3:在DC發生器關閉期間,只有晶振是活動的。但此時設置的基本時序條件的DC發生器的DC電流被關閉。由于此電路的高阻設計,使功耗被抑制。注:當從DC關閉到啟動DC0要花一端時間(ns-us)
3、LPM2:在此期間,晶鎮振和DC發生器是工作的,所以可實現快速啟動。
4、LPM1:在此振蕩器已經工作,所以不存在啟動時間延時問題。
Timer_A的寄存器
寄存器 縮寫 讀定類型 地址 初態
Timer_A控制寄存器 TACTL R/W 160H POR復位
Timer_A計數器 TAR R/W 170H POR復位
捕撈/比較控制寄存器0 CCTL0 R/W 162H POR復位
捕撈/比較寄存器0 CCR0 R/W 172H POR復位
捕撈/比較控制寄存器1 CCTL1 R/W 164H POR復位
捕撈/比較寄存器1 CCR1 R/W 174H POR復位
捕撈/比較控制寄存器2 CCTL2 R/W 166H POR復位
捕撈/比較寄存器2 CCR2 R/W 176H POR復位
中斷向量寄存器 TAIV R/W 12EH POR復位
時鐘發生器的原理說明:
問題的提出:
1、高頻、以便能對系統硬件請求和事件作出快速響應
2、低頻率,以便將電流消耗降制至最少
3、穩定的頻率,以滿足定時器的應用。
4、低 Q值振蕩器,以保證開始或停止操作沒有延時
MSP430 采用了一個折衷的辦法:就是用一個低頻晶鎮振,將其倍頻在高頻的工作頻率上。一般采用這種技術的實用方法有兩種,一個是說、鎖相環、 一個是鎖頻環,而鎖相環采用模擬的控制容易引起“失鎖”和易引起電容量的改變。而TI 采用的是鎖頻環技術,它采用數字控制器DCO和頻率積分來產 生高頻的運行時鐘頻率。
TIMER_A有多個捕獲比較模塊,每個模塊都有自己的控制寄存器CCTLx
CAPTMOD1-0 選擇捕獲模式
00 禁止捕獲模式
01 上升沿捕獲
10 下降沿捕獲
11 上升沿與下降沿都捕獲
CCISI1-0 在捕獲模式中用來定提供捕獲事件的輸入端
00 選擇CCIxA
01 選擇CCIxB
10 選擇GND
11 選擇VCC
SCS 選擇捕獲信號與定時器時鐘同步、異步關系
0 異步捕獲
1 同步捕獲
異步捕獲模式允許在請求時立即將CCIFG置位和捕獲定時器值,適用于捕獲信號的周期遠大于定時器時鐘周期的情況。但是,如果定時器時鐘和捕獲信號發生時間競爭,則捕獲寄存器的值可能出錯。
在實際中經常使用同步捕獲模式,而且捕獲總是有效的。
SSCIx 比較相等信號EQUx將選擇中的捕獲、比較輸入信號CCIx(CCIxA,CCIxB,Vcc和GND)進行鎖存,然后可由SCCIx讀出。
CAP 選擇捕獲模式還是比較模式。
0 比較模式
1 捕獲模式
注意:同時捕獲和捕獲模式選擇
如果通過捕獲比較寄存器CCTLx中的CAP使工作模式從比較模式變為捕獲模式,那么不應同時進行捕獲;否則,在捕獲比較寄存器中的值是不可預料的,推薦的指令順序為:[1]修改控制寄存器,由比較模式換到捕獲模式。
?。?]捕獲
OUTMODx 選擇輸出模式
000 輸出
001 置位
010 PWM翻轉/復位
011 PWM置位/復位
100 翻轉/置位
101 復位
110 PWM翻轉/置位
111 PWM復位/置位
CCIx 捕獲比較模的輸入信號
捕獲模式:由CCIS0和CCIS1選擇的輸入信號通過該位讀出。
比較模式:CCIx復位。
OUT 輸出信號
0 輸出低電平
1 輸出高電平
如果OUTMODx選擇輸出模式0(輸出),則該位對應于輸入狀態。
COV 捕獲溢出標志
0 輸出低電平
1 輸出高電平
?。?]當CAP=0時,選擇比較模式。捕獲信號發生復位,沒有使COV置位的捕獲事件。
?。?]當CAP=1時,選擇捕獲模式,如果捕獲寄存器的值被讀出再次發生捕獲事件,則COV置位。程序可檢測COV來斷定原值讀出前是否又發生捕獲事件。讀捕獲寄存器時不會使溢出標志復位,須用軟件復位。
CCIFGx 捕獲比較中斷標志
捕獲模式:寄存器CCRx捕獲了定時器TAR值時置位。
比較模式:定時器TAR值等于寄存器CCRx值時置位。
#include
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //停止看門狗定時器
P1DIR |= 0x01; // 設P1.0為輸出
TACTL = TASSEL_1 + MC_2 + TAIE; // ACLK, 定時器A計數模式,且開中斷功能
_BIS_SR(LPM3_bits + GIE); //進入LPM3 低功耗模式和開總中斷允許
}
// Timer_A3中斷向量(TAIV)處理程序
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch( TAIV ) //應用switch語句來處理多中斷源的向量
{ //向量列表通過case語句來分多中斷源的入口
case 2: break; // CCR1比較/捕獲寄存器的中斷入口,
//本例子未用到。
case 4: break; // CCR2比較/捕獲寄存器的中斷入口,
評論
查看更多