找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3471|回复: 0
打印 上一主题 下一主题
收起左侧

S3C2410看门狗watchdog寄存器介绍与使用源码等资料

[复制链接]
跳转到指定楼层
楼主
ID:332016 发表于 2018-5-17 11:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看门狗应用实验
1、实验目的
    了解watchdog 的作用
    掌握S3C2410 的watchdog 定时器的使用方法
2、实验内容
     实现看门狗复位
     编程实现看门狗喂狗
3、实验设备
    S3C2410 开发板
    ADS1.2 集成开发环境,JTAG 调试器、串口连接线
4、实验原理
4.1 看门狗功能简述
    嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗 (watchdog )电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。
4.2 看门狗的工作原理
    其基本原理为:设本系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序正常运行时,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的记数值,定时器将在Ti  时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。
4.3S3C2410 的看门狗
    S3C2410 的看门狗定时器有两个功能:
     作为常规时钟,并且可以产生中断;
     作为看门狗定时器使用,当时钟计数减为0  (超时)时,它将产生一个128 个时钟
        周期(PCLK )的复位信号。
    主要特性如下:
     通用的中断方式的16bit 定时器。
     当计数器减到0          (发生溢出),产生128 个PCLK 周期的复位信号。
    下图为看门狗的电路示意图,看门狗时钟使用PCLK 作为他的时钟源,PCLK 通过预分频产生适合的看门狗时钟。

    看门狗模块包括一个预比例因子放大器,一个是四分频器,一个16bit 计数器。看门狗的时钟源来自PCLK,为了得到较宽范围的看门狗信号,PCLK 先被预分频,之后再经过分 频器分频。预分频比例因子的分频值,都可以由看门狗控制器(WTCON )决定,预分频值 的有效范围从0 到256-1。分频因子可以选择16、32、64 或者128。
看门狗定时器记数值的计算公式如下:
        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
    调试环境下的看门狗
    当S3C2410 用嵌入式ICE 调试的时候,看门狗定时器的复位功能不能启动,看门狗定时器能从CPU 内核信号判断出当前CPU 是否处于调试状态,如果看门狗定时器确定当前模 式是调试模式,尽管看门狗能产生溢出信号,但是仍然不会产生复位信号。

5、S3C2410 相关寄存器
    WTCON――看门狗定时器控制寄存器
    看门狗控制寄存器能够禁止或者允许看门狗时钟,从四个不同的时钟源中挑选时钟信号,允许或禁止中断,并且能允许或禁止看门狗时钟输出。如果用户想要使用看门狗作为普 通时钟,应该中断使能,禁止看门狗定时器复位。
    WTDAT――看门狗定时器数据寄存器
    WTDAT 用于设置看门狗定时器的超时时间值,在初始化看门狗过程中,WTDAT 的值不会自动加载到定时计数器中,首次使用定时器超时值为其初始值即0x8000,以后该寄存器的值会被自动加载到WTCNT 寄存器中。
    WTCNT――看门狗定时器计数寄存器
    WTCNT 为看门狗定时器工作的时间计数器的当前计数值,注意在初始化看门狗操作后,看门狗数据寄存器(WTDAT )的值不能自动装载到看门狗计数寄存器(WTCNT )中, 所以看门狗被允许之前应高初始化看门狗计数寄存器的值。
6、看门狗应用编程实现
    由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。要实现看门狗的功能,只需要对看门狗的寄存器组进行操作。即对看门狗的控制寄存器(WTCON )、 看门狗数据寄存器(WTDAT )、看门狗计数寄存器(WTCNT )的操作。
     设计流程如下:
      设置看门狗中断操作,包括全局中断和看门狗中断的使能,看门狗中断向量的定义。
      对看门狗控制寄存器(WTCON )的设置,包括设置预分频比例因子、分频器的分

          频值、中断使能和复位使能等。
      对看门狗数据寄存器(WTDAT )和看门狗技术寄存器(WTCNT )的设置。
      启动看门狗定时器。
6.1 主功能函数
     /*************************************************
     Function name: Main
     Parameter     : void
     Description   : 主功能函数
     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   复位,时间间隔为4S。
        //rWTCON|=(1<<5)|(1<<2);//每4S watchdog     一次中断。
        //设置watchdog 为IRQ 中断模式
        rINTMOD&=0xFFFFFDFF;
        //开中断
        EnableIrq(BIT_WDT);
        while(f_ucSencondNo<11);
       }
6.3  看门狗中断服务程序
     /****   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、实验过程
     运行该程序后,将会在一段时间后自动产生一个复位信号,自动启动开发板。

看门狗应用实验.pdf

104.13 KB, 下载次数: 16, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表