历史上的今天
返回首页

历史上的今天

今天是:2025年05月18日(星期日)

正在发生

2018年05月18日 | AVR中的定时器喂狗的作用

2018-05-18 来源:eefocus

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。


其次,看门狗的工作原理是什么?

在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗(俗称喂狗)。


AVR中的定时器和其他所有的单片机定时器大同小异,看门狗的作用也是如此,在大多数项目中,开发人员一般都是为了省事而将看门狗直接静默,但是这样一旦出现外部影响或者一些非人力因素导致的跑飞、程序死机,会导致单片机不能再自动的重启。


在一般的使用中,我们在init.c中对看门狗进行初始化//一般不建议直接静默,而应该设置一个看门狗定时器的阈值
void wdtinit(void)
{
    #asm("wdr")
    WDTCR=0x1F;
    WDTCR=0x0F;
}

然后在主函数进行一个喂狗操作。

void main()

{

...

while(1)

{

 wdtflag=1; //喂狗

...

}

}


的确,这样一般的情况下都可以避免单片机的非正常死机。但是在高低温实验(见博主前文)或者其他的时候,不可避免的会导致单片机的异常重启,尤其是在程序运行时间大致等于看门狗定时器的情况下。


除了在中断进行喂狗,一个比较好的办法就是在定时器中进行喂狗操作,这样可以避免中断函数进入后子函数太长而导致程序运行时间大于看门狗定时器的时间的情况

interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
...
    wdtflag=1;
...
}


推荐阅读

史海拾趣

ADTech公司的发展小趣事

AdTech公司一直注重创新,不断投入研发资源以推出新产品和解决方案。公司通过优化芯片结构设计、提升器件封装技术等手段,不断提升QCL的性能和稳定性。此外,公司还积极探索QCL在新能源、环保等领域的应用潜力,开发出了一系列具有创新性和实用性的产品。这些创新成果不仅提升了公司的核心竞争力,也为行业的发展注入了新的活力。

Ametherm公司的发展小趣事

随着产品质量的提升和市场口碑的积累,Ametherm公司开始积极拓展国内外市场。他们与多家知名企业建立了合作关系,将产品应用于各种电子设备中。同时,公司还积极参加国际电子展会,与全球客户进行交流与合作。这些举措使得Ametherm的品牌影响力逐渐扩大,市场份额也稳步提升。

EMC Component Group公司的发展小趣事

随着技术的不断进步,Ametherm公司始终保持着对技术创新的追求。他们不断研发新的材料、优化生产工艺,以提高产品的性能和稳定性。同时,公司还密切关注市场需求的变化,根据客户需求进行产品升级和改进。这些努力使得Ametherm的功率热敏电阻在行业中逐渐脱颖而出,赢得了客户的信赖和好评。

ERNI公司的发展小趣事

进入21世纪,ERNI继续深耕连接器技术。他们成功研发出世界上第一个DIN连接器,并随后发展了各种电路板连接器和输入/输出连接器。其中,2mm连接器成为ERNI的明星产品之一。凭借其优越的性能和可靠的品质,ERNI的2mm连接器在国内军工领域得到广泛应用,并赢得了广大客户的信赖和好评。

法思特(FAST)公司的发展小趣事
通过有序地控制电热水器的启动时间,可以避免同时启动多个电热水器造成的电网负载急剧增加。
EXXELIA Group公司的发展小趣事
通过有序地控制电热水器的启动时间,可以避免同时启动多个电热水器造成的电网负载急剧增加。

问答坊 | AI 解惑

電解電容爆裂!

請教各位 電解電容爆裂,除了受高壓導致,還有其他什麽因素會導致? 另外電解電容得頂部有“人”或”+“的凹槽樣,是有什麽作用的? 謝謝…

查看全部问答>

WIFE不能记住登录过的网络和密码

我现在的WIFE登录后,重新开机发现不能记住上次我成功登录的网络,密码也不会记,用户使用起来很麻烦。 我也看到别人的机器上能够保存,我找了一下,好象是在PUBLIC下面的NETUI里面实现的,不知道哪位仁兄做过,赐教一下 或是微软有更新过这里, ...…

查看全部问答>

[在线讨论]wince下能否支持JavaScript?

如题,var myTextField=document.getElementById(\"myText\"); 这个没法实现。要是能实现该如何做? 看了yudong54的回帖(http://topic.eeworld.net/u/20091116/14/1b2cc357-3aea-4329-b527-ab7828142f8f.html?26416)说要打08年的补丁和09年一月 ...…

查看全部问答>

VxWorks下的打印机并口问题

大家好. 我碰到了一个vxworks中打印机方面的问题.我的目标机是pc486, TornadoV2.02, 24针老式打印机EPSON LQ-1600K,用telnet 进行连接调试.BUILD中包含了并口组件.现在我想要让打印机打出一些测试文字,然后我写了一小段代码 ******************** ...…

查看全部问答>

承接电子设计(单片机)项目

承接电子设计(单片机)项目 (一)、PCB LAYOUT(2层 or 4层) 老牛承接专业抄板、画板,质优价廉,可每天查看画板进度,有问题及时沟通。 可加我QQ看画过的样板,因为老牛是个人接活,所以价钱肯定比抄板公司低,希望各位同行有活之余多多照顾。 ...…

查看全部问答>

飞思卡尔底盘与安全微控制器

ftf上一个突出的主题就是汽车电子,而汽车安全自然是一个重要的问题,飞思卡尔提供了完整的解决方案…

查看全部问答>

几个工程师讨论没解决???STM8S

reg=get_datas_bit(7654321,6); 该函数在main下掉用,返回的reg=6; 但从子函数中经过1个if,2个switch后掉用后返回的reg=0; 函数如下: u8 get_datas_bit(u32 datain,u8 sp) {        u8 i,value;     &nb ...…

查看全部问答>

学习心得:PWM模块的学习和使用

最近在使用TI的stellaris的芯片,项目主要用来做系统的控制模块,M3的外设基本都用到了,后面一点点总结各个模块简单的用法,并附上之前搜集和学习的资料,方便大家学习特别适合新手的入门学习,共同进步吧,感觉自己也还属于菜鸟级的呢,同时也感 ...…

查看全部问答>

11.01【每周讨论】这样一个活动是否有必要继续下去

【每周讨论】这样一个活动是否有必要继续下去? 谢谢各位朋友的热情支持。【每周讨论】已经持续到现在。昨晚我就在纠结,出个什么题目呢?这个问题我思考了很久,大家都知道现在这个活动已经脱离了最初发动时的意义了。因为现在所有的题目都是我一 ...…

查看全部问答>