历史上的今天
今天是: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;
到最后发现初始化和喂狗程序都很简单,但是这里面有跟多个隐蔽的坑,稍不注意就掉进去了,并且看门狗一般是程序的最后一道保障,想想都可怕
上一篇:MSP430 WDT
史海拾趣
|
2月14日讯, Cirrus Logic公司为进一步扩大其模拟和混合信号音频转换器集成电路产品线,新近推出了两款面向各种消费和汽车音频产品,诸如机顶盒、数字电视、DVD刻录机、音频/视频接收机、车内娱乐及服务系统和乐器等应用的立体声模数转换器(ADC)CS ...… 查看全部问答> |
|
我买的开发板是英贝德的9261,由于新学,对很多东西都不是很懂,而这个开发板有没有现成的bsp模板,哪位能提供一份at91sam9261的bsp模板吗?最好是某家开发板商自带的或者自己做的bsp,可以编译通过的。我绝对不是觊觎您的技术,纯粹是为了学习,相 ...… 查看全部问答> |
|
我的摄像头分辨率是720*288的,在7寸TFT上显示(800*480),调试时发现,水平方向左右两端的图像缺失,不能完整显示,其他的正常。请问这是啥原因??高手指点,急!!! … 查看全部问答> |
|
两块硬盘。 打算在第二块硬盘(Primary Slave)的最后一个分区,安装linux系统。(这个想法好像也不正确) linux分区定制划分完后,开始安装linux时,提示“设备忙....”什么的。 linux没装成,重启系统后,windows下无法识别第二块硬盘。 奇怪的 ...… 查看全部问答> |
|
vc2005智能设备程序dialog下可以使用的ocx(win32)在vc#2005智能设备程序下不能使用,变灰,这个原因再哪儿?高手帮忙 vc2005智能设备程序dialog下可以使用的ocx(win32)在vc#2005智能设备程序下不能使用,变灰,这个原因再哪儿?高手帮忙… 查看全部问答> |
|
——浅析“按需照明”的深刻意义 目前,多数建筑内的公共空间如走廊、步行梯、停车场、卫生间、电梯前室,一般是靠传统灯具长时间照明,而这些地方有时却空无一人,电能被白白消耗。如何解决这个普遍存在的“无效照明”问题?华威凯德照明科技( ...… 查看全部问答> |
|
加入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么,不支持怎么办~求大神帮忙,我暂时用的是QuartusII 11.0,里面没有显示我的5M80ZE64C5N可以用PLL。… 查看全部问答> |




