历史上的今天
返回首页

历史上的今天

今天是:2025年03月29日(星期六)

2020年03月29日 | MSP430G2553 看门狗喂狗问题

2020-03-29 来源:eefocus

MSP430G2553编程用到看门狗,TI官方例程没有看门狗喂狗例程,上网搜了看门狗例程,有两个地方给出的看门狗初始化代码是WDTCTL = WDT_ARST_1000(1秒的看门狗),喂狗程序是WDTCTL=WDT_ARST_1000+WDTCNTCL。经过测试,初始化代码没有问题,不喂狗的情况下每隔1秒重启一次。但这个喂狗程序是有问题的,用这个喂狗程序看门狗会停掉,也就是看门狗回失去作用。表面上程序没有重启,好像喂狗程序起作用了,但实际是看门狗停掉了。(只把喂狗程序放到初始化最后面运行一次就知道了)


仔细看代码发现WDT_ARST_1000的定义是这样的:#define WDT_ARST_1000 (WDTPW+WDTCNTCL+WDTSSEL) ,也就是WDT_ARST_1000已经加了个WDTCNTCL(0x0008),再加一个相当于加了0x0010,也就是将WDTTMSEL置位了,从看门狗模式变成了计时中断模式,导致看门狗不起作用了。


接下来试了其他几种喂狗程序,官方的手册给出的喂狗程序如下:


Periodically clear an active watchdog

MOV #WDTPW+WDTCNTCL,&WDTCTL

虽然是汇编,但意思应该是WDTPW+WDTCNTCL的值赋给寄存器WDTCTL,所以用了以下喂狗程序:


WDTCTL = WDTPW+WDTCNTCL;

貌似是OK的,但仔细看下发现有问题,因为直接给WDTCTL这样赋值相当于WDTCTL=WDT_MRST_32WDT_MRST_32,因为


/* WDT is clocked by fSMCLK (assumed 1MHz) */

#define WDT_MRST_32         (WDTPW+WDTCNTCL)            /* 32ms interval (default) */

也就是这样喂狗可以是可以但同时把看门狗时间改成了32ms,因为直接赋值改变了其它位,所以很容易想到采用|=操作:


WDTCTL |= WDTPW+WDTCNTCL;

看上去很合理,但发现这个喂狗程序根本不起作用,过一秒就重启。仔细看了下手册原因可能是这样的,WDTPW是看门狗密码,读的时候是0x69,写的时候必须写成0x5A。WDTCTL |= WDTPW+WDTCNTCL等价于


WDTCTL = WDTCTL+WDTPW+WDTCNTCL

也就是读出来密码0x69或上要写的密码WDTPW(0x5A),密码就不对了,所以操作该寄存器不成功喂狗失败。


试了以上各种方法,发现喂狗程序其实很简单,跟初始化程序一样即可:


WDTCTL = WDT_ARST_1000;

到最后发现初始化和喂狗程序都很简单,但是这里面有跟多个隐蔽的坑,稍不注意就掉进去了,并且看门狗一般是程序的最后一道保障,想想都可怕

推荐阅读

史海拾趣

ELECTRONIC ASSEMBLY公司的发展小趣事

在电子组装行业,品质是企业的生命线。一家名为“品质电子组装”的公司,从创立之初就坚持以品质为核心竞争力。公司引进了国际先进的生产设备和管理体系,建立了严格的质量控制体系,确保每一件产品都符合高标准、严要求。正是凭借着对品质的坚守和追求,品质电子组装赢得了客户的广泛赞誉和信赖,逐渐在行业中树立了良好的口碑。

Aptiv公司的发展小趣事

Aptiv一直秉持开放合作的理念,积极与产业链上下游企业开展创新合作。公司与多家科技公司、研究机构以及高校建立了战略合作关系,共同推动自动驾驶技术的研发和应用。通过共享资源、优势互补,Aptiv不仅加快了自身的发展步伐,还为整个电子行业的进步做出了积极贡献。

Fronter Electronics Co Ltd公司的发展小趣事

Fronter电子成立于1991年,由一群对电子技术充满热情的创业者共同创立。在公司成立初期,Fronter电子专注于电子元件的代理与销售,通过引进国际知名品牌的产品,如SUNLORD、KDS等,迅速在行业内建立了初步的声誉。公司凭借敏锐的市场洞察力和高效的供应链管理,逐步在电子元器件市场中站稳脚跟。

AEMC Instruments公司的发展小趣事

AEMC Instruments公司成立于1976年,隶属于Chauvin Arnoux集团。这个新成立的公司在电子行业中崭露头角,凭借其在电气测试和测量领域的专业知识和技术,迅速获得了市场的认可。初创时期,AEMC Instruments公司以研发和生产电流测量探头、电能质量分析仪等核心产品为主,这些产品凭借其准确性和稳定性,为公司的快速发展奠定了坚实的基础。

Caddock公司的发展小趣事

Caddock公司的发展可以追溯到1962年,当时公司推出了Micronox电阻系统。这一创新技术使电阻器在极端操作条件和恶劣环境下实现了高水平的稳定性和可靠性。这一重大突破为Caddock公司赢得了市场的广泛认可,并为后续的电阻材料技术发展奠定了坚实的基础。

东晨(DC)公司的发展小趣事

东晨(DC)公司注重企业文化的建设,将“创新、务实、协作、共赢”作为企业的核心价值观。公司倡导员工勇于创新、敢于挑战的精神,同时注重团队协作和共赢的理念。这种企业文化不仅增强了员工的凝聚力和向心力,也塑造了公司的良好品牌形象。在业界和客户中,东晨(DC)公司赢得了广泛的赞誉和信任。

请注意,以上故事为虚构内容,旨在展示电子行业公司可能的发展路径和成功要素。如有需要,请结合实际情况进行调整和完善。

问答坊 | AI 解惑

Cirrus消费和汽车电子用高品质ADC CS5343/4

2月14日讯, Cirrus Logic公司为进一步扩大其模拟和混合信号音频转换器集成电路产品线,新近推出了两款面向各种消费和汽车音频产品,诸如机顶盒、数字电视、DVD刻录机、音频/视频接收机、车内娱乐及服务系统和乐器等应用的立体声模数转换器(ADC)CS ...…

查看全部问答>

求一个at91sam9261的bsp

我买的开发板是英贝德的9261,由于新学,对很多东西都不是很懂,而这个开发板有没有现成的bsp模板,哪位能提供一份at91sam9261的bsp模板吗?最好是某家开发板商自带的或者自己做的bsp,可以编译通过的。我绝对不是觊觎您的技术,纯粹是为了学习,相 ...…

查看全部问答>

wince s3c2440 camera 问题??

我的摄像头分辨率是720*288的,在7寸TFT上显示(800*480),调试时发现,水平方向左右两端的图像缺失,不能完整显示,其他的正常。请问这是啥原因??高手指点,急!!! …

查看全部问答>

CE6.0烧写求助

我现在烧写ce6.0的nk.bin 下面是返回的串口信息。但是在最下面一行出现了错误,请大家帮助分析一下 Selection: D Mark the bootimage area in Flash as RESERVED. LAN91C111 EbootDeviceAddress B9C00300 pKITLArgs->MAC: 3412:7856:2391 LAN9 ...…

查看全部问答>

linux没装成,硬盘也没了。

两块硬盘。 打算在第二块硬盘(Primary Slave)的最后一个分区,安装linux系统。(这个想法好像也不正确) linux分区定制划分完后,开始安装linux时,提示“设备忙....”什么的。 linux没装成,重启系统后,windows下无法识别第二块硬盘。 奇怪的 ...…

查看全部问答>

vc2005智能设备程序dialog下可以使用的ocx(win32)在vc#2005智能设备程序下不能使用,变灰,这个原因再哪儿?高手帮忙

vc2005智能设备程序dialog下可以使用的ocx(win32)在vc#2005智能设备程序下不能使用,变灰,这个原因再哪儿?高手帮忙…

查看全部问答>

观念改变带来巨大节能效益

——浅析“按需照明”的深刻意义 目前,多数建筑内的公共空间如走廊、步行梯、停车场、卫生间、电梯前室,一般是靠传统灯具长时间照明,而这些地方有时却空无一人,电能被白白消耗。如何解决这个普遍存在的“无效照明”问题?华威凯德照明科技( ...…

查看全部问答>

加入PLL FPGA(cyclone4)开发板心得第05贴

加入PLL(锁相环)算是使用IP核的一个练习吧,以之前的方波发生器为例,首先由verilog文件创建原理图文件(File->Creat/updata).然后双击空白处使用Mega Plug-in那个向导添加ALTPLL,配置基本上除了倍频项都用默认就可以,记得把晶振由100MHz改到48 到这 ...…

查看全部问答>

求帮帮忙,下载一个文件

http://bbs.mydigit.cn/read.php?tid=736048&page=1 有人是mydigit的会员吗,刚注册直接-500币,哭死,什么论坛啊。。。 不知道坛里有没有人士这个网站的会员呢,能不能帮忙下载一这个文件 谢谢 …

查看全部问答>

MAX V系列CPLD支持PLL么

MAX V系列CPLD支持PLL么,不支持怎么办~求大神帮忙,我暂时用的是QuartusII 11.0,里面没有显示我的5M80ZE64C5N可以用PLL。…

查看全部问答>