专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
MSP430低功耗+喂狗问题请教
2019-08-06 21:18
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
2880
10
1610
本帖最后由 dirtwillfly 于 2014-1-26 21:50 编辑
现需求低功耗,
1.想使用LPM3的低功耗模式,
2.内部看门狗需要开启,打算看门狗直接使用VLO驱动的ACLK
问题:
1.是否在中断中喂狗?正确的喂狗方法是什么
2.我用定时中断唤醒的话,定时器只能使用VLO时钟,VLO晶振精度变化范围较大,这样会导致定时时间不准。
3.网上看到一个这样的问题:
4%的故障率,我也是打算这样用的,到底是咋回事呢?
@
dirtwillfly
@
地瓜patch
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
pluto55
2019-08-07 08:51
shenmu2012 发表于 2014-1-26 23:22
中断中喂狗是常见的处理方式的 ,我一般的都会在定时中断中做为狗处理的 ...
网上看到HotPower大侠关于这个问题的理解:
这样就归类为网上长期争论不休的2种喂狗方法。即“主程序喂狗论”和“中断喂狗论”。
实际上2种方法都有缺点!!!
“主程序喂狗论”提出: 在系统进入一个不正常的循环时,中断喂狗仍然起作用,看门狗
失去它本来的作用。
“中断喂狗论”也可提出:在系统运行一个很正常的循环时,主程序喂狗在起作用,看门狗
保持它本来的作用。但是在中断被意外关断不能有效工作时,主程序“正常”
有何实际意义???
为什么要叫“狗”呢???因为狗记路是靠撒尿的~~可能菜农说话粗鲁~~~
当程序经过某处时,要置标志说明程序已在此处运行过,如狗撒尿一般。
通常在主循环即后台的某处设置一标志(俗称软狗标志),在中断(一般在定时器)即前台的某处
检测此软狗标志,若有则认为主程序此时运行正常,否则不喂狗直到狗咬人(复位)。
反之也可在前台设置软狗标志,在后台真正喂狗。
这种方法是前后台依据软狗标志互相沟通以达到正确而有效的喂狗目的。
而此种方法的中断喂狗一般用于低功耗的系统中,它的优点是喂狗周期固定,而且很容易做到在
一处真正喂狗。
此种方法的主循环喂狗的缺点是喂狗周期相对不固定,有可能需要多处喂狗。
下面这个代码是中断喂狗的示例:
我觉得还是不错的,尽量都照顾到了:
uint SoftWatchDog; // 软件看门狗
void main(void)
{
系统初始化并启动硬件看门狗;
while(1)
{
执行主程序任务;
SoftWatchDog = 0; // 复位软件看门狗
}
}
void IntT2(void) interrupt 5 using 1
{
复位硬件看门狗;
WatchSystem(); // 监测系统
执行其它任务;
}
void WatchSystem(void)
{
if (++SoftWatchDog >= 设定值) // 系统监测 ,当然还可以监测系统的其它状态
系统复位;
}
如果T2不能进入中断必然导致硬件看门狗复位系统,如果T2能中断必然能检测到死循环或系统状态是否正常,在不正常时复位系统了,仅供参考。
加载中...
查看其它10个回答
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
网上看到HotPower大侠关于这个问题的理解:
这样就归类为网上长期争论不休的2种喂狗方法。即“主程序喂狗论”和“中断喂狗论”。
实际上2种方法都有缺点!!!
“主程序喂狗论”提出: 在系统进入一个不正常的循环时,中断喂狗仍然起作用,看门狗
失去它本来的作用。
“中断喂狗论”也可提出:在系统运行一个很正常的循环时,主程序喂狗在起作用,看门狗
保持它本来的作用。但是在中断被意外关断不能有效工作时,主程序“正常”
有何实际意义???
为什么要叫“狗”呢???因为狗记路是靠撒尿的~~可能菜农说话粗鲁~~~
当程序经过某处时,要置标志说明程序已在此处运行过,如狗撒尿一般。
通常在主循环即后台的某处设置一标志(俗称软狗标志),在中断(一般在定时器)即前台的某处
检测此软狗标志,若有则认为主程序此时运行正常,否则不喂狗直到狗咬人(复位)。
反之也可在前台设置软狗标志,在后台真正喂狗。
这种方法是前后台依据软狗标志互相沟通以达到正确而有效的喂狗目的。
而此种方法的中断喂狗一般用于低功耗的系统中,它的优点是喂狗周期固定,而且很容易做到在
一处真正喂狗。
此种方法的主循环喂狗的缺点是喂狗周期相对不固定,有可能需要多处喂狗。
下面这个代码是中断喂狗的示例:
我觉得还是不错的,尽量都照顾到了:
uint SoftWatchDog; // 软件看门狗
void main(void)
{
系统初始化并启动硬件看门狗;
while(1)
{
执行主程序任务;
SoftWatchDog = 0; // 复位软件看门狗
}
}
void IntT2(void) interrupt 5 using 1
{
复位硬件看门狗;
WatchSystem(); // 监测系统
执行其它任务;
}
void WatchSystem(void)
{
if (++SoftWatchDog >= 设定值) // 系统监测 ,当然还可以监测系统的其它状态
系统复位;
}
如果T2不能进入中断必然导致硬件看门狗复位系统,如果T2能中断必然能检测到死循环或系统状态是否正常,在不正常时复位系统了,仅供参考。
一周热门 更多>