<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          MSP430學習小結

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

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

          本文引用地址:http://www.ex-cimer.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)

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

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

          WDTCNTCL:看門狗計數(shù)器清零.

          WDTSSEL0:表示W(wǎng)DTSSEL第0位置1,既0001.

          WDTIS2: 表示W(wǎng)DTIS2第2位置1,既0100.

          設置的含義看MSP4305438 PDF文檔


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

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

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

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

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

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

          關于軟件看門狗
          2008-08-01 08:36

          關于軟件看門狗

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

          看門狗是類似與硬件保護卡之類.保護硬盤數(shù)據(jù)的.

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

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

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

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

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


          上一頁 1 2 下一頁

          關鍵詞: MSP430學習小

          評論


          技術專區(qū)

          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();