蘇州永節(jié)電子科技有限公司
設為首頁 | 收藏本站
新聞詳情

單片機設計,單片機開發(fā)方法

瀏覽數(shù):2
文章附圖

折疊硬件設計

只要信手拈來編寫自己的程序,閱讀別人的程序就能發(fā)現(xiàn)問題,說明你的單片機程序設計還不錯。。下一步要研究硬件。其硬件部分包括電路原理設計和 PCB板設計。學硬件比學軟件麻煩,花費更多,周期更長。但學習單片機的最終目標是做產(chǎn)品開發(fā)----軟硬件結(jié)合形成一個完整的控制系統(tǒng)。因此,學習單片機技術(shù)也是制作硬件必不可少的。

其原理設計涉及各種芯片的應用,這些芯片的外圍電路的設計、典型應用電路的典型應用電路以及與單片機的連接等都可以在芯片資料手冊(DATASHEET)上找到答案。不然的話,照搬別人的設計總是落后于別人,你做的產(chǎn)品就沒有創(chuàng)意。電子學(DATASHEET)都是英文,從第一手材料中學到的知識,很可能是課本、網(wǎng)絡文檔、課外讀物之類的東西。盡管有一些資料也是基于 DATASHEET編寫的,但是并不全面,甚至有翻譯上的遺漏和錯誤。閱讀 DATASHEET當然要有英文閱讀能力,這也是單片機學習者晉級的障礙。熟練的英文閱讀能力,讓您在單片機技術(shù)的海洋中自由翱翔。

制作 PCB板比較簡單。對 Protel或者 AltimDesigner軟件的了解應該沒有問題。但是要做的板子布局美觀,布線合理還得費一番功夫。

熟練的單片機 C語言編程,能使用 Protel軟件或 AltimDesigner軟件進行 PCB設計,并具有一定的英文閱讀能力,你就是一位遇強則強的單片機高手。

     8.jpg

折疊

抗干擾設計

軟件抗干擾技術(shù)在提高硬件系統(tǒng)抗干擾能力的同時,由于其設計靈活,節(jié)省硬件資源,可靠性好,越來越受到人們的重視。本文以MCS-51單片機系統(tǒng)為例,研究微機系統(tǒng)軟件的抗干擾方法。

折疊軟件抗干擾設計

工程界對軟件抗干擾的研究主要包括:一、消除模擬輸入信號的噪聲(如數(shù)字濾波技術(shù));二、當程序運行不正常時,使程序重新進入正常軌道。為軟件抗干擾提供了幾種有效的解決方案。

指令冗余

CPU獲取指令的過程是先獲取操作碼,然后獲取操作數(shù)。PC受干擾時出錯,程序便脫離正常軌道“亂飛”,當亂飛到某個雙字節(jié)指令時,若取指令時刻落在操作數(shù)上,誤將操作碼作為操作碼。如果“飛”到三字節(jié)指令,發(fā)生錯誤的可能性較大。

將某些單字節(jié)指令人為地插入關鍵處,或?qū)⒁粋€有效的單字節(jié)指令重寫稱為指令冗余。NOP一般在雙字節(jié)指令之后插入到三字節(jié)指令之后。因此,即使亂飛程序飛到操作數(shù)上,由于空操作指令 NOP的存在,避免后面的指令被作為操作數(shù)執(zhí)行,程序自動進入軌道。

另外,對于 RET、 RETI、 LCALL、 LJMP、 JC等指令前插入兩個 NOP流,也可以將亂飛程序納入軌道,以確保這些重要指令的執(zhí)行。。

攔截技術(shù)

我們所說的截斷,就是把亂飛的程序引導到一個指定的位置,再進行錯誤處理。軟件捕捉器通常用于攔截亂飛的程序。所以,首先要合理設計捕捉器,其次要把捕捕器放在合適的位置。

(1 )軟件陷阱的設計

在無序程序進入非程序區(qū)時,冗余指令就不能工作。利用軟件陷阱,截獲亂飛程序,引導其到指定位置,再進行錯誤處理。軟體捕捉器是一種用于引導已捕獲的亂飛程序到重新設置入口地址0000 H的指令。一般將下列指令填入 EPROM中非程序區(qū)作為軟件陷阱:

NOPNOPLJMP 0000H其機器碼為:0000020000

(2 ) 陷阱的安排

程序中通常沒有用到的 EPROM空間為0000020000。最后一條應填入020000,當亂飛程序落到此區(qū)域時,可以自動進入軌道。陷井指令也可以填充在用戶程序空間中各模塊之間的剩余單元。在相應的中斷服務程序中設置軟件陷阱,當所用的中斷打開時,可以及時捕捉到不正確的中斷。如果應用系統(tǒng)沒有使用外部中斷1,則外部中斷1的中斷服務程序可以是以下形式的:

NOPNOPRETI返回指令可以是" RETI"或"LJMP0000 H"。若故障診斷程序和系統(tǒng)自恢復程序設計可靠、完善,使用LJMP0000 H作為返回單可以直接進入故障診斷程序,對故障進行早、中、晚程序的處理,恢復程序的運行。

考慮到程序存貯器的容量,軟件陷阱一般1K空間有2-3個就可以進行有效攔截。

軟件“看門狗”技術(shù)

如果程序失控進入“死循環(huán)”,通常利用“看門狗”技術(shù)使程序脫離“死循環(huán)”。用連續(xù)檢測程序的循環(huán)運行時間,如果發(fā)現(xiàn)程序的循環(huán)時間超過最大循環(huán)運行時間,就認為系統(tǒng)陷入“死循環(huán)”,需要進行錯誤處理。

"看門狗"技術(shù)可以通過硬件或軟件來實現(xiàn)。工業(yè)化應用中,強干擾有時會破壞中斷控制字和關斷中斷。因此系統(tǒng)不能定時“喂狗”,硬件看門狗電路失效。軟體看門狗可以有效地解決這類問題。

作者在實際應用中,采用了環(huán)形中斷監(jiān)測系統(tǒng)。利用計時器T0監(jiān)控時序T1,用計時器T1監(jiān)控主程序,主程序監(jiān)控計時器T0。利用該環(huán)結(jié)構(gòu)的看門狗軟件具有較好的抗干擾性能,大大提高了系統(tǒng)的可靠性。對需要頻繁使用T1定時器進行串口通信的測控系統(tǒng),則T1不能進行中斷,可以改為通過串口中斷來監(jiān)控(如果使用的是MCS-52系列單片機,也可用T2替代T1進行監(jiān)視)。這款“看門狗”監(jiān)控軟件的原理是:在主程序、T0中斷服務程序、T1中斷服務程序中各設一運行觀測變量,假定為 MWatch、T0Watch、T1Watch,每循環(huán)一次, MWatch加1,T0、T1中斷服務程序執(zhí)行一次,T0Watch、T1Watch加1。T0中斷服務程序通過檢測T1Watch變化來判斷T1運行是否正常,檢測T1中斷服務程序中 MWatch的變化情況,判斷主程序是否正常運行,通過檢測T0Watch的變化來判斷T0是否正常工作。如果發(fā)現(xiàn)某個觀測變量有異常變化,例如,應加1而不加1,則轉(zhuǎn)到出錯處理程序以進行排除故障處理。主程序的最大循環(huán)周期、定時器T0和T1定時周期,當然要完全合理地考慮。僅限于篇幅。

折疊硬件抗干擾技術(shù)

由于干擾復位或掉電后的單片機系統(tǒng)復位為非正常復位,應進行故障診斷,自動恢復非正常復位前的狀態(tài)。

非正常復位的識別

程序的執(zhí)行總是從0000H開始,導致程序從 0000H開始執(zhí)行有四種可能:一、系統(tǒng)開機上電復位;二、軟件故障復位;三、看門狗超時未喂狗硬件復位; 四、任務正在執(zhí)行中掉電后來電復位。四種情況中除第一種情況外均屬非正常復位,需加以識別。

(1 )硬件復位與軟件復位的識別

這里的硬件復位指的是:開機復位和看門狗復位,寄存器復位后會影響硬件復位,例如: PC=0000 H, SP=07 H, PSW=00 H等。但軟件重置對 SP、 SPW沒有影響。因此,對于微機測控系統(tǒng),當程序正常運行時, SP地址設置在07 H以上,或系統(tǒng)正常工作時, PSW的5位用戶標志位為1。這樣,在系統(tǒng)復位時,只要檢測 PSW.5標志位或 SP值,就能判定此硬件是否復位。

在硬件復位時,由于 RAM在片內(nèi)的狀態(tài)是隨機的,而在軟件復位時, RAM可以保持復位前的狀態(tài),從而可以選擇部分單元作為上電標志。設置40 H作上電標志,上電標志字為78 H,若系統(tǒng)復位后40 H單元內(nèi)容不等于78 H,則視為硬件復位,否則視為軟件復位,轉(zhuǎn)向錯誤處理。當采用兩個單元作為上電標記時,這種鑒別方法具有較高的可靠性。

(2 )斷路器的啟動復位和故障復位的識別

由于硬件的同位復位,啟動復位和看門狗故障復位,通常借助非易失性 RAM或 EEROM進行正確識別。當系統(tǒng)正常運行時,設置一套掉電保護觀測裝置。在中斷服務程序中,當系統(tǒng)正常工作時,在定時給狗喂食的中斷服務程序中,該觀察單元保持標準值(設為 AAH),當觀察單元在主程內(nèi)清零,因為可以保護觀察單元的斷電,而開機時,通過檢測該部件是否正常即可判斷是否有看門狗復位。

(3 )常規(guī)通電復位和異常通電復位的識別

在測控系統(tǒng)中,由于系統(tǒng)掉電等意外情況造成的開機復位和正常開機復位,對過程控制系統(tǒng)來說尤為重要。例如以時間為標準的測控系統(tǒng),需要1小時才能完成一項測控任務。如果已經(jīng)進行了50分鐘的測控,系統(tǒng)的電壓異常導致了復位,此時如果系統(tǒng)復位后又從頭開始進行測控,就會造成不必要的時間消耗。從而可以通過一個監(jiān)測單元對現(xiàn)有系統(tǒng)的運行狀態(tài)、系統(tǒng)時間進行監(jiān)控,將控制過程分解成若干步或若干段,每完成一步或者每運行一段時間,監(jiān)測單元被設置為允許關閉值,在不同的任務或任務的不同階段具有不同的值,如果系統(tǒng)正在執(zhí)行測控任務,或者在執(zhí)某一時間段內(nèi),將監(jiān)測單元置于非正常關機值。再根據(jù)該單元,系統(tǒng)復位后就能判定系統(tǒng)原來的運行狀態(tài),并跳到出錯處理程序中恢復系統(tǒng)最初運行狀態(tài)。

系統(tǒng)異常復位后自恢復運行程序設計

某些過程控制系統(tǒng)對順序要求嚴格,不能正常復位的系統(tǒng),一般都要求從失控模塊或任務中恢復運行。因此,測控系統(tǒng)要做好重要數(shù)據(jù)的備份、參數(shù)的備份,如系統(tǒng)運行狀態(tài)、系統(tǒng)進程值、當前輸入、輸出的值、當前時鐘值、觀察單元的值等等,這些數(shù)據(jù)都要定時備份,并及時進行修改。

對于已經(jīng)被識別出系統(tǒng)非正常復位的情況,先對一些必要的系統(tǒng)數(shù)據(jù)進行恢復例如顯示模塊初始化,片外擴展芯片初始化等。然后對測控系統(tǒng)進行系統(tǒng)狀態(tài)、操作參數(shù)等的恢復,包括顯示界面的恢復等。然后將重置任務、參數(shù)、運行時間等恢復到系統(tǒng)運行狀態(tài)。

應該指出,真正恢復系統(tǒng)的運行狀態(tài)需要極其細致地備份系統(tǒng)的重要數(shù)據(jù),并對其進行數(shù)據(jù)可靠性檢查,以保證恢復的數(shù)據(jù)可靠。

二是在多任務多進程測控系統(tǒng)中,數(shù)據(jù)恢復需要考慮恢復順序問題。

系統(tǒng)的基本初始化是指對芯片、顯示、輸入和輸出方式等進行初始化,注意輸入輸出的初始化不能造成錯誤動作。其中任務的初始化涉及到任務的執(zhí)行狀態(tài)、運行時間等。

其它常用的軟件抗干擾方法,如數(shù)字濾波、 RAM數(shù)據(jù)保護、糾錯等,僅限于篇幅,本文不作討論。在工程實踐中,為了獲得較好的抗干擾效果,常常采用多種抗干擾措施,并進行補充完善。硬件抗干擾基本上是主動的,軟件抗干擾是被動的。對干擾源、軟硬件抗干擾進行詳細分析,完善系統(tǒng)監(jiān)控方案,設計一個穩(wěn)定可靠的單片機系統(tǒng)是完全可行的。