|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
好的程序看門狗只需要喂一次嗎? |
| 作者:blueboyjf 欄目:單片機 |
用ATMEGA16寫了2000多行的程序,自以為寫的還不錯。結(jié)果經(jīng)理一看,就說,你的程序我沒看懂,不過,看你到處“喂狗”,就不是好程序。好程序,只要一次喂狗就好了。 以前似乎也聽有人這樣說過。對操作系統(tǒng)的原理還不是太懂,也沒用操作系統(tǒng),。經(jīng)理說程序要分任務(wù),沒有操作系統(tǒng)就一個一個任務(wù)的做,循環(huán)一次不會花很多時間,喂一次狗就好了。 感覺經(jīng)理說的應(yīng)該是對的。但是真要寫出只喂一次狗就行的長程序來,好像也不太簡單。 大家對只喂一次狗有什么樣的看法? 有人像我一樣頻繁多次多處喂狗嗎? |
| 2樓: | >>參與討論 |
| 作者: 12864 于 2005/10/18 23:48:00 發(fā)布:
他說的沒錯 不過我覺得不一定是一處,可以是幾處,但最好不要滿世界喂狗,因為這樣明顯表現(xiàn)出你對自己設(shè)計的系統(tǒng)沒法掌控,領(lǐng)導(dǎo)看了會心情暗淡的。 |
|
| 3樓: | >>參與討論 |
| 作者: yewuyi 于 2005/10/19 9:46:00 發(fā)布:
還有好的程序根本就不“殺狗”的呢 例如,很多低功耗產(chǎn)品…… |
|
| 4樓: | >>參與討論 |
| 作者: 夏蟲 于 2005/10/19 11:29:00 發(fā)布:
不必每個函數(shù)中都喂狗,感覺沒必要,估算程序跑一遍的時間 不必每個函數(shù)中都喂狗,感覺沒必要,估算程序跑一遍的時間,在幾個函數(shù)中喂一次就行 |
|
| 5樓: | >>參與討論 |
| 作者: 后學(xué) 于 2005/10/19 12:15:00 發(fā)布:
沒錯兒,在主循環(huán)喂一次狗就可以了~ 1、如果你在中斷中喂狗,那么狗就沒有什么用了; 2、如果你的主循環(huán)循環(huán)一次的時間大于狗的復(fù)位時間,說明你的程序結(jié)構(gòu)有問題; 所以,一般的程序在主循環(huán)喂一次狗就行了 當然,特殊情況,區(qū)別對待 |
|
| 6樓: | >>參與討論 |
| 作者: ketp 于 2005/10/19 18:36:00 發(fā)布:
- 不在中斷里喂的話,如果是ATMEL的內(nèi)狗(13ms ,12m)恐怕很難做到 |
|
| 7樓: | >>參與討論 |
| 作者: 程序匠人 于 2005/10/19 20:34:00 發(fā)布:
好的程序主循環(huán)里的指令應(yīng)該不超過10條指令 |
|
| 8樓: | >>參與討論 |
| 作者: computer00 于 2005/10/19 20:53:00 發(fā)布:
呵呵,在主函數(shù)里就調(diào)用一個函數(shù),然后再慢慢展開~~~~~ |
|
| 9樓: | >>參與討論 |
| 作者: wwwzhang 于 2005/10/19 21:05:00 發(fā)布:
為什么不能在中斷中喂狗。 |
|
| 10樓: | >>參與討論 |
| 作者: 12864 于 2005/10/19 22:05:00 發(fā)布:
匠人,10條怎么行啊,你的任務(wù)隊列都放在哪里了? |
|
| 11樓: | >>參與討論 |
| 作者: epwwm 于 2005/10/19 23:17:00 發(fā)布:
10條怎么行啊?這是不是應(yīng)該看看堆棧的深度! |
|
| 12樓: | >>參與討論 |
| 作者: blueboyjf 于 2005/10/20 0:01:00 發(fā)布:
那我完了 我現(xiàn)在程序里到處都在喂狗,估計有幾十次了 頭一次寫這么復(fù)雜的程序,而且是一個人搞,沒有可以商量的人,真郁悶 有時間再把程序結(jié)構(gòu)好好弄弄。 主循環(huán)10句話是怎么搞定的?什么樣的結(jié)構(gòu)呢? 各位大俠擺幾個pose給俺們開開眼好不好? |
|
| 13樓: | >>參與討論 |
| 作者: 程序匠人 于 2005/10/20 0:29:00 發(fā)布:
說明一下:10條是一個概念 可能對于一些大些的項目,10條不夠。但這里講的是一個概念,不可鉆文字上的牛角尖 我的許多程序都是這樣的: MAIN: WDTC ;(喂狗) CALL DISPALY_CNT CALL KEY_CNT CALL AD_CNT CALL OUTPUT_CNT CALL ...... ...... JMP MAIN main() { asm_ wdtc; //喂狗 display_cnt(); key_cnt(); ad_cnt(); ...... ...... } |
|
| 14樓: | >>參與討論 |
| 作者: 程序匠人 于 2005/10/20 0:32:00 發(fā)布:
主程序(主函數(shù))的作用相當于調(diào)度室 自己不干活,指揮人家干就行了,所以,主程序(主函數(shù))里不該有具體功能性的指令(語句)。這樣做的話,結(jié)構(gòu)比較清晰 |
|
| 15樓: | >>參與討論 |
| 作者: 12864 于 2005/10/20 1:34:00 發(fā)布:
簡單的執(zhí)行機構(gòu)是否應(yīng)該這樣 main() { initial_XXX1(); initial_XXX2(); initial_XXX3(); ... initial_XXXN(); // task operator while(true) { if(need_XX1) { need_XX1 = false; XX1(); } if(need_XX2) { need_XX2 = false; XX2(); } ...... if(need_XXN) { need_XXN = false; XXN(); } watch_dog(); // MICRO function sleep(); // .. } } 之所以將標志判斷也放在main中,是因為別到了對應(yīng)函數(shù)才發(fā)現(xiàn)沒自己的事,出入都是一堆push/pop... |
|
| 16樓: | >>參與討論 |
| 作者: 程序匠人 于 2005/10/20 8:19:00 發(fā)布:
12864的思路是對的 |
|
| 17樓: | >>參與討論 |
| 作者: Waffle 于 2005/10/20 9:12:00 發(fā)布:
請問程序匠人 請問程序匠人,如果你主程序里調(diào)用的display_cnt()等函數(shù)執(zhí)行時間比較長,怎么辦? |
|
| 18樓: | >>參與討論 |
| 作者: 程序匠人 于 2005/10/20 9:42:00 發(fā)布:
答Waffle:可以分時間片執(zhí)行 比如:如果是掃描LED數(shù)碼管,可以每次只掃描一位數(shù)碼管 |
|
| 19樓: | >>參與討論 |
| 作者: Waffle 于 2005/10/20 10:14:00 發(fā)布:
那不是要用到操作系統(tǒng)了? 那不是要用到操作系統(tǒng)了? |
|
| 20樓: | >>參與討論 |
| 作者: lg8213 于 2005/10/20 12:45:00 發(fā)布:
程序匠人說得對 對于時間長的函數(shù)分幾次來完成,省時,提高整個程序的掃描速度. 對于比較大的程序: 主程序中也可以分幾次來完成一次程序的更新:第一次掃鍵,每二次刷新顯示,第三次..... |
|
| 21樓: | >>參與討論 |
| 作者: along_yu 于 2005/10/20 14:38:00 發(fā)布:
根據(jù)具體情況來看吧?說不好的…… |
|
| 22樓: | >>參與討論 |
| 作者: blueboyjf 于 2005/10/20 20:02:00 發(fā)布:
學(xué)習(xí)中 今天特意數(shù)了數(shù),我的C程序2700行多,喂狗的地方有110處之多 主要是程序開始的架構(gòu)沒搞好,后來程序越加越復(fù)雜,喂狗就越來越多了。 匠人的思路我理解了,準備試試,把程序改改。 痛苦啊! |
|
| 23樓: | >>參與討論 |
| 作者: 程序匠人 于 2005/10/20 20:05:00 發(fā)布:
暈!喂狗的地方有110處之多? 看樣子要把丐幫的打狗辦法好好學(xué)學(xué)了,哈哈 |
|
| 24樓: | >>參與討論 |
| 作者: goodygx 于 2005/10/21 18:13:00 發(fā)布:
如果它沒有用的價值,我是不會用的。 |
|
| 25樓: | >>參與討論 |
| 作者: foxfox 于 2005/10/21 18:31:00 發(fā)布:
每次看大俠的帖子都長見識了,lg8213大俠可不可以舉個例程。 |
|
| 26樓: | >>參與討論 |
| 作者: lufeijian 于 2005/10/22 10:35:00 發(fā)布:
嚴重同意!一般喂一次就行了! |
|
| 27樓: | >>參與討論 |
| 作者: 李冬發(fā) 于 2005/10/22 10:59:00 發(fā)布:
凡事不能教條,走極端 |
|
| 28樓: | >>參與討論 |
| 作者: zyf_0210 于 2005/10/22 12:42:00 發(fā)布:
看程序執(zhí)行的時間 看門狗多長時間不喂狗會復(fù)位,每個型號的器件都要要求的,如果你的程序能在這個時間內(nèi)能執(zhí)行一個循環(huán),那么一次就可以了 |
|
| 29樓: | >>參與討論 |
| 作者: fsaok 于 2005/10/22 13:40:00 發(fā)布:
等待類子程序 某些程序,比如是等待一個按鍵的程序,加一個喂狗程序。 有人說,這種阻塞型程序要盡量減少, 但改為非阻塞型的函數(shù),是否對整個系統(tǒng)的調(diào)試負擔(dān)增加呢? 請高手指點 |
|
| 30樓: | >>參與討論 |
| 作者: 陳雙君 于 2005/10/22 15:21:00 發(fā)布:
我還沒有喂過呢 我還沒有喂過呢/ |
|
| 31樓: | >>參與討論 |
| 作者: pkkkkp 于 2005/10/22 15:52:00 發(fā)布:
程序要是不是很大的話,也用不太到狗 |
|
| 32樓: | >>參與討論 |
| 作者: water2005 于 2005/10/22 17:07:00 發(fā)布:
hehe 沒太看懂 |
|
| 33樓: | >>參與討論 |
| 作者: 夢雅 于 2005/10/22 17:20:00 發(fā)布:
程序匠人的話好經(jīng)典 程序匠人的話好經(jīng)典 |
|
| 34樓: | >>參與討論 |
| 作者: leo1858 于 2005/10/22 20:08:00 發(fā)布:
對哦,但對于很致命的子循環(huán)咳還是應(yīng)該相應(yīng)的“喂狗” 對哦,估計出程序的最大運行時間就可以了,但對于很致命的子循環(huán)咳還是應(yīng)該相應(yīng)的“喂狗” |
|
| 35樓: | >>參與討論 |
| 作者: zyp898989 于 2005/10/22 21:26:00 發(fā)布:
分時間片執(zhí)行會占用大量的ram存儲斷點信息 |
|
| 36樓: | >>參與討論 |
| 作者: gwnpeter 于 2005/10/23 11:44:00 發(fā)布:
super loop 結(jié)構(gòu) 一般只需一次喂狗 |
|
| 37樓: | >>參與討論 |
| 作者: born 于 2005/10/23 22:28:00 發(fā)布:
我的程序大部分功能都在定時器中斷里完成 喂狗只在 主循環(huán)開頭喂一次,按鍵處理 什么的 都在定時器中斷完成 |
|
| 38樓: | >>參與討論 |
| 作者: 250638jlh 于 2005/10/24 19:45:00 發(fā)布:
也不一定 喂不喂狗,那要看它咬不咬你啦。如果你的程序長的話,或者說復(fù)雜的話,那狗狗會追上你的。所以你要知道狗狗跑的速度,它追不上你(即你的程序用時間較短),那我看就不用喂狗了,如果頻繁喂狗,一方面沒必要另一方面浪費時間。 |
|
| 39樓: | >>參與討論 |
| 作者: zyp898989 于 2005/10/24 20:18:00 發(fā)布:
亂喂狗,狗就失去了它的存在意義了 |
|
| 40樓: | >>參與討論 |
| 作者: hb923 于 2005/10/25 15:41:00 發(fā)布:
我程序測試時候都是取消狗功能的 如果在良好的環(huán)境下都能跑飛,這種芯片我還不敢用。這樣也能更好的找程序的問題。 |
|
| 41樓: | >>參與討論 |
| 作者: wwwzhang 于 2005/10/29 20:57:00 發(fā)布:
請問匠人,如何把時間長的函數(shù)分幾次來完成 請問匠人,如何把時間長的函數(shù)分幾次來完成,能否提供一個例子作為參考 |
|
| 42樓: | >>參與討論 |
| 作者: HIGHWAY 于 2005/10/29 22:42:00 發(fā)布:
一般情況喂一次就可以了,但在某些檢查外設(shè)狀態(tài)或 自檢查時我會放置 |
|
| 43樓: | >>參與討論 |
| 作者: goodygx 于 2006/4/5 23:27:00 發(fā)布:
不該用就不用 除非干擾嚴重使用它,除非有特殊用途,其余就不該用. |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |