开发界
首页 移动开发 在线交易 IT笔记 网络技术 操作系统 企业架构 数据库 考试认证 IT培训 开源软件 数据存储 行业资讯
大家都在看:java   开发   C#   oracle   mysql   android   web开发   学习   sqlserver   linux   asp   php   ajax   javascript   css   html
一个简单的netduino看门狗
2016-05-26 08:33:25 来源:开发界 作者:admin 栏目:大锅饭 责任编辑:admin
[导读]如果你创造了你自己的netduino应用,和一个错误停止意外吗?第一个回答:没问题,我在调试前,我会异常的完整的堆栈跟踪。 二答:这是一场噩梦!我在假期的周末,我netduino型喷水灭火系统看起来冻…我应该问我的邻居复位板或,甚至更好,让他水草。
  下面是一个用来为你的netduino“看门狗”测试的讨论和快速程序。
  
  说明
  
  如果你创造了你自己的netduino应用,和一个错误停止意外吗?第一个回答:没问题,我在调试前,我会异常的完整的堆栈跟踪。
  
  二答:这是一场噩梦!我在假期的周末,我netduino型喷水灭火系统看起来冻…我应该问我的邻居复位板或,甚至更好,让他水草。
  
  噩梦
  
  显然,我们在第二个答案感兴趣,或者更好的是,如何避免这样的情况。当硬件损坏或软件缺陷,不是有很多的方法来拯救板控制。然而,还有很多,很多情况下我们会完美的作品(也许周)没有任何问题。很快就搬到“现场”,出现的第一个问题。
  
  因为我们都不想醒来在一个系统停止凌晨3点,或被迫回家因为喷头没有水草正常,那么我们可以执行的可靠性增加了所谓的“看门狗”。
  
  这是一个非常简单的方法来保护系统免受意外停止,但不解决所有潜在的问题。相反,它更像一个“的东西,我们真的无法预见的极值比”。
  
  一个好的编程习惯,以及一个好的硬件,是任何系统的可靠性冗余的必备。
  
  认真的考虑一下。
  
  一个简单的看门狗
  
  我不知道是谁发明了这个名字…“看门狗”…但它听起来很清楚(至少对我来说),有两个不同的学科:
  
  的<b>狗</b>,这是控制器
  
  的<b>房子</b>,被监视的狗
  
  现在,潜在的系统故障是<i>房子</i>,和狗生活在“外部”的<i>房子</i>。这是显而易见的,因为如果系统挂起,怎么能拯救自己?很明显,很多人都在问一个纯软件的解决方案,也许使用一个单独的线程控制器。
  
  有太多的情况下,可以得到一个单片机挂了,会让人立刻到外部的解决方案。一些例子:
  
  在以上的温度
  
  尖峰电压(高于供应和地下)
  
  在一般的强噪声(尤其是当长导线直接连接到单片机的引脚)
  
  软件缺陷
  
  硬件不稳定(如晶体停振)
  
  许多人
  
  我可以用一个看门狗定制芯片。该netduino Atmel芯片嵌入一个看门狗,但它没有被固件驱动。相反,我想表明一个非常简单的电路,主要是学习如何解决这个特定的问题。
  
  我们将使用一个简单的计数器:74hc4060。这是14个阶段的二进制计数器,其中还嵌入了一个基本的RC振荡器。所有获得重新触发,长周期定时器。“立即调用计时器”思想的惊人”五百五十五“芯片:在“70硬件设计的杰作。顺便说一句,我们需要一个相对较长的反应时间:至少几秒钟。这是因为netduino需要几秒钟完成全复位的过程,那么我们应该考虑程序的缓慢。一个正常的看门狗的反应在毫秒,而在这里我们考虑十几秒,也许更多。对于一个这么长的时间,正常的555定时器是不可靠的,因为依赖于电容器充电。同时,我们也需要一个非常大的电容器。是的74hc4060长时间简单多了。我调整的频率大约为60Hz的振荡器,即用:
  
  RT = 68K
  
  CT = 100N
  
  <strong>注</strong>:指74hc4060规格。
  
  然后,我选择了10的输出TH阶段(即Q9)为“超时”的信号,触发netduino复位后约10秒。现在,十的二阶段产量的1024分频(= 2 ^ 10),所以这就是为什么60 Hz除以1024不产生10秒,但20?因为复位发生不久,Q9输出变高,这只是整体的后一半时间。
  
  所以,netduino的作用是什么,怕是从74hc4060复位?嗯,是啊…我们的节目在netduino运行必须不断“刷新”计数器,所以它不会达到Q9高。基本上,我们需要的netduino输出产生一个短的正脉冲,具有重置计数器。直到netduino应用运行正常,脉搏会保持反在一个比较小的值,和Q9从不把高。顺便说一下,当程序挂起,没有更多的复位脉冲的产生,和反跑到Q9高。这个信号将重置netduino。
  
  一个简单的测试程序
  
  下面的程序是作为看门狗测试。这使得LED闪烁一段时间,然后产生一个例外。这是一个模拟的“错误”,这实际上是整个板。在这种情况下,你只有两个选择:按下“复位”按钮,或分离插头电源了。因为他们没有一个远程上下文操作合适,我们将引入一个小的“帮手”,“按我们“复位按钮。
  
  使用系统;使用网络系统;使用system.net.sockets;使用线程的系统;使用microsoft.spot;使用microsoft.spot.hardware;使用secretlabs.netmf.hardware;使用secretlabs.netmf.hardware.netduinoplus;命名空间netduinowatchdog
  
  {公共 类程序
  
  {公共 静止的 无效main()
  
  {/ /定义LED端口            VaR领导=新输出端口(pins.onboard_led,假);/ /只是一个长环使LED闪烁            为(int我=零我的<<;一千;i++)/ /称为临界区冰箱(我);/ /等了好一会儿,然后切换LED状态睡眠(线程。一百);
  
  LED!LED。read()
  
  );
  
  }静止的 无效冰箱(int计数)/ /这只是模拟突发事件            如果(数= =二十)抛出 新exception();/ /把狗唤醒watchdog();/ /看门狗端口定义        静止的输出端口,定时器=新输出端口(pins.gpio_pin_a5,假);静止的 无效watchdog()
  
  {/ /生成外部计数器复位正脉冲写(WDT。真正的);
  
  WDT。假);} }
  
  没有其他的代码,因为项目主要是外部电路使用74hc4060。也很明显,一个类似的源会将每一次:在真实的语境中已经没有意义了。一个更现实的应用应该更加异常的“自由心证”,也许能“正确”本身在一定失败。例如,考虑你的应用程序是写在SD文件,但用户拔卡。它写一个防弹程序写入数据无一例外的有点困难。然而,一旦netduino已复位,可以对SD存在测试,并避免任何相关的操作。
标签:看门狗 程序
版权所有:转载请注明出处!
分享到:
上一篇湖南女子"最牛辞职信":云龙那么.. 下一篇华为前员工:我在华为敲代码知道..
您可能还喜欢
暂无...
今日最新资讯 最新推荐信息
考试认证 更多
开发技术 更多
移动开发 更多

关于开发界 | 合作伙伴 | 联系我们 | 友情链接 | 版权声明 | 网站制作 | 网站地图 | 加入收藏 | 设为首页

Copyright@2012-2016 开发界 京ICP备12027873号