上一篇最后的部分我們用一個例程來對時鐘系統(tǒng)的設置有了個正面的認識,只給出了程序沒有仿真圖示,原因是我所使用的仿真環(huán)境下對時鐘系統(tǒng)的設置是無效的,選擇時鐘源沒有效果,設置通過指定的引腳同步輸出波形也沒有效果,只有在通過外部時鐘源輸入時鐘信號才可以設置,這個的使用我們將在定時器的說明時給出。其實還是用塊板子比較踏實,仿真和實際有時候真是搞笑,那天他們用單片機做個東西,仿真可以過的在板子上就沒反應。倒是仿真沒反應的到了板子上竟然很隨意的樣子,搞不懂。
寄存器 符號 寄存器類型 地址 初始化狀態(tài) DCO控制寄存器 DCOCTL 讀/寫 056H 帶PUC的060H 基礎時鐘系統(tǒng)控制寄存器1 BCSCTL1 讀/寫 057H 帶POR的087H 基礎時鐘系統(tǒng)控制寄存器2 BCSCTL2 讀/寫 058H 帶PUC的復位 基礎時鐘系統(tǒng)控制寄存器3 BCSCTL3 讀/寫 053H 帶PUC的005H SFR中斷使能寄存器1 IE1 讀/寫 000H 帶PUC的復位 SFR中斷標志寄存器 IFG1 讀/寫 002H 帶PUC的復位
上表給出了設置時鐘模塊時需要操作到的寄存器,下面讓我們去這些寄存器的內部去游覽一番。
DCOx:DCO頻率選擇。這幾位選擇由RSELx設置位已經選定的REL基礎上的8個離散的DCO頻率。
MODx:調節(jié)器選擇。這幾位決定在32個DCOCLK周期內頻率出現(xiàn)的次數。
XT2OFF7位關閉XT2。
XT2打開 XT2不用于SMCLK或MCLK則關閉
XTS 6位LFXT1模式選擇
低頻模式 高頻模式
DIVAx 5-4位ACLK分頻
/1 /2 /4 /8
XT5V 3位 未使用
RSELx 2-0位 范圍選擇。通過內部寄存器來8種頻率階次。
SELMxBits 7-6選擇MCLK的時鐘源
DCOCLK DCOCLK 當有XT2時選擇XT2CLK,否則選擇LFXT1CLK LFXT1CLK
DIVMxBits5-4 MCLK的分頻系數
/1 /2 /4 /8
SELS Bit 3 選擇SMCLK的時鐘源
DCOCLK 當有XT2時選擇XT2CLK,否則選擇LFXT1CLK
DIVSxBit2-1 SMCLk分頻系數
/1 /2 /4 /8
DCORBit0 DCO電阻選擇
內部電阻 外部電阻
Bits7-2 這些位被其他模塊使用。
IFIE Bit1 振蕩器失效中斷使能。此位使能OFIFG中斷。
0 禁止中斷
1 使能中斷
Bit0 該位可用于其他模塊。
Bits7-2這些位被其他模塊使用。
OFIFGBit1 振蕩器失效中斷標志位。
0 沒有未相應的中斷
1 有未被相應的中斷
Bit0 該位可用于其他模塊。
當然這些寄存器、標志位不需要過分記憶。不用的話記住也沒用,用的話自然而然的就能想起,大不了查找下手冊看看而已。
下面我們來看一個比較特別的模塊。作為一款優(yōu)秀的MCU,MSP430可謂為用戶使用考慮到了極致,對于基礎時鐘模塊而言,不僅提供了靈感便捷色時鐘模塊,而且還提供了一個時鐘模塊自動放故障操作。
在基礎時鐘模塊中整合了一個振蕩器失效保護自動防故障模塊。通過一個振蕩器失效檢測器的模擬電路來監(jiān)視LFXT1CLK(in HF mode)和XT2CLK。當任意的這兩個時鐘源信號失效后50us內振蕩器失效保護模塊就會自動工作。如果這個時候MCLK的時鐘源選自失效振蕩器,那么就會自動轉到DCO作為其時鐘源,這樣就可以在晶體振蕩器失效的情況下仍然能夠保證代碼的執(zhí)行。
上圖是其運行的時序圖。
當OFIFG和OFIE標志位被置位時將產生一個NMI請求。NMI中斷服務程序將檢測OFIFG標志位來決定是否有振蕩器失效發(fā)生。OFIFG標志位必須由軟件清除。
當產生振蕩器失效信號時OFIFG被置位。當LFXT1(in HF mode)產生振蕩器失效或者當XT2產生振蕩器失效時,在POR中XT_OscFault將被置位。也就是當XT2或者LFXT1 在高頻模式下因為軟件原因停止后XT_OscFault信號將立即有效,并且持續(xù)有效直到振蕩器重啟。
上一篇:MSP430 定時器B與看門狗定時器(2)
下一篇:最后一頁
推薦閱讀
史海拾趣