找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4212|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

S3C2410看門狗watchdog寄存器介紹與使用源碼等資料

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:332016 發(fā)表于 2018-5-17 11:57 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
看門狗應(yīng)用實(shí)驗(yàn)
1、實(shí)驗(yàn)?zāi)康?
    了解watchdog 的作用
    掌握S3C2410 的watchdog 定時(shí)器的使用方法
2、實(shí)驗(yàn)內(nèi)容
     實(shí)現(xiàn)看門狗復(fù)位
     編程實(shí)現(xiàn)看門狗喂狗
3、實(shí)驗(yàn)設(shè)備
    S3C2410 開發(fā)板
    ADS1.2 集成開發(fā)環(huán)境,JTAG 調(diào)試器、串口連接線
4、實(shí)驗(yàn)原理
4.1 看門狗功能簡(jiǎn)述
    嵌入式系統(tǒng)運(yùn)行時(shí)受到外部干擾或者系統(tǒng)錯(cuò)誤,程序有時(shí)會(huì)出現(xiàn)“跑飛”,導(dǎo)致整個(gè)系統(tǒng)癱瘓。為了防止這一現(xiàn)象的發(fā)生,在對(duì)系統(tǒng)穩(wěn)定性要求較高的場(chǎng)合往往要加入看門狗 (watchdog )電路?撮T狗的作用就是當(dāng)系統(tǒng)“跑飛”而進(jìn)入死循環(huán)時(shí),恢復(fù)系統(tǒng)的運(yùn)行。
4.2 看門狗的工作原理
    其基本原理為:設(shè)本系統(tǒng)程序完整運(yùn)行一周期的時(shí)間是Tp,看門狗的定時(shí)周期為Ti,Ti>Tp,在程序正常運(yùn)行時(shí),定時(shí)器就不會(huì)溢出,若由于干擾等原因使系統(tǒng)不能在Tp時(shí)刻修改定時(shí)器的記數(shù)值,定時(shí)器將在Ti  時(shí)刻溢出,引發(fā)系統(tǒng)復(fù)位,使系統(tǒng)得以重新運(yùn)行,從而起到監(jiān)控的作用。
4.3S3C2410 的看門狗
    S3C2410 的看門狗定時(shí)器有兩個(gè)功能:
     作為常規(guī)時(shí)鐘,并且可以產(chǎn)生中斷;
     作為看門狗定時(shí)器使用,當(dāng)時(shí)鐘計(jì)數(shù)減為0  (超時(shí))時(shí),它將產(chǎn)生一個(gè)128 個(gè)時(shí)鐘
        周期(PCLK )的復(fù)位信號(hào)。
    主要特性如下:
     通用的中斷方式的16bit 定時(shí)器。
     當(dāng)計(jì)數(shù)器減到0          (發(fā)生溢出),產(chǎn)生128 個(gè)PCLK 周期的復(fù)位信號(hào)。
    下圖為看門狗的電路示意圖,看門狗時(shí)鐘使用PCLK 作為他的時(shí)鐘源,PCLK 通過(guò)預(yù)分頻產(chǎn)生適合的看門狗時(shí)鐘。

    看門狗模塊包括一個(gè)預(yù)比例因子放大器,一個(gè)是四分頻器,一個(gè)16bit 計(jì)數(shù)器?撮T狗的時(shí)鐘源來(lái)自PCLK,為了得到較寬范圍的看門狗信號(hào),PCLK 先被預(yù)分頻,之后再經(jīng)過(guò)分 頻器分頻。預(yù)分頻比例因子的分頻值,都可以由看門狗控制器(WTCON )決定,預(yù)分頻值 的有效范圍從0 到256-1。分頻因子可以選擇16、32、64 或者128。
看門狗定時(shí)器記數(shù)值的計(jì)算公式如下:
        t_watchdog=1/ [PCLK/( prescaler value +1)/ Division_factor ]
    實(shí)驗(yàn)中PCLK=50MHz;prescaler =WTCON[15:8]=100;clock division factor=128
        t_watchdog= 0.00025856
        看門狗的定時(shí)周期為T=WTCH ×t_watchdog
    調(diào)試環(huán)境下的看門狗
    當(dāng)S3C2410 用嵌入式ICE 調(diào)試的時(shí)候,看門狗定時(shí)器的復(fù)位功能不能啟動(dòng),看門狗定時(shí)器能從CPU 內(nèi)核信號(hào)判斷出當(dāng)前CPU 是否處于調(diào)試狀態(tài),如果看門狗定時(shí)器確定當(dāng)前模 式是調(diào)試模式,盡管看門狗能產(chǎn)生溢出信號(hào),但是仍然不會(huì)產(chǎn)生復(fù)位信號(hào)。

5、S3C2410 相關(guān)寄存器
    WTCON――看門狗定時(shí)器控制寄存器
    看門狗控制寄存器能夠禁止或者允許看門狗時(shí)鐘,從四個(gè)不同的時(shí)鐘源中挑選時(shí)鐘信號(hào),允許或禁止中斷,并且能允許或禁止看門狗時(shí)鐘輸出。如果用戶想要使用看門狗作為普 通時(shí)鐘,應(yīng)該中斷使能,禁止看門狗定時(shí)器復(fù)位。
    WTDAT――看門狗定時(shí)器數(shù)據(jù)寄存器
    WTDAT 用于設(shè)置看門狗定時(shí)器的超時(shí)時(shí)間值,在初始化看門狗過(guò)程中,WTDAT 的值不會(huì)自動(dòng)加載到定時(shí)計(jì)數(shù)器中,首次使用定時(shí)器超時(shí)值為其初始值即0x8000,以后該寄存器的值會(huì)被自動(dòng)加載到WTCNT 寄存器中。
    WTCNT――看門狗定時(shí)器計(jì)數(shù)寄存器
    WTCNT 為看門狗定時(shí)器工作的時(shí)間計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,注意在初始化看門狗操作后,看門狗數(shù)據(jù)寄存器(WTDAT )的值不能自動(dòng)裝載到看門狗計(jì)數(shù)寄存器(WTCNT )中, 所以看門狗被允許之前應(yīng)高初始化看門狗計(jì)數(shù)寄存器的值。
6、看門狗應(yīng)用編程實(shí)現(xiàn)
    由于看門狗是對(duì)系統(tǒng)的復(fù)位或者中斷的操作,所以不需要外圍的硬件電路。要實(shí)現(xiàn)看門狗的功能,只需要對(duì)看門狗的寄存器組進(jìn)行操作。即對(duì)看門狗的控制寄存器(WTCON )、 看門狗數(shù)據(jù)寄存器(WTDAT )、看門狗計(jì)數(shù)寄存器(WTCNT )的操作。
     設(shè)計(jì)流程如下:
      設(shè)置看門狗中斷操作,包括全局中斷和看門狗中斷的使能,看門狗中斷向量的定義。
      對(duì)看門狗控制寄存器(WTCON )的設(shè)置,包括設(shè)置預(yù)分頻比例因子、分頻器的分

          頻值、中斷使能和復(fù)位使能等。
      對(duì)看門狗數(shù)據(jù)寄存器(WTDAT )和看門狗技術(shù)寄存器(WTCNT )的設(shè)置。
      啟動(dòng)看門狗定時(shí)器。
6.1 主功能函數(shù)
     /*************************************************
     Function name: Main
     Parameter     : void
     Description   : 主功能函數(shù)
     Return           : void
     Argument       : void
     Autor & date :
     **************************************************/
     int Main(void)
     {
          SetClockDivider(1, 1);//FLCK:HCLK:PCLK=1:2:4
          SetSysFclk(DFT_FCLK_VAL);//Fout=200MHZ
          Port_Init();
          Uart_Select(0);
          Uart_Init(0, UART_BAUD);
          Uart_Printf("watchdog test is beginning\n");
          watchdog_test();
     }
6.2  看門狗測(cè)試程序
     void watchdog_test(void)
     {
       //initialize interrupt registers
       ClearPending(BIT_WDT);
       //建立WatchDog 中斷
       pISR_WDT=(unsigned)watchdog_int;
       //Prescaler value=100、clock division factor=128
       //t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]=0.00025856
       //disable watchdog
                                                                                                      4
----------------------- Page 5-----------------------
        rWTCON=((100<<8)|(3<<3));
        //看門狗時(shí)鐘周期T=WTCNT*t_watchdog=4S
        //看門狗喂狗
        rWTDAT=15000;
        rWTCNT=15000;
        rWTCON|=((1<<5)|(1<<2));//enable Watchdog timer ang watchdog interrupt
        rWTCON|=((1<<5)|(1<<2)|1);//watchdog   復(fù)位,時(shí)間間隔為4S。
        //rWTCON|=(1<<5)|(1<<2);//每4S watchdog     一次中斷。
        //設(shè)置watchdog 為IRQ 中斷模式
        rINTMOD&=0xFFFFFDFF;
        //開中斷
        EnableIrq(BIT_WDT);
        while(f_ucSencondNo<11);
       }
6.3  看門狗中斷服務(wù)程序
     /****   watchdog_init  ****/
     void __irq watchdog_int(void)
      {
        //清除中斷
        ClearPending(BIT_WDT);
        f_ucSencondNo++;
        if(f_ucSencondNo<11)
        Uart_Printf("%ds",f_ucSencondNo);
        else
        {
          //mask watchdog timer interrupt
          DisableIrq(BIT_WDT);
          Uart_Printf("watch dog is ok\n");
        }
     }
7、實(shí)驗(yàn)過(guò)程
     運(yùn)行該程序后,將會(huì)在一段時(shí)間后自動(dòng)產(chǎn)生一個(gè)復(fù)位信號(hào),自動(dòng)啟動(dòng)開發(fā)板。

看門狗應(yīng)用實(shí)驗(yàn).pdf

104.13 KB, 下載次數(shù): 16, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表