?? 00000000.htm
字號(hào):
∶<i> 這樣寫單片機(jī)程序有什么好處。 </i><br />∶<i> 中斷1,2,3。。。->置位或?qū)憼顟B(tài)字<-無(wú)限循環(huán),查詢狀態(tài)位,啟動(dòng)程序 </i><br />∶<i> 能不能舉個(gè)例子,說(shuō)明一下這樣寫程序的理由呢? </i><br /> <br /> <br />-- <br />According to the system log, windows had already started, but <br />it seems to be murdered mysteriously! :-DDDDDDDD <br /> <br /> <br />※ 來(lái)源:·BBS 水木清華站 smth.org·[FROM: 66.75.17.82] <br />發(fā)信人: neuronlee (機(jī)械化神經(jīng)元), 信區(qū): Embedded <br />標(biāo) 題: Re: 又一道嵌入試題! <br />發(fā)信站: BBS 水木清華站 (Fri Nov 9 11:10:44 2001) <br /> <br /> <br />是呀,定時(shí)時(shí)限太短空耗許多CPU時(shí)間,太長(zhǎng)又不能保證及時(shí)響應(yīng). <br />【 在 wangyyff (郁悶的大面瓜) 的大作中提到: 】 <br />∶<i> 為什么頻繁中斷就會(huì)把系統(tǒng)搞死?說(shuō)說(shuō)看 </i><br />∶<i> 精確定時(shí)?系統(tǒng)的實(shí)時(shí)性何在? </i><br /> <br /> <br />-- <br />According to the system log, windows had already started, but <br />it seems to be murdered mysteriously! :-DDDDDDDD <br /> <br /> <br />※ 來(lái)源:·BBS 水木清華站 smth.org·[FROM: 66.75.17.82] <br />發(fā)信人: hongchen (kissing-fire), 信區(qū): Embedded <br />標(biāo) 題: Re: 又一道嵌入試題! <br />發(fā)信站: BBS 水木清華站 (Fri Nov 9 18:58:31 2001) <br /> <br /> <br />【 在 wangyyff (郁悶的大面瓜) 的大作中提到: 】 <br />∶<i> 為什么頻繁中斷就會(huì)把系統(tǒng)搞死?說(shuō)說(shuō)看 </i><br />這只是我個(gè)人的經(jīng)驗(yàn),因?yàn)橐郧白龉た氐臅r(shí)候,如果頻繁中斷,系統(tǒng)程序 <br />很容易跑飛,而且一旦強(qiáng)電磁干擾來(lái),使用中斷程序比使用查詢方式更容易 <br />死機(jī)。不信你可以找個(gè)大電動(dòng)機(jī)試試。大電動(dòng)機(jī)的電磁 脈沖瞬間浪涌電流 <br />導(dǎo)致的尖峰脈沖,不過是千伏級(jí)。而BC類設(shè)備電磁兼容性測(cè)試時(shí),加的電壓 <br />可以到5000V。這時(shí)候程序如果是使用中斷方式,很容易發(fā)生程序指針某位 <br />翻轉(zhuǎn)。但是如果使用順序執(zhí)行的程序,就不容易發(fā)生這種情況。而且現(xiàn)場(chǎng) <br />的控制方式往往使用數(shù)字電路,或者使用極低級(jí)的單片機(jī)來(lái)做核心的控制。 <br />實(shí)際上就是按一個(gè)固定的流程來(lái)啟動(dòng)程序。 <br />∶<i> 精確定時(shí)?系統(tǒng)的實(shí)時(shí)性何在? </i><br />頻繁中斷情況下,使用精確定時(shí),當(dāng)然可以保證系統(tǒng)的實(shí)時(shí)性,因?yàn)橹挥挟?dāng) <br />CPU需要外設(shè)工作,或者需要外設(shè)數(shù)據(jù)時(shí),才會(huì)啟動(dòng)設(shè)備,所以由CPU根據(jù)預(yù)先 <br />設(shè)定的工作流程,通過精確定時(shí)來(lái)啟動(dòng)外設(shè),這樣做比讓外設(shè)頻繁發(fā)送中斷, <br />在系統(tǒng)的可靠性和穩(wěn)定性上會(huì)好一些。當(dāng)然如果只是消費(fèi)類的普通民用設(shè)備, <br />你用中斷和查詢兩者之間沒有差別,只取決于你自己的愛好,或者為了團(tuán)隊(duì) <br />編程方便。 <br />但是如果是一個(gè)工控項(xiàng)目,或者是象我這種高可靠性的設(shè)備,我想恐怕沒有人 <br />會(huì)使用頻繁中斷這種方式的。不信你可以去問問看。 <br /> <br />-- <br /> <br />※ 來(lái)源:·BBS 水木清華站 smth.org·[FROM: 166.111.60.132] <br />發(fā)信人: wangyyff (郁悶的大面瓜), 信區(qū): Embedded <br />標(biāo) 題: Re: 又一道嵌入試題! <br />發(fā)信站: BBS 水木清華站 (Mon Nov 12 08:27:40 2001) <br /> <br /> <br />【 在 hongchen (kissing-fire) 的大作中提到: 】 <br />∶<i> 這只是我個(gè)人的經(jīng)驗(yàn),因?yàn)橐郧白龉た氐臅r(shí)候,如果頻繁中斷,系統(tǒng)程序 </i><br />∶<i> 很容易跑飛,而且一旦強(qiáng)電磁干擾來(lái),使用中斷程序比使用查詢方式更容易 </i><br />∶<i> 死機(jī)。不信你可以找個(gè)大電動(dòng)機(jī)試試。大電動(dòng)機(jī)的電磁 脈沖瞬間浪涌電流 </i><br />∶<i> 導(dǎo)致的尖峰脈沖,不過是千伏級(jí)。而BC類設(shè)備電磁兼容性測(cè)試時(shí),加的電壓 </i><br />∶<i> 可以到5000V。這時(shí)候程序如果是使用中斷方式,很容易發(fā)生程序指針某位 </i><br /> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />∶<i> 翻轉(zhuǎn)。但是如果使用順序執(zhí)行的程序,就不容易發(fā)生這種情況。而且現(xiàn)場(chǎng) </i><br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />說(shuō)說(shuō)看,為什么會(huì)這樣?這個(gè)結(jié)論有什么理論依據(jù)?還是這個(gè)結(jié)論僅僅是你 <br />的個(gè)人經(jīng)驗(yàn)總結(jié)?中斷操作的軟件編寫肯定是比關(guān)掉中斷查詢對(duì)程序員的要求 <br />要高得多,所以……你有沒有想過出現(xiàn)這種問題是因?yàn)槟丬浖O(shè)計(jì)的問題? <br />別多心,我不是怎么怎么你,我自己在編寫一些東東時(shí)也喜歡先關(guān)著中斷試通 <br />一些外設(shè),然后再試著用中斷來(lái)搞,畢竟在中斷時(shí)需要考慮的東東太多。 <br /> <br />∶<i> 的控制方式往往使用數(shù)字電路,或者使用極低級(jí)的單片機(jī)來(lái)做核心的控制。 </i><br />∶<i> 實(shí)際上就是按一個(gè)固定的流程來(lái)啟動(dòng)程序。 </i><br />∶<i> 頻繁中斷情況下,使用精確定時(shí),當(dāng)然可以保證系統(tǒng)的實(shí)時(shí)性,因?yàn)橹挥挟?dāng) </i><br />∶<i> CPU需要外設(shè)工作,或者需要外設(shè)數(shù)據(jù)時(shí),才會(huì)啟動(dòng)設(shè)備, </i><br />我的天哪,如果每個(gè)做工控的人都這么考慮自己的設(shè)備,工控豈不是比PC還好搞? <br />不好意思,我還真沒搞過工控,門外漢,不多嘴了^_^ <br /> <br />∶<i> 所以由CPU根據(jù)預(yù)先 </i><br />∶<i> 設(shè)定的工作流程,通過精確定時(shí)來(lái)啟動(dòng)外設(shè),這樣做比讓外設(shè)頻繁發(fā)送中斷, </i><br />∶<i> ................... </i><br /> <br />-- <br />===================================================================== <br />新域名啟動(dòng): <br /> 英文版:<a href="http://www.cfly.org">http://www.cfly.org</a> <br /> 中文版:<a href="http://wangyunfei.yeah.net">http://wangyunfei.yeah.net</a> <br /> <br /> ARM (32位RISC) + RTEMS (完全FREE的軍用操作系統(tǒng)), <br /> <br /> <br />※ 來(lái)源:·BBS 水木清華站 smth.org·[FROM: 203.93.105.209] <br />發(fā)信人: hongchen (kissing-fire), 信區(qū): Embedded <br />標(biāo) 題: Re: 又一道嵌入試題! <br />發(fā)信站: BBS 水木清華站 (Mon Nov 12 12:11:02 2001) <br /> <br /> <br />【 在 wangyyff (郁悶的大面瓜) 的大作中提到: 】 <br />∶<i> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </i><br />∶<i> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </i><br />∶<i> 說(shuō)說(shuō)看,為什么會(huì)這樣?這個(gè)結(jié)論有什么理論依據(jù)?還是這個(gè)結(jié)論僅僅是你 </i><br />∶<i> 的個(gè)人經(jīng)驗(yàn)總結(jié)?中斷操作的軟件編寫肯定是比關(guān)掉中斷查詢對(duì)程序員的要求 </i><br />∶<i> 要高得多,所以……你有沒有想過出現(xiàn)這種問題是因?yàn)槟丬浖O(shè)計(jì)的問題? </i><br />∶<i> 別多心,我不是怎么怎么你,我自己在編寫一些東東時(shí)也喜歡先關(guān)著中斷試通 </i><br />∶<i> 一些外設(shè),然后再試著用中斷來(lái)搞,畢竟在中斷時(shí)需要考慮的東東太多。 </i><br />為了搞清楚這個(gè)問題,我曾經(jīng)把圖書館里所有相關(guān)的書籍,都翻了個(gè)編,然后把 <br />手頭上ADC的光盤中的所有應(yīng)用資料與之相關(guān)的部分,都看了一遍。EMC問題可以 <br />說(shuō)是電路里最復(fù)雜的問題,雖然我一直都在這個(gè)問題上不斷收集資料,但是仍然 <br />不敢說(shuō)就對(duì)這個(gè)問題有很好的理解,只能說(shuō)入了一點(diǎn)門吧。 <br />可能普通人很難想象,你的電路板放到一個(gè)大電動(dòng)機(jī)旁邊,平常工作的很好,但是 <br />在大電動(dòng)機(jī)啟動(dòng)瞬間,或者電磁繼電器陣列開啟瞬間,你的電路板總線上全是1, <br />還有,如果你使用地址線的低位,做地址選通,你可能經(jīng)常訪問不了你的外設(shè), <br />因?yàn)榻?jīng)常這些位在隨機(jī)翻動(dòng)。 <br />其實(shí)原因很簡(jiǎn)單,Ldi/dt,一個(gè)小的電感,任何導(dǎo)線,或者說(shuō)電路中的任何東西都 <br />有電感,而i=q/t=cu/t,di/dt=cdu/dt,任何電路中的東西都有電容,自己有節(jié) <br />電容,寄生電容,耦合電容,對(duì)其他東西有分布電容,或各種各樣的雜散電容, <br />這些電容最終導(dǎo)致了位移電流的產(chǎn)生,這是你不管用什么樣的屏蔽,都無(wú)法徹底去除 <br />的,這個(gè)電流的變化,最終通過電感會(huì)產(chǎn)生電壓。其實(shí)所有設(shè)備都有一個(gè)電沖擊 <br />上限,民用設(shè)備一般也就是1000多伏左右,一個(gè)1000多伏的電脈沖產(chǎn)生的電磁波, <br />就足以讓你的電路板上某些總線,或數(shù)字電平,全為1了。 <br />中斷方式,你的程序指針會(huì)跳變,而且是硬件產(chǎn)生的突發(fā)性跳變,這也就意味著 <br />無(wú)窮的頻率分量,頻帶無(wú)限寬,因?yàn)檫@是一個(gè)沖擊或階躍,這個(gè)時(shí)候,雖然你的 <br />電路可能正常時(shí)工作很好,但是在外界干擾和自身電磁波干擾下,某一位地址發(fā)生 <br />翻轉(zhuǎn),這是完全可能的,雖然概率很低。理論上雖然這種概率很低,可是實(shí)際情況中, <br />這種概率一點(diǎn)也不低。一個(gè)月中間有那么一兩次,你說(shuō)是低還是高。對(duì)于我這行中 <br />的監(jiān)護(hù)儀,監(jiān)護(hù)的都是要死的人,它一個(gè)月死機(jī)一兩次,你說(shuō)是高還是低? <br />但是順序執(zhí)行的程序,程序指針只是隨主頻逐個(gè)增加。相對(duì)而言,自身的干擾會(huì) <br />小一些。 <br />以上僅僅是我的一些想法。因?yàn)閷?shí)際中曾經(jīng)出現(xiàn)過這樣的問題,而且我老是遇到 <br />設(shè)備死機(jī)的問題,還經(jīng)常要去修,所以自己在這上面,下過一些功夫去琢磨。也就是 <br />后來(lái)對(duì)于沒有通過EMC檢測(cè)的CPU是一點(diǎn)興趣也沒有。 <br />至于程序問題,我覺得也有,因?yàn)椴挥们度胧讲僮飨到y(tǒng)的監(jiān)護(hù)儀,就特別皮實(shí),而 <br />用了嵌入式操作系統(tǒng)的監(jiān)護(hù)儀就老死機(jī)。我就曾經(jīng)想,是不是嵌入式操作系統(tǒng)降低 <br />了設(shè)備的可靠性。因?yàn)榍度胧讲僮飨到y(tǒng)程序太過復(fù)雜,而且實(shí)際上不停的在中斷程序, <br />啟動(dòng)程序,所以我認(rèn)為這也是降低設(shè)備可靠性的一個(gè)原因。 <br />為此,對(duì)嵌入式操作系統(tǒng)一直持懷疑態(tài)度。最近因?yàn)橄氲搅私鉀Q <br />的方法,才開始考慮嵌入式系統(tǒng)這個(gè)方案了。 <br />∶<i> 我的天哪,如果每個(gè)做工控的人都這么考慮自己的設(shè)備,工控豈不是比PC還好搞? </i><br />∶<i> 不好意思,我還真沒搞過工控,門外漢,不多嘴了^_^ </i><br />工控好不好搞,我舉一個(gè)你最熟悉的例子。XX做的大型集裝箱檢測(cè)系統(tǒng),為什么現(xiàn)在 <br />裝備的不多,一個(gè)很重要的原因,就是因?yàn)閄X的系統(tǒng)在自己的公司,檢測(cè)什么問題都 <br />沒有,可是一裝到人家那里,先是設(shè)備不工作,接著就是三天兩頭出問題,以至于要 <br />請(qǐng)我認(rèn)識(shí)的一個(gè)人,去現(xiàn)場(chǎng)指導(dǎo),而我認(rèn)識(shí)的這個(gè)人,其實(shí)是個(gè)銷售,因?yàn)榭吹亩嗔耍?amp;nbsp;<br />有很豐富的實(shí)際經(jīng)驗(yàn)。人家問我,說(shuō)為什么XX做的東西,你們自己都搞不定! <br />我無(wú)言以對(duì)! <br />工控和PC最大的區(qū)別是,工控是一個(gè)隨時(shí)隨地都要保證可靠工作的東西,而PC是一個(gè) <br />隨時(shí)隨地都可能死機(jī)的東西。 <br />就好像我做的這個(gè)東西,隨時(shí)隨地都得考慮,它是不是能穩(wěn)定可靠的工作,死機(jī)了 <br />怎么辦,出故障怎么辦?PC很好辦,重啟,大不了按電源,可是好多設(shè)備,尤其是 <br />軍用的,工控的,醫(yī)用的,你不能這么辦? <br />這也就是為什么學(xué)生時(shí)候做的東西,被人稱之為“玩意”,而不是產(chǎn)品,一個(gè)真實(shí)的 <br />產(chǎn)品,它可能很簡(jiǎn)單,但是為了得到這個(gè)簡(jiǎn)單的設(shè)計(jì),可能幾代人的努力,僅僅只是 <br />為了得到它! <br />說(shuō)得太多了,別見怪??! <br />愚人之見! <br /> <br />-- <br /> <br />※ 來(lái)源:·BBS 水木清華站 smth.org·[FROM: 166.111.60.132] <br />發(fā)信人: wangyyff (郁悶的大面瓜), 信區(qū): Embedded <br />
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -