?

軟硬件看門狗技術研究

2012-07-12 07:05廣州正力通用電氣有限公司趙洪軍
電子世界 2012年8期
關鍵詞:看門狗主程序死機

廣州正力通用電氣有限公司 趙洪軍

1.引言

隨著單片機技術不斷發展和制造工藝的日益成熟,單片機以其強大的處理能力及低廉的價格使其被廣泛的應用于工業、商業等領域。但由于單片機自身的抗干擾能力不強,尤其是在一些條件比較惡劣、電磁干擾較強的場合,常會出現單片機因受外界干擾而導致死機或程序跑飛的現象,造成系統不能正常工作。業界使用看門狗技術來解決這一問題,通過看門狗的使用防止單片機死機,將死機的系統重新復位并使其正常工作??撮T狗技術是提高單片機系統抗干擾能力的一種重要途徑,看門狗技術分為軟件看門狗及硬件看門狗,本文分析了幾種常用的軟硬件看門狗技術,并提出了一種高可靠的硬件斷電復位看門狗措施,供大家參考。

2.軟件看門狗

軟件看門狗因其只使用了單片機內部的定時器/計數器單元實現看門狗功能,不必外加元器件,因而被普遍的應用于單片機系統中,常與硬件看門狗一起使用。

軟件看門狗一般采用高級中斷的方式執行,通過在中斷程序中設置系統復位寄存器或對程序計數器PC賦予初始值的方式進行系統復位??筛鶕到y的需要自行確定看門狗動作的時間,該時間通過設置定時器的計數值來確定。在系統正常的主循環中適當地插入“喂狗”指令來重置定時器值,當程序跑飛或進入死循環時,定時器因計時到而中斷,從而執行中斷復位程序,將系統復位。下面以新唐公司的ARM Cortex-M0核的NUC120芯片為例介紹一下具體實現方法。晶振頻率為12 MHz,采用TIMER0為軟件看門狗定時器。

1)首先在初始化程序中設置好定時器/計數器的工作方式、定時時間和中斷優先級別,并開中斷。

2)根據定時器的定時時間,在主程序循環中按一定的間隔插入軟件看門狗喂狗指令,即插入“喂狗”指令,兩條“喂狗”指令間的時間間隔應小于定時時間,否則看門狗將發生誤動作。

3)在定時器的中斷服務程序中判斷比較是否到達軟件看門狗的動作時間,如果條件成立則通過設置系統寄存器的方式實現系統復位。

軟件如下:

3.硬件看門狗

圖1 DS1232與AT89C52聯接電路圖

硬件看門狗通常指集成在單片機內部的看門狗定時器或外置的專用看門狗芯片或電路。

3.1 集成在單片機內部的看門狗定時器

現在生產的新型號的單片機基本都含有內部硬件看門狗。這種內部硬件看門狗的使能有兩種方式:一種是通過在程序燒錄時配置相應的熔絲位來使能內部看門狗,這種看門狗一旦開啟將不能通過軟件關閉,相對來說更加可靠,例如:Atmel公司AVR系列的ATmega128芯片。另一種是更加廣泛的通過軟件來控制內部硬件看門狗的開啟及關閉的方式。這種硬件看門狗需要在主程序開始時初始化并開啟看門狗功能,然后在主循環中適時地執行喂狗操作,一旦程序跑飛或死機,內部硬件看門狗定時器溢出,則執行內部復位操作使系統復位。下面仍以新唐公司的NUC120芯片為例介紹一下軟件設置方法。

主程序見上文軟件看門狗部分的“int32_t main()”程序。主程序中調用了“InitWDT()初始化內部硬件WDT”程序,該程序初始化并開啟看門狗功能;并在主循環中調用了“Clr_WDT()內部硬件看門狗喂狗程序”已執行正常的喂狗功能。軟件如下:

圖2 硬件斷電復位看門狗電路圖

3.2 外置的專用看門狗芯片或電路

外置的專用看門狗芯片或電路實際上是一個特殊的定時器,當定時時間到時,發出溢出脈沖,該脈沖輸入到單片機的外部復位引腳上,從而實現系統復位。軟件在主程序循環中適時地執行喂狗操作(通過控制引腳變化來清除外部看門狗),保證系統正常運行時看門狗不溢出;而當系統運行異常時,看門狗超時發出溢出脈沖,通過單片機的RESET引腳使單片機復位。這種方式相比內部硬件看門狗及軟件看門狗更加可靠,不存在因為上電復位失敗而導致內部看門狗及軟件看門狗失效的可能,缺點是需要外配芯片或電路。

目前常用的集成看門狗電路很多,如DS1232、MAX705~708、MAX791等。圖1是DS1232芯片與AT89C52芯片的電路圖,單片機通過P3.3腳控制DS1232的喂狗信號,該喂狗信號在主程序的適當時機給出,保證DS1232芯片不溢出,RST腳則保持為低電平;當單片機死機時,P3.3腳不再給出喂狗脈沖,則DS1232定時到時后RST腳輸出高電平脈沖將單片機復位。

4.硬件斷電復位看門狗

將以上的軟件看門狗、內部硬件看門狗及外部專用看門狗芯片都應用到實際的產品中將使系統的抗干擾性能得到極大的提升,并且可以滿足普通的商業需要。但是在存在較強外部干擾的工業環境下是否萬無一失呢?答案是否定的,作者在工作中就遇到了以上三種方式均不能解決的問題。問題如下,作者采用上文圖一的看門狗電路制作了一款產品,完成后進行測試,再反復施加極強的電磁干擾后,出現了死機現象,并且一直不能復位。經過測量,發現AT89C52單片機的所有引腳都為低電平,并且芯片發熱嚴重;DS1232的工作狀態仍然正常,仍能定期的輸出復位脈沖到單片機,但是無論復位脈沖如何施加,單片機就是不能復位。這就是單片機出現了“死鎖”現象,針對這一現象以上的看門狗措施都將無計可施了,那么如何解決呢?作者提出一種高可靠的硬件斷電復位看門狗措施來解決該問題,簡單地說就是在單片機出現死鎖的現象時通過:斷電、延時、再重新上電的方式來解決該問題。實際應用電路如圖2所示。

單片機主程序的循環中適時地通過控制看門狗引腳(WatchDog)輸出連續多個脈沖以使U1的第1腳輸出一個高電平脈沖來復位U2芯片,使U2計數器清0,從而保證Q1始終不導通,而Q2則導通,以便為單片機提供電源VCC。當單片機死機時,單片機的看門狗引腳不再輸出脈沖來復位U2芯片,U2芯片收到U3產生的第3個脈沖時,U2的第7腳將輸出高電平,此時Q1導通,則Q2截止,停止位單片機提供電源VCC。當U3的下一個脈沖來臨時,U2的第7腳輸出低電平,從而讓Q2導通,重新為單片機供電。系統則實現了死機—斷電—延時—重新上電的高可靠復位方式,而從解決了單片機死鎖的問題。

5.結束語

看門狗技術已經廣泛的應用于單片機系統中,并且成為嵌入式系統不可缺少的一部分。深入的對看門狗技術進行研究并應用到實踐中可以切實的提高產品的抗干擾能力,而從使系統更加穩定、可靠。在具體實施方面,設計者應綜合考慮系統資源、經濟性、可靠性等多方面因素,合理制定看門狗的控制方案,提高系統的性能價格比。

[1]王幸之等編著.單片機應用系統電磁干擾與抗干擾技術[M].北京航天航空大學出版社,2006年2月

[2]李寧編著.ARM開發工具RealView MDK使用入門[M].北京航天航空大學出版社,2008年3月

猜你喜歡
看門狗主程序死機
提醒
淺談數控銑削技術代碼程序的嵌套方式研究
把他叫醒
電控冰箱軟件模塊化設計
時光倒流 換回PotPlayer老圖標
臉死機了
一種采用FPGA實現的通用看門狗電路
把它叫醒
把它叫醒
未經授權的第三方軟件侵權問題研究
——以“騰訊與360之爭”為視角*
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合