關於stc15f2k60s2看門狗的應用
1.stc15f2k60s2系列微控制器的內部結構圖
stc15f2k60s2系列微控制器的內部結構框圖如下圖所示,stc15f2k60s2系列微控制器中包含**處理器(cpu)、程式儲存器(flash)、資料儲存器(sram)、定時器、io口、高速a/d轉換、看門狗、uart高速非同步序列通訊口1/序列通訊口2,ccp/pwm/pca,一組高速同步串列埠spi,片內高精度r/c時鐘及高可靠復位等模組,stc15f2k60s2系列微控制器幾乎包含了資料採集和控制中的所有單元模組。
2.目的:
在工業控制/汽車電子/航空航天等需要高可靠行的系統中,為了防止「系統在異常情況下,受到干擾,mcu/cpu程式跑飛,導致系統長時間異常工作」,通常是引進看門狗,如果mcu/cpu不在規定的時間內按要求訪問看門狗,就認為mcu/cpu處於異常狀態,看門狗就會強迫mcu/cpu復位,使系統重新從頭開始按規律執行使用者程式。看門狗復位狀態結束後,不影響特殊功能暫存器iap_ontr中swbs/iap_ontr.6位的值,微控制器根據復位前swbs/iap_ontr.6的值選擇是從使用者應用程式區啟動,還是從系統isp監控程式區啟動。如果看門狗復位前swbs/iap_ontr.6的值為0,則看門口復位狀態結束後微控制器從系統isp監控程式區啟動。看門狗復位是熱啟動復位中的軟復位之一。
工作原理:看門狗實際上是乙個定時器或計數器,簡稱wdt。微控制器執行工作中,看門狗會對微控制器機器週期脈衝不停計數,當微控制器程式陷入死迴圈時,微控制器程式如果不能及時對看門狗的定時器復位,看門狗就會在其定時器計滿溢位時產生乙個復位訊號,從而使系統重啟。
看門狗應用時,首先確定看門狗計數器的位數,然後參考計數脈衝週期計算出看門狗計數溢位所需的時間t,餵狗程式 餵狗時間要小於t,這樣隔一段時間喂一次狗,只要程式正常執行,看門狗定時器就不會溢位。一旦出現程式死迴圈故障,餵狗程式失敗,不能對看門狗定時器及時清零,就會導致計時器溢位,重啟系統。
3.特殊暫存器:
stc15系列微控制器內部也引進了此看門狗功能,使微控制器系統可靠性設計變得更加方便/簡潔。為此功能,我們增加如下特殊功能暫存器wdt_contr:
wdt_contr:看門狗(watch—dog—timer)控制暫存器
sfr name
address
bitb7
b6b5
b4b3
b2b1
b0wdt_contr
0c1h
name
wdt_flag
_en_wdt
clr_wdt
idle_wdt
ps2ps1
ps0wdt_flag: 看門狗溢位標誌位,當溢位時,該位由硬體置1,可用軟體將其清零。
en_wdt: 看門狗允許位,當設定為「1」時看門狗啟動。
clr_wdt: 看門狗清「0」位,當設為「1」時,看門狗重新計數。硬體將自動清「0」此位。
idle_wdt: 看門狗「idle」模式位,當設定為「1」時,看門狗定時器在「空閒模式」計數,當清」0」該位時,看門狗定時器在「空閒模式」時不計數。
ps2,ps1,ps0:看門狗定時器分頻值,如下表所示
ps2ps1
ps0pre_scale預分頻
wdt overflow time @20mhz00
0239.3ms00
1478.6ms01
08157.3ms01
116314.6ms10
032629.1ms10
1641.25s11
0128
2.5s11
1256
5s看門狗溢位時間 = (12 *pre—scale*32768)/oscillatorfrequency
設時鐘為12mhz
看門狗溢位時間 = (12 *pre—scale*32768)/12000000= pre—scale*393216/12000000
ps2ps1
ps0pre_scale預分頻
wdt overflow time @12mhz00
0265.5ms00
14131.0ms01
08262.1ms01
116524.2ms10
0321.0485s10
1642.0971s11
0128
4.1943s11
1256
8.3886s
設時鐘為11.0592mhz
看門狗溢位時間 = (12 *pre—scale*32768)/11059200 = pre—scale*393216/11059200
ps2ps1
ps0pre_scale預分頻
wdt overflow time @11.0592mhz00
0271.1ms00
14142.2ms01
08284.4ms01
116568.8ms10
0321.1377s10
1642.2755s11
0128
4.5511s11
1256
9.1022s
4.程式:
用led燈的亮表示程從頭序執行,用延時函式改變兩次餵狗時間間隔。
/****************************測試程式******************************/
#include
sbit led = p0^0;
sfr wdt_contr = 0xel;/*定義stc微控制器中新加入的看門狗程式*/
void delay(unsigned int x)/*定義延時函式*/
while(x--);
void main(void)
wdt_contr = 0x35;/*設定模式計數器值*/
led = 1;
delay(20000);
led = 0;
while(1)
wdt_contr = 0x35;
delay(50000);
(1)程式開始後,點亮發光二極體後延時一段時間熄滅,延時不能過長,若兩次餵狗時間間程式執行時間大於看門狗溢位時間,看門狗將復位微控制器,可調節這個時間,讓看門狗是否復位。
(2)餵狗時使用和設定看門狗暫存器同樣的語句,只要看門狗暫存器中clr—wdt位置「1」,看門狗定時器重新計數,由硬體自動將其清零。
(3)演示為發光二極體亮後熄滅不會再亮,這說明程式沒被復位,while迴圈中看門狗被正常餵狗,若將wdt_contr= 0x35;去掉程式將會不停復位,因為看門狗定時器溢位復位。
STC15F2K60S2實現A D轉換
以中斷方式進行a d轉換,取10位精度,並送p3和p2口led燈顯示 低電平驅動 p3口顯示最高2位,p2口顯示第8位。include stc15f2k60s2.h unsigned char data adc datah 定義儲存ad轉換結果的絕對位址 unsigned char data adc...
STC15F2K61S2儲存結構
目錄特殊功能暫存器 stc15f2k61s2的儲存結構由程式儲存器和資料儲存器構成。該微控制器的程式儲存器和資料儲存器是獨立編址的,特殊功能暫存器與高128b ram共用相同的位址範圍,都使用 80h ffh,特殊功能暫存器必須用直接定址指令訪問。程式儲存器用於存放使用者程式 資料和 等資訊。stc...
STC15F2K61S2微控制器片內硬體結構
stc15f2k61s2是stc生產的單時鐘 機器週期 1t 的微控制器,是高速 高可靠 低功耗 超強抗干擾的新一代8051微控制器.61kb片內flash程式儲存器,可擦寫次數10萬次以上 片內大容量 2048位元組 sram,包括常規的256位元組ram和內部擴充套件的1792位元組xram 大...