新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)系統(tǒng)設(shè)計(jì)的誤區(qū)與對(duì)策

單片機(jī)系統(tǒng)設(shè)計(jì)的誤區(qū)與對(duì)策

作者: 時(shí)間:2012-02-23 來(lái)源:網(wǎng)絡(luò) 收藏

系統(tǒng)在軍事、工業(yè)、民用產(chǎn)品中的應(yīng)用越來(lái)越廣。它將許多以往用硬件實(shí)現(xiàn)的功能由軟件來(lái)完成,體積小巧、功能豐富、智能化程序度,但在可靠性方面也面臨許多新問(wèn)題。用現(xiàn)場(chǎng)(EMC)理論剖析系統(tǒng)設(shè)計(jì)中的某些傳統(tǒng)觀念,會(huì)發(fā)現(xiàn)許多誤區(qū),并且有些誤區(qū)至今還在工程界廣為存在。

1 誤區(qū)之一:有了就不會(huì)死機(jī)

死機(jī)是指CPU的程序指針進(jìn)入一個(gè)死循環(huán),無(wú)法執(zhí)行正常的程序流程。其外在表現(xiàn)常常是:正常功能喪失,按鍵無(wú)響應(yīng),顯示凝固。死機(jī)后,只有復(fù)全才能走出死循環(huán),執(zhí)行正常的程序流程。眾所屬知,克服死機(jī)的最有效手段是加(WatchDog)。

目前用得最廣泛的實(shí)際上是一個(gè)特殊的定時(shí)器DogTimer。DogTimer按固定速率計(jì)時(shí),計(jì)滿(mǎn)預(yù)定時(shí)間就發(fā)出溢出脈沖使單片機(jī)復(fù)位。如果每次在 DogTimer溢出前強(qiáng)行讓DogTimer清零,就不會(huì)發(fā)出溢出脈沖。清零脈沖由CPU發(fā)出,在單片機(jī)程序中每隔一段語(yǔ)句放一個(gè)清DogTimer的語(yǔ)句——FeedDog語(yǔ)句,以保證程序正常運(yùn)行時(shí)DogTimer不會(huì)溢出。一旦程序進(jìn)入一個(gè)不含F(xiàn)eedDog語(yǔ)句的死循環(huán),DogTimer將溢出,導(dǎo)致單片機(jī)復(fù)位,跳出這個(gè)死循環(huán)。本文稱(chēng)這種看門(mén)狗為典型看門(mén)狗,典型看門(mén)狗已被集成比,如MAX706、MAX791等[1];還有許多單片機(jī)本身集成了這種看門(mén)狗,如PIC16C57、MC68HC705等,具體電路可參閱這些芯片的技術(shù)資料[2]。

有一個(gè)錯(cuò)誤觀點(diǎn):加了看門(mén)狗,單片機(jī)就不會(huì)死機(jī)。實(shí)際上,看門(mén)狗有時(shí)間會(huì)完全失效。當(dāng)程序進(jìn)入某個(gè)死循環(huán),而這個(gè)死循環(huán)中又包含F(xiàn)eedDog語(yǔ)句,這時(shí) DogTimer始終不會(huì)溢出,單片機(jī)始終得不到復(fù)位信號(hào),程序也就始終跳不出這個(gè)死循環(huán)。針對(duì)這一弊端,筆者設(shè)計(jì)了雙對(duì)限看門(mén)狗和定時(shí)復(fù)位看門(mén)狗。

上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉