国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

你好!歡迎來(lái)到深圳市穎特新科技有限公司!
語(yǔ)言
當(dāng)前位置:首頁(yè) >> 技術(shù)中心 >> 單片機(jī)入門(mén) >> MSP430單片機(jī)看門(mén)狗面面觀

MSP430單片機(jī)看門(mén)狗面面觀

關(guān)鍵字:MSP 單片機(jī) 看門(mén)狗 作者:admin 來(lái)源:不詳 發(fā)布時(shí)間:2018-05-18  瀏覽:17

以MSP430F2274為例。其中匯編實(shí)現(xiàn)采用的是IAR匯編,CCE匯編實(shí)現(xiàn)稍作修改即可。

1. 看門(mén)狗有三種工作模式:停止模式,計(jì)時(shí)器模式,看門(mén)狗模式。

2. 其中后兩種模式可以選擇的時(shí)鐘源有:SMCLK和ACLK。

3. 在使用后兩種模式時(shí)候要注意單片機(jī)所處的狀態(tài)下看門(mén)狗能否工作,如單片機(jī)處在LPM3時(shí)候只有ACLK時(shí)鐘,處在LPM4下,沒(méi)有時(shí)鐘可以使用。

4. 看門(mén)狗模式的使用方法:當(dāng)看門(mén)狗計(jì)數(shù)溢出時(shí),程序復(fù)位。在程序中開(kāi)啟看門(mén)狗,在計(jì)數(shù)溢出前清空看門(mén)狗,或重置看門(mén)狗,以使其重新計(jì)數(shù)。若程序跑飛,看門(mén)狗可能沒(méi)有被清空或重置,就會(huì)溢,使程序復(fù)位。

5. 在MSP430F2274中,看門(mén)狗模式下可以計(jì)時(shí)最長(zhǎng)為1s,若需要以更長(zhǎng)的時(shí)間復(fù)位,可采取的方法,使用其他計(jì)數(shù)器,計(jì)數(shù)滿(mǎn)后執(zhí)行((void (*)())RESET_VECTOR)();或計(jì)數(shù)滿(mǎn)后往看門(mén)狗控制寄存器寫(xiě)個(gè)錯(cuò)誤值或執(zhí)行一條無(wú)效命令:如((void (*)())0x170)();0x170是外圍模塊的一個(gè)地址,不可能是一個(gè)函數(shù)地址,所以執(zhí)行此句將使程序復(fù)位。

停止模式:關(guān)閉看門(mén)狗

C語(yǔ)言實(shí)現(xiàn):WDTCTL = WDTPW + WDTHOLD

匯編語(yǔ)言實(shí)現(xiàn):mov.w #WDTPW+WDTHOLD,&WDTCTL

計(jì)時(shí)器模式:作為一個(gè)計(jì)時(shí)器使用,計(jì)數(shù)器滿(mǎn)產(chǎn)生中斷時(shí)執(zhí)行看門(mén)狗中斷函數(shù)。

C語(yǔ)言實(shí)現(xiàn):

主程序中:開(kāi)啟看門(mén)狗計(jì)時(shí)器,如:WDTCTL = WDT_MDLY_8;或WDTCTL = WDT_ADLY_250;等

看門(mén)狗中斷函數(shù)為:

#pragma vector=WDT_VECTOR

__interrupt void wATchdog_timer(void)

{

//..................................

}

匯編語(yǔ)言實(shí)現(xiàn):

開(kāi)啟看門(mén)狗計(jì)時(shí)器,如:

mov.w #WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 ,&WDTCTL

或 mov.w #WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0 ,&WDTCTL等

中斷向量表中的看門(mén)狗中斷向量:

ORG 0FFF4h ;msp430f2274的看門(mén)狗中斷地址

DW RESET ;程序開(kāi)始處以REST作為標(biāo)號(hào)

看門(mén)狗中斷函數(shù):

WDT_ISR

;....................

reti

看門(mén)狗模式:計(jì)數(shù)溢出時(shí),執(zhí)行復(fù)位中斷函數(shù)。

C語(yǔ)言實(shí)現(xiàn):

清看門(mén)狗:WDTCTL = WDTPW+WDTCNCTL;

設(shè)置看門(mén)狗:WDTCTL = WDT_MRST_0_5;

或WDTCTL = WDT_ARST_1000;等

匯編語(yǔ)言實(shí)現(xiàn):

中斷向量表中的復(fù)位向量:

ORG 0FFFEh ;msp430f2274的復(fù)位地址

DW RESET ;程序開(kāi)始處以REST作為標(biāo)號(hào)

清看門(mén)狗:mov.w #WDTPW+WDTCNCTL,&WDTCTL

設(shè)置看門(mén)狗:

mov.w # WDTPW+WDTCNTCL+WDTIS1 ,&WDTCTL

mov.w # WDTPW+WDTCNTCL+WDTSSEL,&WDTCTL;等

————————————————————————————————————————————

關(guān)于喂狗

喂狗,也就是在看門(mén)狗定時(shí)器溢出之前對(duì)其進(jìn)行清零的操作。

網(wǎng)上和書(shū)里對(duì)喂狗的介紹不多,大部分都只說(shuō)使用“WDTCTL = WDTPW + WDTCNTCL;”即可。一般使用起來(lái)沒(méi)什么問(wèn)題,但是當(dāng)不使用默認(rèn)的看門(mén)狗時(shí)鐘源和分頻系數(shù)之后,問(wèn)題就來(lái)了。(以G2XXX系列,SMCLK=1M,ACLK=32K為例)直接使用“WDTCTL = WDTPW + WDTCNTCL;”喂狗之后,看門(mén)狗就被重置成復(fù)位狀態(tài),看門(mén)狗復(fù)位時(shí)間就變成了32ms,如果遠(yuǎn)小于你的喂狗時(shí)間,程序就沒(méi)法正常工作了,典型表現(xiàn)為定時(shí)重新啟動(dòng)。仔細(xì)查看WDTCTL寄存器之后,就能發(fā)現(xiàn)問(wèn)題。

1.jpg

要正確喂狗最好的辦法就是不改變?cè)锌撮T(mén)狗配置的情況下將WDTCNTCL置1。這樣看來(lái),簡(jiǎn)單的就是“WDTCTL |= WDTPW + WDTCNTCL;”,其中需要注意的是WDTPW位讀出來(lái)是0x69,而需要寫(xiě)入的是0x5A,實(shí)際上0x69|0x5A=0x7B,這就造成了在喂狗的時(shí)候,密碼錯(cuò)誤造成單片機(jī)重啟。所以正確的喂狗語(yǔ)句就初始化看門(mén)狗的語(yǔ)句。當(dāng)然如果想使用通用的喂狗語(yǔ)句,“WDTCTL = WDTPW + WDTCNTCL + (WDTCTL & 0x00FF);”應(yīng)該是最正確的(其中(WDTCTL & 0x00FF)是用來(lái)獲取看門(mén)狗配置的)。

不過(guò)430頭文件已經(jīng)很清新了,喂狗一般直接加上時(shí)間(頭文件里面都處理過(guò)了)。

————————————————————————————————————————————

MSP430單片機(jī)之看門(mén)狗的作用

看門(mén)狗定時(shí)器是一個(gè)計(jì)數(shù)器,基本功能是在發(fā)生軟件問(wèn)題和程序跑飛后使系統(tǒng)重新啟動(dòng)?撮T(mén)狗計(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ù)位看門(mén)狗以保證所選擇的定時(shí)溢出歸零,使處理器重新啟動(dòng)。

1. 看門(mén)狗問(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)部看門(mén)狗在工作時(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)部自帶看門(mén)狗及復(fù)位電路,理論上如果程序跑飛,可用看門(mén)狗將其復(fù)位。但在實(shí)際使用過(guò)程中,發(fā)現(xiàn)看門(mén)狗的作用并非萬(wàn)無(wú)一失,以下實(shí)驗(yàn)證明了這一點(diǎn)。

實(shí)驗(yàn)電路如圖1所示。

2.jpg

實(shí)驗(yàn)程序清單:

#include

void main(void){

P1DIR l=0x07; //設(shè)置P1.0~P1.2為輸出

for(;;){

volatile unsigned int i;

WDTCTL = WDTPW + WDTCNTCL; //復(fù)位WDT計(jì)數(shù)器

P1OUT ^= 0x07; //P1.0~P1.2相互異或

i=5000; //延時(shí)

do(i--);

while(i != 0);

}

}

上述實(shí)驗(yàn)啟動(dòng)后,如果程序正常運(yùn)行,LED會(huì)閃爍。缺省時(shí),MSP430的看門(mén)狗是允許狀態(tài),所運(yùn)行的程序會(huì)不斷地訪問(wèn)看門(mén)狗。理論上,這個(gè)系統(tǒng)是不會(huì)發(fā)生啟動(dòng)失敗的,因?yàn)榧词箚?dòng)失敗,看門(mén)狗也應(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è)試看門(mén)狗使系統(tǒng)重啟的成功率。K2閉合,則reset端高電平,理論上K1不能有效產(chǎn)生復(fù)位脈沖,觀察看門(mén)狗是否起作用。

2. 實(shí)驗(yàn)結(jié)果與分析

實(shí)驗(yàn)結(jié)果如下:K2斷開(kāi),連續(xù)開(kāi)關(guān)K1,上電重啟系統(tǒng),平均155次失敗1次(LED不閃),即看門(mén)狗失效概率0.6%;K2閉合,連續(xù)開(kāi)關(guān)K1,平均18次失敗1次(LED不閃),且一旦失敗,將連續(xù)失敗下去,看門(mén)狗無(wú)效率占到了約5.5%。

另外,當(dāng)采用同樣具有內(nèi)置看門(mén)狗的其他系列單片機(jī)替代實(shí)驗(yàn)中的MSP430,啟動(dòng)程序段作相應(yīng)修改時(shí),實(shí)驗(yàn)結(jié)果仍大致相同,這說(shuō)明具有內(nèi)置看門(mén)狗的單片機(jī)面臨的問(wèn)題是相同的。經(jīng)分析可能有如下原因:

① 由于看門(mén)狗的時(shí)鐘不獨(dú)立,計(jì)數(shù)時(shí)鐘與系統(tǒng)為同一分頻鏈路,因此看門(mén)狗不能在系統(tǒng)出現(xiàn)問(wèn)題時(shí)有效運(yùn)作。

② 由于時(shí)鐘可用軟件設(shè)置,啟動(dòng)失敗時(shí),開(kāi)機(jī)時(shí)鐘可能處于空檔,沒(méi)有時(shí)鐘看門(mén)狗不能生效。

③ 有些看門(mén)狗需要用軟件設(shè)置或啟動(dòng),因此啟動(dòng)失敗后,初始化程序沒(méi)有激活,CPU可能跳轉(zhuǎn)到隨機(jī)代碼,使看門(mén)狗被禁止。這樣的看門(mén)狗是需要有可靠的上電復(fù)位作保證的,因此,從理論上講,原設(shè)計(jì)存在著不合理性;谏鲜龇治,采用片外看門(mén)狗專(zhuān)用芯片TPS3823由獨(dú)立的分頻振蕩電路提供計(jì)數(shù)脈沖。實(shí)驗(yàn)電路如圖2所示。

3.jpg

上述電路中,TPS3823輸出定時(shí)溢出信號(hào)給Reset端。程序段中,CPU要不斷地通過(guò)I/O口輸出喂狗信號(hào),使看門(mén)狗計(jì)數(shù)器清零。在此電路中重復(fù)上述試驗(yàn)中K1、K2的相同動(dòng)作,系統(tǒng)重啟成功率達(dá)到100%。

結(jié) 語(yǔ)

未來(lái)的內(nèi)置看門(mén)狗必須有獨(dú)立可靠的時(shí)鐘。系統(tǒng)上電后,看門(mén)狗即為允許狀態(tài),無(wú)需軟件設(shè)置,它只能被外部硬件跳線或內(nèi)部熔絲(fuse)所禁止。目前,如果要求設(shè)計(jì)可靠性較高的嵌入式系統(tǒng),外置看門(mén)狗是必須考慮的。內(nèi)置看門(mén)狗的另一問(wèn)題是系統(tǒng)復(fù)位后,程序應(yīng)判斷是由Reset端正常上電復(fù)位,還是程序跑飛看門(mén)狗所致,由此確定現(xiàn)場(chǎng)數(shù)據(jù)是否應(yīng)該保留。這也是在看門(mén)狗應(yīng)用中所應(yīng)考慮的。

擴(kuò)展閱讀:看門(mén)狗定時(shí)器是什么?

編輯:admin  最后修改時(shí)間:2018-05-18

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

色婷婷视频国产一区视频| 欧美日韩在线视频一区| 国产成人精品午夜福利| 日本久久中文字幕免费| 亚洲精品深夜福利视频| 欧美色婷婷综合狠狠爱| 欧美国产精品区一区二区三区| 亚洲国产性感美女视频| 欧洲一区二区三区自拍天堂| 亚洲国产精品肉丝袜久久| 性欧美唯美尤物另类视频| 欧美成人黄色一区二区三区| 91欧美日韩精品在线| 国产成人国产精品国产三级| 中日韩免费一区二区三区| 日韩美成人免费在线视频| 丰满少妇被猛烈撞击在线视频| 国产精品视频一级香蕉| 亚洲最新av在线观看| 五月婷婷缴情七月丁香| 欧美大胆女人的大胆人体| 国产原创中文av在线播放| 91亚洲国产成人久久| 中文字幕高清免费日韩视频| 日韩一区二区三区四区乱码视频| 久热人妻中文字幕一区二区| 国产亚洲欧美日韩国亚语| 亚洲精品欧美精品一区三区| 国产又猛又黄又粗又爽无遮挡| 国产在线不卡中文字幕| 五月天丁香婷婷狠狠爱| 翘臀少妇成人一区二区| 日本高清视频在线播放| 在线精品首页中文字幕亚洲| 欧美一级不卡视频在线观看| 亚洲欧美日韩在线看片| 亚洲一区二区三区在线中文字幕| 欧美美女视频在线免费看| 国产精品久久精品国产| 日韩精品少妇人妻一区二区| 欧美日韩在线观看自拍|