單片機編程知識問答
簡而言之,Delta就是差動,Sigma就是積分的意思。Delta-Sigma軟件測試,我的理解應該是通過軟件模擬差動積分的過程。具體來說,就是偵測外部輸入的電壓(或者電流)信號變化,然后通過軟件積分運算,得出外部信號隨時間變化的基本狀況。
41. 通常采用什么方法來測試單片機系統(tǒng)的可靠性?
答:單片機系統(tǒng)可以分為軟件和硬件兩個方面,我們要保證單片機系統(tǒng)可靠性就必須從這兩方面入手。
首先在設計單片機系統(tǒng)時,就應該充分考慮到外部的各種各樣可能干擾,盡量利用單片機提供的一切手段去割斷或者解決不良外部干擾造成的影響。我們以HOLTEK最基本的I/O單片機HT48R05A-1為例,它內部提供了看門狗定時器WDT防止單片機內部程序亂跑出錯;提供了低電壓復位系統(tǒng)LVR,當電壓低于某個允許值時,單片機會自動RESET防止芯片被鎖死;HOLTEK也提供了最佳的外圍電路連接方案,最大可能的避免外部干擾對芯片的影響。
當一個單片機系統(tǒng)設計完成,對于不同的單片機系統(tǒng)產品會有不同的測試項目和方法,但是有一些是必須測試的:
測試單片機軟件功能的完善性。 這是針對所有單片機系統(tǒng)功能的測試,測試軟件是否寫的正確完整。
上電掉電測試。在使用中用戶必然會遇到上電和掉電的情況,可以進行多次開關電源,測試單片機系統(tǒng)的可靠性。
老化測試。測試長時間工作情況下,單片機系統(tǒng)的可靠性。必要的話可以放置在高溫,高壓以及強電磁干擾的環(huán)境下測試。
ESD和EFT等測試??梢允褂酶鞣N干擾模擬器來測試單片機系統(tǒng)的可靠性。例如使用靜電模擬器測試單片機系統(tǒng)的抗靜電ESD能力;使用突波雜訊模擬器進行快速脈沖抗干擾EFT測試等等。
當然如果沒有此類條件,可以模擬人為使用中,可能發(fā)生的破壞情況。例如用人體或者衣服織物故意摩擦單片機系統(tǒng)的接觸端口,由此測試抗靜電的能力。用大功率電鉆靠近單片機系統(tǒng)工作,由此測試抗電磁干擾能力等。
42. 在開發(fā)單片機的系統(tǒng)時,具體有那些是衡量系統(tǒng)的穩(wěn)定性的標準?
答:從工業(yè)的角度來看,衡量系統(tǒng)穩(wěn)定性的標準有很多,也針對不同的產品標準不同。下面我們大概介紹單片機系統(tǒng)最常用的標準。
電試驗(ESD)
參考標準: IEC 61000-4-2
本試驗目的為測試試件承受直接來自操作者及相對對象所產生之靜電放電效應的程度。
空間輻射耐受試驗(RS)
參考標準:IEC 61000-4-3
本試驗為驗證試件對射頻產生器透過空間散射之噪聲耐受程度。
測試頻率:80 MHz~1000 MHz
快速脈沖抗擾測試(EFT/B)
參考標準:IEC 61000-4-4
本試驗目的為驗證試件之電源線,信號線(控制線)遭受重復出現之快速瞬時叢訊時之耐受程度。
雷擊試驗(Surge)
參考標準 : IEC 61000-4-5
本試驗為針對試件在操作狀態(tài)下,承受對于開關或雷擊瞬時之過電壓/電流產生突波之耐受程度。
傳導抗擾耐受性(CS)
參考標準:IEC 61000-4-6
本試驗為驗證試件對射頻產生器透過電源線傳導之噪聲耐受程度。
測試頻率范圍:150 kHz~80 MHz
Impulse
脈沖經由耦合注入電源線或控制線所作的雜抗擾性試驗。
43. 在設計軟體時,大多單片機都設有看門狗,需要在軟體適當的位置去喂狗,以防止軟體復位和軟體進入死循環(huán),如何適當的喂狗,即如何精確判定軟體的運行時間?
答:大多數單片機都有看門狗定時器功能(WDT,Watch Dog Timer)以避免程序跑錯。HOLTEK有一款基本I/O型單片機--HT48R05A-1,我們就以它為例做個說明吧。
首先了解一下WDT的基本結構,它其實是一個定時器,所謂的喂狗是指將此定時器清零。喂狗分為軟件和硬件兩種方法。軟件喂狗就是用指令來清除WDT,即CLR WDT;硬件喂狗就是硬件復位RESET。當定時器溢出時,會造成WDT復位,也就是我們常說的看門狗起作用了。在程序正常執(zhí)行時,我們并不希望WDT復位,所以要在看門狗溢出之前使用軟件指令喂狗,也就是要計算WDT相隔多久時間會溢出一次。HT48R05A-1的WDT溢出時間計算公式是:256*Div*Tclock。其中Div是指wdt預分頻數1~128,Tclock是指時鐘來源周期。如果使用內部RC振蕩作為WDT的時鐘來源(RC時鐘周期為65us/5V),最大的WDT溢出時間為2.1秒。
當我們得到了WDT溢出時間Twdt后,一般選擇在Twdt/2左右的時間進行喂狗,以保證看門狗不會溢出,同時喂狗次數不會過多。
軟件運行時間是根據不同的運行路線來決定的,如果可以預見軟件運行的路線,那么可以根據T=n*T1來計算軟件的運行時間。n是指運行的機器周期數,T1是指機器周期。HOLTEK單片機是RISC結構,大部分指令由一個機器周期組成,只需要知道軟件運行了多少條指令,就可以算出運行時間了。HOLTEK的編譯軟件HT-IDE3000中,就有計算運行時間的工具。但是對于CISC結構的單片機,一條指令可以由若干個機器周期組成,那么就需要根據具體執(zhí)行的指令來計算了。
44. 我們是一家開發(fā)數控系統(tǒng)的專業(yè)廠,利用各種單片機和CPU開發(fā)了很多產品,在軟件開發(fā)上也采用了很多通用的抗干擾技術,如:軟件陷阱、指令允余、看門狗和數字濾波等等,但實際運用中還是很不可靠,如:經常莫名其妙地死機、程序跳段、I/O數據錯誤等,并且故障的重復性很不確定,也不是周期性地重復。往往用戶使用中出現故障,但又無法重現,很讓人頭痛。反復檢查硬件也設查出原因,所以對軟件的可靠性很是懷疑。怎么辦?
答:防止干擾最有效的方法是去除干擾源、隔斷干擾路徑,但往往很難做到,所以只能看單片機抗干擾能力夠不夠強了。單片機干擾最常見的現象就是復位;至于程序跑飛,其實也可以用軟件陷阱和看門狗將程序拉回到復位狀態(tài);所以單片機軟件抗干擾最重要的是處理好復位狀態(tài)。
一般單片機都會有一些標志寄存器,可以用來判斷復位原因;另外也可以自己在RAM中埋一些標志。在每次程序復位時,通過判斷這些標志,可以判斷出不同的復位原因;還可以根據不同的標志直接跳到相應的程序。這樣可以使程序運行有連續(xù)性,用戶在使用時也不會察覺到程序被重新復位過。
可以在定時中斷里面設置一些暫存器累加,然后加到預先設定的值(一個比較長的時間),SET標志位,這些動作都在中斷程序里面。而主程序只需要查詢標志位就好了,但是注意標志位使用后,記得清除,還有中斷里面的時基累加器使用以后也要記得清除。
評論