历史上的今天
今天是:2024年08月30日(星期五)
2021年08月30日 | 飞思卡尔普通看门狗与窗口看门狗
2021-08-30 来源:eefocus
举个例子,假设看门狗周期为10s,对于普通模式只要在10s内喂一次狗就可以了,超过10s则会重启。对于窗口模式必须在最后的2s内喂狗才可以,喂早了不起作用,同样超时会重启。
下面是摘抄自百度文库的文章。
链接:http://wenku.baidu.com/link?url=HQn9-QuKvsT9qQUBhzRSa13G-PD3o21iu8sA2V9YQykqQPauSknGahmBvbU5SOFXK1o6ngevZ81c2MX3y4RTulCNyPuUYlg6UDSNFjoU2om
目前接触到的单片机中都有看门狗模块,不过写过的程序也比较简单,程序能够稳定运行,所以就不怎么理会这看门狗,因此也不知道看门狗是怎么回事。
DABAO最近写了个超声波测距的程序,运行过程中程序老是会无故停止,就是死机了。因此不得不重新面对看门狗,经过两天的奋斗,终于让看门狗顺利工作了。下面记一下XS128的看门狗的相关寄存器及用法。
看门狗模块用于检测程序的正常运行,启动看门狗后,必须在看门狗复位之前向ARMCOP中依次写入0X55和0XAA,这样看门狗就会重新启动计时。如果在规定时间内没有完成向ARMCOP中依次写入0X55和0XAA的操作,就会引起看门狗复位。这样可以使程序重新运行,减小程序跑死的危害。
看门狗的设置比较简单,只要配置好寄存器COPCTL即可用。
COPCTL的第七位为: WCOP。若写入COPCTL_WCOP=1,则看门狗行运在窗口模式下,必须在看门狗周期的后25%时间内向ARMCOP依次写入0X55和0XAA。若在其他时间写入,或写入其他值,都会让看门狗溢出,使单片机复位。若写入COPCTL_WCOP=0,则看门狗运行在正常模式下。当看门狗使能后,只要在看门狗溢出周期内依次向ARMCOP写入0X55和0XAA,使看门狗计数复零,即可。
第六位为:RSBCK,BDM模式下的COP和RTI 停止位。若COPCTL_RSBCK=1,则只要进入BDM模式,就停止COP和RTI(实时中断)计数。若COPCTL_RSBCK=0,则在BDM模式下允许COP和RTI运行。
低三位为:CR2、CR1、CR0。这三位是看门狗时钟分频位。当CR[2:0]=000时,看门狗COP不可用。只要CR[2:0]不为000,看门狗就开启了。当CR[2:0]=001时,分频值为(2的14次方)。当CR[2:0]=010时,分频值为(2的16次方)。当CR[2:0]=011时,分频值为(2的18次方)。当CR[2:0]=100时,分频值为(2的20次方)。当CR[2:0]=101时,分频值为(2的22次方)。当CR[2:0]=110时,分频值为(2的23次方)。当CR[2:0]=111时,分频值为(2的24次方)。
看门狗的溢出频率为:COP溢出频率=OSCCLK /CR[2:0]。OSCCLK为晶振频率。
在正常运行模式下,只要配置好COPCTL,再写好喂狗程序,看门狗COP就可以工作了。
和看门狗COP相关的寄存器还有,不过一般情况下可以不管:
CLKSEL_COPWAI: 当CLKSEL_COPWAI=1时,COP在等待模式下不可用。当CLKSEL_COPWAI=0时,COP在等待模式下可继续运行。
PLLCTL_PCE: 当PLLCTL_PCE=1时,COP在伪停止模式下可用。当PLLCTL_PCE=0时,COP要伪停止模式下不可用。
看门狗的初始化如下:
COPCTL_WCOP=0; //正常COP模式
COPCTL_RSBCK=0; //在BDM模式下允许COP和RTI运行
COPCTL_CR2=1; //CR[2:0]分频值为(2的23次方)
COPCTL_CR1=1; //COP溢出周期=OSCCLK/CR[2:0]
COPCTL_CR0=0;
喂狗函数如下:
/我的喂狗函数
void feeddog()
{
ARMCOP=0X55; //在特定时间内依次向ARMCOP写入0X55,0XAA;
ARMCOP=0XAA;
史海拾趣
|
我现在使用中国电信的UI界面加我们的USB数据卡,进行短信群发(7个用户),群发的用户包含数据卡本身的号码,在群发的时候,我再用7个用户中的一个或几个号码向USB数据卡发送短信(这样做就会导致USB数据卡同时收发短信的问题),那么结果会导致7个用户 ...… 查看全部问答> |
|
为SRAM创建一个Avalon tri-strate接口时遇到的问题 用DE2的开发板,用Create New Component为SRAM创建一个Avalon tri-strate接口,data width为16位,address width为18位,其他还有byteenable_n ,chipselect_n ,read_n ,write_n ,创建好添加到nios系统。另外nios系统还包括cp ...… 查看全部问答> |
|
作者:chenzhufly QQ:36886052 ( 转载请注明出处)BeagleBone的IO控制可以见我发的这个帖子:Linux下AM335X的GPIO控制https://bbs.eeworld.com.cn/thread-327156-1-2.html 测试代码:#include <stdlib.h>#include <sys/types.h>#include ...… 查看全部问答> |
|
通过串行总线和主机通讯。。找过资料,在开始测量前,需要设置配置、控制、状态、中断等寄存器。。。配置完成后,发送启动转换指令开始转换。。。然后通过主机发送读寄存器指令,返回相应的值。。。这种思路对吗?? 还有,它返回都是瞬时电压、电 ...… 查看全部问答> |




