找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3861|回復(fù): 5
收起左側(cè)

單片機(jī)看門(mén)狗與中斷沖突問(wèn)題

[復(fù)制鏈接]
ID:477651 發(fā)表于 2019-9-4 21:08 | 顯示全部樓層 |閱讀模式
程序中添加了看門(mén)狗保護(hù),防止死機(jī)。喂狗采用定時(shí)器中斷實(shí)現(xiàn),該中斷設(shè)置了最高優(yōu)先級(jí)。但該程序與源程序的定時(shí)器0中斷、串口中斷產(chǎn)生沖突,源程序定時(shí)器0中斷用于產(chǎn)生時(shí)間,喂狗中斷會(huì)導(dǎo)致計(jì)時(shí)不準(zhǔn)確,串口通信不可靠等問(wèn)題。求助,謝謝。
回復(fù)

使用道具 舉報(bào)

ID:607671 發(fā)表于 2019-9-4 23:08 | 顯示全部樓層
調(diào)整喂狗時(shí)間不就行了
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2019-9-5 01:48 | 顯示全部樓層
喂狗怎么用定時(shí)器中斷來(lái)干呢?它會(huì)被更高等級(jí)的中斷打斷的,很有可能喂狗不成功而復(fù)位的
你可以設(shè)定看門(mén)狗的時(shí)間為幾秒鐘,放在主函數(shù)或者循環(huán)中,看門(mén)狗的時(shí)間要很長(zhǎng),但喂狗的時(shí)間大概是是幾百毫秒喂一次,這樣一來(lái),多個(gè)中斷被觸發(fā)的時(shí)候,看門(mén)狗還有很長(zhǎng)的時(shí)間
回復(fù)

使用道具 舉報(bào)

ID:477651 發(fā)表于 2019-9-5 09:16 | 顯示全部樓層
Y_G_G 發(fā)表于 2019-9-5 01:48
喂狗怎么用定時(shí)器中斷來(lái)干呢?它會(huì)被更高等級(jí)的中斷打斷的,很有可能喂狗不成功而復(fù)位的
你可以設(shè)定看門(mén)狗的 ...

用的是c8051f020單片機(jī),22.1184MHZ晶振,看門(mén)狗的復(fù)位時(shí)長(zhǎng)計(jì)算公式為[4^(3+WDTCN[2:0])] × TSYSCLK ,沒(méi)辦法實(shí)現(xiàn)很長(zhǎng)時(shí)間的設(shè)置,最多幾十毫秒
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2019-9-5 22:27 | 顯示全部樓層
這IC的看門(mén)狗時(shí)鐘是不可調(diào)節(jié)的,用22M晶振的話,看門(mén)狗最多可以是50毫秒左右
但這么長(zhǎng)的時(shí)間還不行嗎?
如果還不行的話就只能是到處喂狗了,你可以在別的中斷進(jìn)入之后就喂狗一次,延時(shí)函數(shù)喂狗一次,這都沒(méi)有關(guān)系的了,但你不能專門(mén)的一個(gè)中斷來(lái)喂狗,這個(gè)中斷一旦被更高等級(jí)的中斷打斷了,就很有可能會(huì)復(fù)位的
你可以這樣:進(jìn)入串口中斷喂一次,進(jìn)入定時(shí)器中斷喂一次,保證在進(jìn)入執(zhí)行時(shí)間很長(zhǎng)的函數(shù)之后,第一件事就是喂狗
回復(fù)

使用道具 舉報(bào)

ID:477651 發(fā)表于 2019-9-6 08:54 | 顯示全部樓層
Y_G_G 發(fā)表于 2019-9-5 22:27
這IC的看門(mén)狗時(shí)鐘是不可調(diào)節(jié)的,用22M晶振的話,看門(mén)狗最多可以是50毫秒左右
但這么長(zhǎng)的時(shí)間還不行嗎?
如果 ...

謝謝,也只能這樣試試了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表