S3C2410看门狗watchdog寄存器介绍与使用

发布者:老王古玩店最新更新时间:2019-10-17 来源: 51hei关键字:S3C2410  看门狗  watchdog  寄存器 手机看文章 扫描二维码
随时随地手机看文章

看门狗应用实验 

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 beginningn"); 

          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 okn"); 

        } 

     } 

7、实验过程 

     运行该程序后,将会在一段时间后自动产生一个复位信号,自动启动开发板。 


关键字:S3C2410  看门狗  watchdog  寄存器 引用地址:S3C2410看门狗watchdog寄存器介绍与使用

上一篇:itop修改uboot使之能保存环境变量
下一篇:基于数字相关的时栅信号处理设计LPC2138源程序及proteus仿真

推荐阅读最新更新时间:2024-11-13 10:19

独立看门狗实狗实验—IWDG
概述: 为什么要看门狗? 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。 独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它仍有效。 独立看门狗适合应用于需要看门狗作为一个在主程序之外 能够完全独立工作,并且对时间精度要求低的场合。 功能介绍: 在键值寄存器(IWDG_KR)中写入0xCCCC,开始
[单片机]
独立<font color='red'>看门狗</font>实狗实验—IWDG
PIC18系列单片机I/O端口操作寄存器及应用
试验芯片:Microchip PIC 18F4550 集成开发环境:MPLAB IDE v8.53 编译器:Microchip C18 PIC18系列单片机是美国微芯公司(Microchip)8位单片机系列中的高档系列,其任一I/O引脚允许的最大灌电流或最大拉电流达25mA,可以直接驱动LED和继电器。PORTA、PORTB 和PORTE 的最大灌电流或最大拉电流总和为200mA,PORTC和PORTD的最大灌电流或最大拉电流总和为200mA,PORTF和PORTG的最大灌电流或最大拉电流总和为100mA(注:PIC18F4550没有这两个端口)。 单片机和外设的交互都是通过I/O端口进行,每个I/O端口均有三个操作寄存器:
[单片机]
STM32 GPIO 寄存器的配置
配置每组IO口的寄存器:(每一组一套寄存器) 1、两个32位的配置寄存器;GPIOx_CRL,GPIOx_CRH 2、两个32位的数据寄存器:GPIOx_IDR,GPIOx_ODR 3、一个32位置位/复位寄存器:GPIOx_BSRR 4、一个16位的复位寄存器GPIOx_BRR 5、一个32位的锁定寄存器GPIOx_LCKR 详解 : CRL和CRH控制IO口,是四个位控制一个口,所以要两个32位的来控制16个口 1、GPIOx_CRL:端口配置低寄存器: 每个口由四位控制,为MODE+CNF联合配置,具体模式在下图中。(输入要与输入对应,输出也要与输出对应) 具体对应输入输出配置表(对上图的详解): 2、GPIOx_
[单片机]
STM32 GPIO <font color='red'>寄存器</font>的配置
MCS-51单片机有几个工作寄存器
工作寄存器有4组,每组都是8个工作寄存器R0~R7,通过PSW中的RS1、RS0两位来选择使用哪一组,如果不选,默认是选择第0组。 RS1RS0组合为00时,选中第0组工作寄存器,R0~R7地址为00H~07H; RS1RS0组合为01时,选中第1组工作寄存器,R0~R7地址为08H~0FH; RS1RS0组合为10时,选中第2组工作寄存器,R0~R7地址为10H~17H; RS1RS0组合为11时,选中第3组工作寄存器,R0~R7地址为18H~1FH。 类似arm的usr模式svc模式irq模式fiq模式, psw.4 psw.3 0 0
[单片机]
MSP430F149的看门狗定时器
程序: //看门狗定时器,溢出后执行中断服务函数 #include msp430x14x.h void main(void) { P6DIR |= BIT2;P6OUT |= BIT2; //关掉电平转换 (不必纠结) WDTCTL = WDT_ADLY_250; // 看门狗定时器,辅助时钟延迟250ms IE1 |= WDTIE; // 中断允许寄存器,打开看门狗定时器 P3DIR |= BIT4; // Set P3.4 to output direction _BIS_SR(LPM3_bits +
[单片机]
STM32入门学习笔记之看门狗实验(下)
14.4.2 窗口看门狗实验 功能:程序一运行使得接在PB5上的LED1亮300ms后关闭,进入死循环。等待WWDG中断的到来,在中断里面,喂狗,并对PE5上的LED2进行翻转操作。可以看到LED2不停的闪烁,LED1只在刚启动的时候闪一下。 (1)在上一个实验的wdg.h文件的函数列表区域添加以下代码。 void WWDG_Init( u8 tr, u8 wr, u8 fprer ) ; //窗口看门狗初始化 (2)在上一个实验的wdg.c文件末尾添加以下代码。 /*************************************************** Name :WWDG_IRQHandler
[单片机]
STM32输入捕获实验示例详解
STM32输入捕获实验 寄存器部分讲解(以TIM5_CH1为例) TIMx_CCMR1.ICF 的作用 滤波器的作用就是“采集取样以便于确定准确的电平状态”。我们以ICIF = 0010为例: 实例应用:假设输入信号在最多5个内部时钟周期的时间内抖动,我们须配置滤波器的带宽长于5个时钟周期。因此我们可以(以fDTS频率)连续采样8次,以确认在TI1上一次真实的边沿变换,即在TIMx_CCMR1寄存器中写入IC1F=0011。 TIMx_CCER.CC1P的作用 这个寄存器很重要,它决定了“上升沿/下降沿触发输入捕获 “,而且最重要的是,它是用来配置极性的唯一寄存器,这说明输入极性与输出极性都要经过它进行配置,因此
[单片机]
STM32输入捕获实验示例详解
【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)
一. ARM 芯片类型 1. ARM 分类 (1) ARM 分类类型(芯片 | 核 | 指令架构) ARM 分类 : -- ARM 芯片类型 : 6410, 2440, 210; -- ARM 核类型 : arm11, arm9, CortexA9; -- 指令架构 : armv7, armv6; (2) ARM芯片 与 ARM核 关系 芯片 和 核关系 : 芯片包含核; -- 2440 芯片 : 包含 arm9 核; -- 6410 芯片 : 包含 arm11 核; -- 210 芯片 : 包含 CortexA8 核; (3) ARM核 与 指令架构 关系 ARM 核 与 指令
[单片机]
【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM <font color='red'>寄存器</font> | ARM 寻址)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved