|
時(shí)鐘振蕩器(PROM)
通過(guò)掩膜選項(xiàng),可以選擇石英晶體振蕩器或RC振蕩器,兩者都可作為系統(tǒng)時(shí)鐘。不管用哪種振蕩器,其信號(hào)都支持系統(tǒng)時(shí)鐘。HALT模式會(huì)停止系統(tǒng)振蕩器并忽略任何外部信號(hào),由此來(lái)節(jié)省電能。 如果采用RC振蕩器,那么在VDD與OSC1之間要接一個(gè)外接電阻,其阻值范圍為51k—1MΩ。在OSC2端可獲得系統(tǒng)時(shí)鐘的4分頻信號(hào),它可以用來(lái)同 步系統(tǒng)外部邏輯。RC振蕩器是一種低成本方案,但是振蕩器頻率由于VDD、溫度及芯片自身參量的漂移而產(chǎn)生誤差。因此對(duì)計(jì)時(shí)敏感的場(chǎng)合,要求精確度高的振 蕩器頻率,RC振蕩器是不適用的。
時(shí)鐘振蕩電路
如果選用石英晶體振蕩器,在OSC1和OSC2之間連接一個(gè)石英晶體,用來(lái)提供石英振蕩器所要的反饋(Feedback)和相位位移 (Phase Shift),除此之外,不再需要其它外部元件。另外,在OSC1與OSC2之間接一個(gè)諧振器(Resonator)來(lái)取代石英振蕩器用來(lái)得到參考頻率, 但是需要在OSC1和OSC2外接兩個(gè)電容器(如果振蕩頻率1MHz)。
WDT看門(mén)狗振蕩器是一個(gè)芯片內(nèi)部自由振蕩的RC振蕩器,不需連接外部元件,甚至系統(tǒng)進(jìn)入省電模式時(shí),系統(tǒng)時(shí)鐘停止了,但WDT振蕩器仍然依大約65us/5V的周期工作。由掩膜選項(xiàng)確定,WDT振蕩器能停振來(lái)達(dá)到省電目的。
看門(mén)狗定時(shí)器
WDT 的時(shí)鐘源是一個(gè)專(zhuān)用的RC振蕩器(WDT振蕩器)或是由指令周期(系統(tǒng)時(shí)鐘4分頻)來(lái)實(shí)現(xiàn)的,由掩膜選項(xiàng)決定。WDT是用于防止程序不正常運(yùn)行或是跳到未 知或不希望去的地址,而導(dǎo)致不可預(yù)見(jiàn)的結(jié)果。WDT可以被掩膜選項(xiàng)禁止,如果WDT定時(shí)器被禁止,所有與WDT有關(guān)的操作都是空操作。
如果設(shè)置了內(nèi)部WDT振蕩器(以65us/5V為周期的RC振蕩器)的話,WDT的值會(huì)先除以256(8級(jí))來(lái)產(chǎn)生大約16.6ms的溢出時(shí)間,這個(gè)溢出 時(shí)間會(huì)因溫度、VDD、以及芯片參數(shù)的變化而變化。如果啟動(dòng)WDT的前置分頻器,則可實(shí)現(xiàn)更長(zhǎng)的溢出時(shí)間。寫(xiě)數(shù)據(jù)到WS2、WS1、WS0(WDTS的 2、1、0位)會(huì)產(chǎn)生不同的溢出時(shí)間,舉例說(shuō)明:如果WS2、WS1、WS0的值都為1,其分頻因子最大,為1:128,溢出時(shí)間最長(zhǎng)約為 2.2us/5V。如果WDT被禁止,那么WDT的時(shí)鐘來(lái)源可來(lái)自指令時(shí)鐘,其運(yùn)作與WDT振蕩器一樣。但當(dāng)在HALT狀態(tài)時(shí),來(lái)源于指令時(shí)鐘的WDT會(huì) 在暫停模式時(shí)停止計(jì)數(shù)并失去保護(hù)功能。在這種情況下,只能由外部邏輯來(lái)重新啟動(dòng)系統(tǒng)。WDTS的高4位及其第3位保留給用戶(hù)定義標(biāo)志使用的,程序員可以利 用這些標(biāo)志來(lái)指示某些特殊的狀態(tài)。
如果單片機(jī)工作在于干擾很大的環(huán)境中,那么強(qiáng)烈建議使用片內(nèi)RC振蕩器(WDT OSC),因?yàn)镠ALT模式會(huì)使系統(tǒng)時(shí)鐘終止運(yùn)作。
在正常運(yùn)作下,WDT溢出會(huì)使系統(tǒng)復(fù)位并設(shè)置TO狀態(tài),但在HALT模式下,溢出只產(chǎn)生一個(gè)“熱復(fù)位”,只能使PC程序計(jì)數(shù)器和堆棧SP復(fù)位到零,要清除 WDT的值(包括WDT前置分頻器)可以有三種方式:外部復(fù)位(低電平輸入到RES端),用軟件指令和HALT指令三種。軟件指令由CLR WDT和另一組CLR WDT1及CLR WDT2組成。這兩組指令中,只能選取一種,選擇的方式由掩膜選項(xiàng)的CLR WDT的次數(shù)決定。如果“CLR WDT”被選擇(即CLR WDT次數(shù)為1),那么只要執(zhí)行CLR WDT指令就會(huì)清除WDT。在CLR WDT1和CLR WDT2被選擇的情況下(即CLR WDT的次數(shù)為2),要執(zhí)行兩條指令才會(huì)清除WDT,否則WDT會(huì)由于溢出而使系統(tǒng)復(fù)位。
| HT48R05A-1 WDT前置分頻器 |
| WS2 |
WS1 |
WS0 |
分頻率 |
| 0 |
0 |
0 |
1:1 |
| 0 |
0 |
1 |
1:2 |
| 0 |
1 |
0 |
1:4 |
| 0 |
1 |
1 |
1:8 |
| 1 |
0 |
0 |
1:16 |
| 1 |
0 |
1 |
1:32 |
| 1 |
1 |
0 |
1:64 |
| 1 |
1 |
1 |
1:128 |
暫停模式(HALT)
暫停模式是由HALT指令來(lái)實(shí)現(xiàn)的,產(chǎn)生如下結(jié)果:
· 關(guān)閉系統(tǒng)振蕩器,但WDT振蕩器繼續(xù)工作(選WDT振蕩器時(shí))
· RAM及寄存器的內(nèi)容保持不變。
· WDT和WDT前置分頻器被清除并再次重新計(jì)數(shù)(選WDT振蕩器)。
· 所有的I/O端口都保持其原來(lái)的狀態(tài)。
· PD標(biāo)志位被置位,TO標(biāo)志位被清除。
由于外部復(fù)位、中斷、外部輸入一個(gè)下降沿信號(hào)到PA口或WDT溢出,可使系統(tǒng)脫離暫停狀態(tài),外部復(fù)位能使系統(tǒng)初始化而WDT溢出使系統(tǒng)“熱復(fù)位”。測(cè)試 TO 和PD狀態(tài)后,系統(tǒng)復(fù)位的原因就可被確定,PD標(biāo)志位是由系統(tǒng)上電復(fù)位和執(zhí)行CLR WDT指令被清除,而它的置位是由于執(zhí)行了HALT指令。如果WDT產(chǎn)生溢出,會(huì)使TO標(biāo)志位置位,還能產(chǎn)生喚醒使得程序計(jì)數(shù)的PC和堆棧指針SP復(fù)位, 其它都保持原狀態(tài)。
PA端口的喚醒和中斷方式被看成正常狀態(tài),PA口的每一位都可以通過(guò)掩膜選項(xiàng)來(lái)單獨(dú)設(shè)定為對(duì)系統(tǒng)的喚醒,如果喚醒是來(lái)自于I/O口的信號(hào)變化,程序會(huì)重新 繼續(xù)執(zhí)行下一條指令。如果喚醒是來(lái)自于中斷,那么有兩種情況可能發(fā)生:如果相關(guān)的中斷被禁止或中斷是允許的,但堆棧已滿,那么程序?qū)⒗^續(xù)執(zhí)行下一條指令, 如果中斷允許且堆棧未滿,那么這個(gè)中斷響應(yīng)就發(fā)生了。如果在進(jìn)入HALT模式以前,中斷請(qǐng)求標(biāo)志位被置 “1”,那么相關(guān)的中斷喚醒功能被禁止。一旦喚醒事件發(fā)生,要花1024tsys(系統(tǒng)時(shí)鐘周期)系統(tǒng)才重新正常工作。也即在喚醒后被插入了一個(gè)等待時(shí) 間。如果喚醒來(lái)自于中斷響應(yīng),那么實(shí)際的中斷程序執(zhí)行就延遲了一個(gè)或一個(gè)以上的周期。但是如果喚醒導(dǎo)致下一條指令執(zhí)行,那么在一個(gè)等待周期結(jié)束后指令就立 即被執(zhí)行。
為了省電,在進(jìn)入HALT模式前必須小心處理I/O端口狀態(tài)。 |