MSP430單片機(jī)中的WDT研究
發(fā)布時(shí)間:2008/6/3 0:00:00 訪問(wèn)次數(shù):541
    
    
    引 言
    軟件的可靠性一直是一個(gè)關(guān)鍵問(wèn)題。任何使用軟件的人都可能會(huì)經(jīng)歷計(jì)算機(jī)死機(jī)或程序跑飛的問(wèn)題,這種情況在嵌入式系統(tǒng)中也同樣存在。由于單片機(jī)的抗干擾能力有限,在工業(yè)現(xiàn)場(chǎng)的儀器儀表中,常會(huì)由于電壓不穩(wěn)、電弧干擾等造成死機(jī)。在水表、電表等無(wú)人看守的情況下,也會(huì)因系統(tǒng)遭受干擾而無(wú)法重啟。為了保證系統(tǒng)在干擾后能自動(dòng)恢復(fù)正常,看門狗定時(shí)器(watchdog timer)的利用是很有價(jià)值的。
    1 看門狗的作用
    看門狗定時(shí)器是一個(gè)計(jì)數(shù)器,基本功能是在發(fā)生軟件問(wèn)題和程序跑飛后使系統(tǒng)重新啟動(dòng)。看門狗計(jì)數(shù)器正常工作時(shí)自動(dòng)計(jì)數(shù),程序流程定期將其復(fù)位清零,如果系統(tǒng)在某處卡死或跑飛,該定時(shí)器將溢出,并將進(jìn)入中斷。在定時(shí)器中斷中執(zhí)行一些復(fù)位操作,使系統(tǒng)恢復(fù)正常的工作狀態(tài),即在程序沒(méi)有正常運(yùn)行期間,如期復(fù)位看門狗以保證所選擇的定時(shí)溢出歸零,使處理器重新啟動(dòng)。
    2 看門狗問(wèn)題及相關(guān)實(shí)驗(yàn)
    現(xiàn)今市面上流行的一些單片機(jī),多嵌有內(nèi)部wdt,如ti的msp430系列,philips的p87xxx和p89xxx系列,microchip的pic列,atmel的at89sxx系列和holtek公司的htxxx系列。但是這些內(nèi)部看門狗在工作時(shí),多存在一定的誤差。一些工程師在設(shè)計(jì)的過(guò)程中,由于忽略了這一點(diǎn),導(dǎo)致系統(tǒng)出現(xiàn)異常。msp430系列單片機(jī)是美國(guó)德州儀器公司(ti)近幾年開(kāi)發(fā)的新一代單片機(jī),該系列是一款16位、具有精簡(jiǎn)指令集、超低功耗的全新概念混合型單片機(jī)。在眾多單片機(jī)系列中,由于它具有極低的功耗、豐富的片內(nèi)外設(shè)和方便靈活的開(kāi)發(fā)手段,已成為一顆耀眼的新星。其內(nèi)部自帶看門狗及復(fù)位電路,理論上如果程序跑飛,可用看門狗將其復(fù)位。但在實(shí)際使用過(guò)程中,發(fā)現(xiàn)看門狗的作用并非萬(wàn)無(wú)一失,以下實(shí)驗(yàn)證明了這一點(diǎn)。
    實(shí)驗(yàn)電路如圖1所示。
    
    
    實(shí)驗(yàn)程序清單:
    #include
    void main(void){
    p1dir l=oxof; //設(shè)置p1.2~p1.o為輸出
    for(;;){
    volatile unsigned int i;
    wdtctl=wdtpw+ wdtcntcl;
    //復(fù)位wdt計(jì)數(shù)器
    piout==oxot; //p1.0~p1.2相互異或
    i=5000; //延時(shí)
    d0(i--);
    while(i!=o);
    }
    }
    上述實(shí)驗(yàn)啟動(dòng)后,如果程序正常運(yùn)行,led會(huì)閃爍。缺省時(shí),msp430的看門狗是允許狀態(tài),所運(yùn)行的程序會(huì)不斷地訪問(wèn)看門狗。理論上,這個(gè)系統(tǒng)是不會(huì)發(fā)生啟動(dòng)失敗的,因?yàn)榧词箚?dòng)失敗,看門狗也應(yīng)該在數(shù)百毫秒內(nèi)啟動(dòng),復(fù)位整個(gè)系統(tǒng);谶@種思想,對(duì)單片機(jī)的復(fù)位進(jìn)行測(cè)試。k2斷開(kāi),用k1連續(xù)產(chǎn)生。reset信號(hào),測(cè)試看門狗使系統(tǒng)重啟的成功率。k2閉合,則reset端高電平,理論上k1不能有效產(chǎn)生復(fù)位脈沖,觀察看門狗是否起作用。
    3 實(shí)驗(yàn)結(jié)果與分析
    實(shí)驗(yàn)結(jié)果如下:k2斷開(kāi),連續(xù)開(kāi)關(guān)k1,上電重啟系統(tǒng),平均155次失敗1次(led不閃),即看門狗失效概率0.6%;k2閉合,連續(xù)開(kāi)關(guān)k1,平均18次失敗1次(led不閃),且一旦失敗,將連續(xù)失敗下去,看門狗無(wú)效率占到了約5.5%。
    另外,當(dāng)采用同樣具有內(nèi)置看門狗的其他系列單片機(jī)替代實(shí)驗(yàn)中的msp430,啟動(dòng)程序段作相應(yīng)修改時(shí),實(shí)驗(yàn)結(jié)果仍大致相同,這說(shuō)明具有內(nèi)置看門狗的單片機(jī)面臨的問(wèn)題是相同的。經(jīng)分析可能有如下原因:
    ①由于看門狗的時(shí)鐘不獨(dú)立,計(jì)數(shù)時(shí)鐘與系統(tǒng)為同一分頻鏈路,因此看門狗不能在系統(tǒng)出現(xiàn)問(wèn)題時(shí)有效運(yùn)作。
    ②由于時(shí)鐘可用軟件設(shè)置,啟動(dòng)失敗時(shí),開(kāi)機(jī)時(shí)鐘可能處于空檔,沒(méi)有時(shí)鐘看門狗不能生效。
    ③有些看門狗需要用軟件設(shè)置或啟動(dòng),因此啟動(dòng)失敗后,初始化程序沒(méi)有激活,cpu可能跳轉(zhuǎn)到隨機(jī)代碼,使看門狗被禁止。這樣的看門狗是需要有可靠的上電復(fù)位作保證的,因此,從理論上講,原設(shè)計(jì)存在著不合理性;谏鲜龇治,采用片外看門狗專用芯片tps3823由獨(dú)立的分頻振蕩電路提供計(jì)數(shù)脈沖。實(shí)驗(yàn)電路如圖2所示。
    
    
    
    
    引 言
    軟件的可靠性一直是一個(gè)關(guān)鍵問(wèn)題。任何使用軟件的人都可能會(huì)經(jīng)歷計(jì)算機(jī)死機(jī)或程序跑飛的問(wèn)題,這種情況在嵌入式系統(tǒng)中也同樣存在。由于單片機(jī)的抗干擾能力有限,在工業(yè)現(xiàn)場(chǎng)的儀器儀表中,常會(huì)由于電壓不穩(wěn)、電弧干擾等造成死機(jī)。在水表、電表等無(wú)人看守的情況下,也會(huì)因系統(tǒng)遭受干擾而無(wú)法重啟。為了保證系統(tǒng)在干擾后能自動(dòng)恢復(fù)正常,看門狗定時(shí)器(watchdog timer)的利用是很有價(jià)值的。
    1 看門狗的作用
    看門狗定時(shí)器是一個(gè)計(jì)數(shù)器,基本功能是在發(fā)生軟件問(wèn)題和程序跑飛后使系統(tǒng)重新啟動(dòng)。看門狗計(jì)數(shù)器正常工作時(shí)自動(dòng)計(jì)數(shù),程序流程定期將其復(fù)位清零,如果系統(tǒng)在某處卡死或跑飛,該定時(shí)器將溢出,并將進(jìn)入中斷。在定時(shí)器中斷中執(zhí)行一些復(fù)位操作,使系統(tǒng)恢復(fù)正常的工作狀態(tài),即在程序沒(méi)有正常運(yùn)行期間,如期復(fù)位看門狗以保證所選擇的定時(shí)溢出歸零,使處理器重新啟動(dòng)。
    2 看門狗問(wèn)題及相關(guān)實(shí)驗(yàn)
    現(xiàn)今市面上流行的一些單片機(jī),多嵌有內(nèi)部wdt,如ti的msp430系列,philips的p87xxx和p89xxx系列,microchip的pic列,atmel的at89sxx系列和holtek公司的htxxx系列。但是這些內(nèi)部看門狗在工作時(shí),多存在一定的誤差。一些工程師在設(shè)計(jì)的過(guò)程中,由于忽略了這一點(diǎn),導(dǎo)致系統(tǒng)出現(xiàn)異常。msp430系列單片機(jī)是美國(guó)德州儀器公司(ti)近幾年開(kāi)發(fā)的新一代單片機(jī),該系列是一款16位、具有精簡(jiǎn)指令集、超低功耗的全新概念混合型單片機(jī)。在眾多單片機(jī)系列中,由于它具有極低的功耗、豐富的片內(nèi)外設(shè)和方便靈活的開(kāi)發(fā)手段,已成為一顆耀眼的新星。其內(nèi)部自帶看門狗及復(fù)位電路,理論上如果程序跑飛,可用看門狗將其復(fù)位。但在實(shí)際使用過(guò)程中,發(fā)現(xiàn)看門狗的作用并非萬(wàn)無(wú)一失,以下實(shí)驗(yàn)證明了這一點(diǎn)。
    實(shí)驗(yàn)電路如圖1所示。
    
    
    實(shí)驗(yàn)程序清單:
    #include
    void main(void){
    p1dir l=oxof; //設(shè)置p1.2~p1.o為輸出
    for(;;){
    volatile unsigned int i;
    wdtctl=wdtpw+ wdtcntcl;
    //復(fù)位wdt計(jì)數(shù)器
    piout==oxot; //p1.0~p1.2相互異或
    i=5000; //延時(shí)
    d0(i--);
    while(i!=o);
    }
    }
    上述實(shí)驗(yàn)啟動(dòng)后,如果程序正常運(yùn)行,led會(huì)閃爍。缺省時(shí),msp430的看門狗是允許狀態(tài),所運(yùn)行的程序會(huì)不斷地訪問(wèn)看門狗。理論上,這個(gè)系統(tǒng)是不會(huì)發(fā)生啟動(dòng)失敗的,因?yàn)榧词箚?dòng)失敗,看門狗也應(yīng)該在數(shù)百毫秒內(nèi)啟動(dòng),復(fù)位整個(gè)系統(tǒng);谶@種思想,對(duì)單片機(jī)的復(fù)位進(jìn)行測(cè)試。k2斷開(kāi),用k1連續(xù)產(chǎn)生。reset信號(hào),測(cè)試看門狗使系統(tǒng)重啟的成功率。k2閉合,則reset端高電平,理論上k1不能有效產(chǎn)生復(fù)位脈沖,觀察看門狗是否起作用。
    3 實(shí)驗(yàn)結(jié)果與分析
    實(shí)驗(yàn)結(jié)果如下:k2斷開(kāi),連續(xù)開(kāi)關(guān)k1,上電重啟系統(tǒng),平均155次失敗1次(led不閃),即看門狗失效概率0.6%;k2閉合,連續(xù)開(kāi)關(guān)k1,平均18次失敗1次(led不閃),且一旦失敗,將連續(xù)失敗下去,看門狗無(wú)效率占到了約5.5%。
    另外,當(dāng)采用同樣具有內(nèi)置看門狗的其他系列單片機(jī)替代實(shí)驗(yàn)中的msp430,啟動(dòng)程序段作相應(yīng)修改時(shí),實(shí)驗(yàn)結(jié)果仍大致相同,這說(shuō)明具有內(nèi)置看門狗的單片機(jī)面臨的問(wèn)題是相同的。經(jīng)分析可能有如下原因:
    ①由于看門狗的時(shí)鐘不獨(dú)立,計(jì)數(shù)時(shí)鐘與系統(tǒng)為同一分頻鏈路,因此看門狗不能在系統(tǒng)出現(xiàn)問(wèn)題時(shí)有效運(yùn)作。
    ②由于時(shí)鐘可用軟件設(shè)置,啟動(dòng)失敗時(shí),開(kāi)機(jī)時(shí)鐘可能處于空檔,沒(méi)有時(shí)鐘看門狗不能生效。
    ③有些看門狗需要用軟件設(shè)置或啟動(dòng),因此啟動(dòng)失敗后,初始化程序沒(méi)有激活,cpu可能跳轉(zhuǎn)到隨機(jī)代碼,使看門狗被禁止。這樣的看門狗是需要有可靠的上電復(fù)位作保證的,因此,從理論上講,原設(shè)計(jì)存在著不合理性;谏鲜龇治,采用片外看門狗專用芯片tps3823由獨(dú)立的分頻振蕩電路提供計(jì)數(shù)脈沖。實(shí)驗(yàn)電路如圖2所示。
    
    
熱門點(diǎn)擊
- 51單片機(jī)定時(shí)器實(shí)驗(yàn)
- 單片機(jī)C51串口中斷接收和發(fā)送測(cè)試
- 用單片機(jī)制作通用型電視遙控器
- 51單片機(jī)的串行口擴(kuò)展方法
- 24C04在2051系統(tǒng)中的使用
- 大家一起來(lái)學(xué)單片機(jī):LED花樣燈
- 帶ADC、PWM和比較器的單片機(jī)-EM78P
- 基于AVR的VGA顯示和激光打印系統(tǒng)
- 無(wú)觸點(diǎn)云臺(tái)鏡頭通訊控制電路的設(shè)計(jì)
- 51單片機(jī)串-并轉(zhuǎn)換實(shí)驗(yàn)
推薦技術(shù)資料
- AMOLED顯示驅(qū)動(dòng)芯片關(guān)鍵技
- CMOS圖像傳感器技術(shù)參數(shù)設(shè)計(jì)
- GB300 超級(jí)芯片應(yīng)用需求分
- 4NP 工藝NVIDIA Bl
- GB300 芯片、NVL72
- 首個(gè)最新高端芯片人工智能服務(wù)器
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究