欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: S3C2410看門狗watchdog寄存器介紹與使用源碼等資料 [打印本頁]

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

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

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

          頻值、中斷使能和復(fù)位使能等。
      對看門狗數(shù)據(jù)寄存器(WTDAT )和看門狗技術(shù)寄存器(WTCNT )的設(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  看門狗測試程序
     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));
        //看門狗時鐘周期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ù)位,時間間隔為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、實驗過程
     運行該程序后,將會在一段時間后自動產(chǎn)生一個復(fù)位信號,自動啟動開發(fā)板。

看門狗應(yīng)用實驗.pdf

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






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1