關於STC15F2K60S2看門狗的應用

2021-07-06 03:56:33 字數 3286 閱讀 5962

關於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 大...