新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430學習小結

        MSP430學習小結

        作者: 時間:2016-11-25 來源:網絡 收藏
        看門狗定時器用來防止程序因供電電源、空間電磁干擾或其它原因引起的強烈干擾噪聲而跑飛的事故。在很多單片機中都內置了看門狗,看門狗本身是一個定時器,當定時器溢出時即進行系統復位,因此需要在程序中對看門狗定時器進行清零,即常說的喂狗。

        由于我用過AVR的單片機,和AVR的相比,MSP430的看門狗要靈活的多,首先默認看門狗是開著的,因此如果不使用看門狗的話要關閉,指令如下:
        WDTCTL = WDTPW + WDTHOLD
        如果打開看門狗則需要在程序中清零,指令如下:
        WDTCTL=WDTPW+WDTCNTCL
        這只是基本的應用,430的看門狗要稍微復雜一些,首先從IAR的頭文件中看看定義了幾種工作狀態:

        本文引用地址:http://www.104case.com/article/201611/321221.htm


        2.WDT通過SSEL 和IS0 IS1 3位可以確定與8種時鐘源相關的時間(ACLK=32768Hz,SMCLK=1MHz)
        SMCLK=1MH(對應8種)
        WDT_MDLY_32
        WDT_MRST_32
        WDT_MDLY_8
        WDT_MRST_8
        WDT_MDLY_0_5
        WDT_MRST_0_5
        WDT_MDLY_0_064
        WDT_MRST_0_064
        ACLK=32768Hz(對應8種)
        WDT_ADLY_1000
        WDT_ARST_1000
        WDT_ADLY_250
        WDT_ARST_250
        WDT_ADLY_16
        WDT_ARST_16
        WDT_ADLY_1_9
        WDT_ARST_1_9

        在頭文件中查得:



        代碼解釋:

        WDTCTL =WDT_ARST_1000;

        在頭文件中看到WDT_ARST_1000的定義為:(WDTPW+WDTCNTCL+WDTSSEL0+WDTIS2)

        即上一條指令執行的是WDTCTL= WDTPW+WDTCNTCL+WDTSSEL0+WDTIS2。

        WDTCTL設置每條命令中必有WDTPW+..因為WDTPW代表寫WDTCTL的時候高八位寫05Ah,讀的時候高八位為069h,否則觸發PUC。

        WDTCNTCL:看門狗計數器清零.

        WDTSSEL0:表示WDTSSEL第0位置1,既0001.

        WDTIS2: 表示WDTIS2第2位置1,既0100.

        設置的含義看MSP4305438 PDF文檔


        從頭文件的定義中可以看出主要有兩種方式,一種就是當做普通的定時器使用,一種才是作為看門狗,另外就是時鐘源可選,選擇8M或者32K的晶振來獲得不同的延時,通過上面可以看出看門狗定時器最大的時間可以到1S,在程序中可以靈活的利用看門狗定時器實現想要的功能。

        下面介紹兩個典型應用:
        1、在動態數碼管顯示中的應用,具體代碼可以參考我之前的筆記,部分代碼如下:
        WDTCTL = WDT_ADLY_1_9; // 設置內部看門狗工作在定時器模式,1.9ms中斷一次
        //可以去看頭文件中具體的配置,這里使用的手表晶振64分頻計算可得是1.9ms
        SFRIE1 |= WDTIE; // 使能看門狗中斷

        __interrupt void watchdog_timer(void)
        {
        }
        這個程序主要是將看門狗定時器當做普通定時器使用,1.9ms剛好適合動態掃描間隔,在看門狗中斷中對數碼管進行動態掃描,這樣使用相對于開一個定時器來說要有所方便。因此在需要的定時與看門狗定時器的幾個時間相同時可以考慮使用看門狗。
        2、普通延時
        WDTCTL = WDT_ADLY_1000; //間隔定時器,定時1000ms
        //延時2s
        for(i = 0; i < 3; i++)
        {

        IFG1 &= ~WDTIFG;
        while(!(IFG1 & WDTIFG));
        IFG1 &= ~WDTIFG;
        }
        這個程序同樣是將看門狗當普通定時器使用,在主程序中讀取中斷標志位,實現延時效果,上面的程序為什么是延時2S自己分析。

        這里面舉了兩個例子,是最近學習的一點小體會,當然還是不能忘了看門狗的本能工作,在程序較為簡單時可以考慮使用看門狗定時器簡化設計。另外還有一點覺得比較重要的是雖然頭文件中對寄存器都有了很好的定義,但是還是很有必要對著頭文件和寄存器把主要的寄存器看一面,弄清每一種工作模式的使用方式和注意點。

        http://www.61ic.com/Article/MSP430/MSP430/201108/36308.html

        關于軟件看門狗
        2008-08-01 08:36
        <strike id="60iok"><input id="60iok"></input></strike>

        關于軟件看門狗

        Watch Dog 看門狗是一個很重要的資源,他能夠有效的防止系統進入死循環或者程序跑飛。工作原理:在系統運行以后也就啟動了看門狗的計數器,看門狗就開始自動計數,如果到了一定的時間還不去清看門狗,那么看門狗計數器就會溢出從而引起看門狗中斷,造成系統復位。

        看門狗是類似與硬件保護卡之類.保護硬盤數據的.

        是單片機一個復位芯片,在單片機遇到異常情況之下自動復位!~~

        看門狗是用來看家的,作用是保護你家的財產不丟失,
        看門狗電路是用來看著你的CPU的,作用是不讓你的程序丟失。

        看門狗實際上是一個計數器,一般給看門狗一個大數,程序開始運行后看門狗開始倒計數。如果程序運行正常,過一段時間CPU應發出指令讓看門狗復位,重新開始倒計數。如果看門狗減到0就認為程序沒有正常工作,強制整個系統復位。

        一般是為了程序進入死循環或死機!有的單片機不需外加看門狗電路(PIC)。

        看門狗定時器對微控制器提供了獨立的保護系統.當系統出現故障時,在可選的超時周期之后,看門狗將以RESET信號作出響應.像x25045就可選超時周期為1.4秒,600毫秒,200毫秒三種.當你的程序死機時,x25045就會使單片機復位.


        上一頁 1 2 下一頁

        關鍵詞: MSP430學習小

        評論


        技術專區

        主站蜘蛛池模板: 长汀县| 海林市| 大名县| 松桃| 武鸣县| 海安县| 育儿| 如皋市| 开江县| 城固县| 黄大仙区| 宁国市| 昭通市| 澄城县| 皮山县| 城固县| 汕头市| 波密县| 江北区| 大埔县| 南城县| 怀柔区| 弥渡县| 苍南县| 钟祥市| 乡城县| 潢川县| 山西省| 云龙县| 嘉定区| 永善县| 根河市| 清丰县| 平谷区| 太仓市| 汝州市| 红安县| 来凤县| 正阳县| 张家界市| 梅州市|
        <strike id="60iok"><input id="60iok"></input></strike>