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