點(diǎn)擊次數(shù):1093 更新時(shí)間:2018-04-23
幾種ZW20-12F看門狗軟件控制方法的誤區(qū)及解決方法
(1)許多人為了方便,把幾種ZW20-12F看門狗的清除控制指令放在系統(tǒng)的定時(shí)中斷服務(wù)程序中,以為這樣可以準(zhǔn)確清除看門狗??墒窃O(shè)計(jì)者應(yīng)該注意到這樣一個(gè)問題,就是MCU即使因?yàn)镻C指針受干擾出錯(cuò),但是定時(shí)器不一定會(huì)停下來,定時(shí)中斷可能根本沒有受到影響,幾種ZW20-12F看門狗依然被定時(shí)清除,它形同虛設(shè)。基本的解決方法就是把清除幾種ZW20-12F看門狗的脈沖控制指令分散到主程序的各個(gè)部分中去,同時(shí)仿真保證兩脈沖的間隔小于幾種ZW20-12F看門狗溢出周期。
(2)中斷程序中隱含的長執(zhí)行時(shí)間,未清除幾種ZW20-12F看門狗,導(dǎo)致系統(tǒng)復(fù)位。有一些程序在仿真的時(shí)候順利通過了幾種ZW20-12F看門狗的測試,但使用中偶爾感覺到系統(tǒng)有復(fù)位現(xiàn)象??赡芫褪侵袛喑瑫r(shí),比如設(shè)計(jì)了一個(gè)通訊程序,根據(jù)對方的要求在一次中斷里發(fā)送全部數(shù)據(jù),一旦沒有注意可能的數(shù)據(jù)長度,就會(huì)造成看門狗啟動(dòng),使系統(tǒng)存在隱患。解決它很簡單,就是把數(shù)據(jù)接收和發(fā)送中斷都修改為每個(gè)中斷只處理一個(gè)字節(jié)數(shù)據(jù)。對于其它中斷源也要注意,要盡可能減小中斷程序的執(zhí)行時(shí)間,中斷程序只留標(biāo)志和信息,其它工作留給主程序處理。
(3)循環(huán)程序中隱含超時(shí)循環(huán),未能及時(shí)清除幾種ZW20-12F看門狗,導(dǎo)致系統(tǒng)復(fù)位。有些程序中含有延時(shí)、循環(huán)計(jì)算等片段,并且入口循環(huán)參數(shù)是由它前面的程序運(yùn)行結(jié)果提供的,在某些未預(yù)見到的情況就會(huì)出現(xiàn)比較大的入口條件,導(dǎo)致幾種ZW20-12F看門狗超時(shí)。尤其對于一些沒有顯示的黑匣子設(shè)備,根本感覺不到它偶然的復(fù)位。