|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
看门狗复位以后,怎么恢复到以前的运行状态? |
作者:senny 栏目:单片机 |
各位大哥,小弟想请教一下,看门狗复位以后怎么判断(或恢复以前的运行状态呢?) 我是用通过按钮信号给单片机,然后单片机在接到按钮信号以后,在输出引脚上给输出继电器上电,运行。 在运行中,如果看门狗动作,那么所有端口都是复位状态,按钮信号已不再保持,这样就造成了意外停机。 有什么好的办法可以恢复呢? 谢谢! |
2楼: | >>参与讨论 |
作者: senny 于 2006/10/10 13:52:00 发布:
我的意思怎么在看门狗复位后 判断复位前是运行状态还是待机状态。 如果是待机状态复位以后在没有外指令的话,发生运行指令,那事故就更加严重。 |
3楼: | >>参与讨论 |
作者: wudeyi 于 2006/10/10 14:18:00 发布:
一般 单片机复位后它的数据区不会变。 |
4楼: | >>参与讨论 |
作者: lenglx 于 2006/10/10 15:29:00 发布:
用锁存器 继电器输出你可以采用锁存器,这样不至于被看门狗复位改变继电器的状态. 至于按键信息,你可以保存在RAM中,看门狗复位,RAM中的数据还在. 只不过你需要修改STARTUP.A51文件.否则这个默认的启动文件会将你的RAM中的所以数据清零. |
5楼: | >>参与讨论 |
作者: senny 于 2006/10/10 15:35:00 发布:
我的初步想法是 外扩一片寄存器(或RAM)。 建立一个标志位,每次运行时先写标志位。然后送运行信号。 停止时毅然,先擦除标志位再发停止指令。 状态寄存器随上电复位一起复位,但不随看门狗复位,不知这样是否可靠。 如果内部RAM不随主复位一起复位的话,那么是否可以在内部RAM建一个状态区,但是复位状态怎么判断呢? 不知一般这种情况都怎么处理。 有看门狗的系统很多啊。 不知各位一般都怎么处理看门狗动作以后怎么返回到现场状态。 谢谢 |
6楼: | >>参与讨论 |
作者: senny 于 2006/10/10 15:52:00 发布:
谢谢两位回复的大哥。 偶心里有数了。 准备用锁存器,上电复位锁存器一起复位,看门狗复位只复MCU,复位以后查询锁存器状态,如果不在运行状态,则不与考虑,等待运行信号。如果在运行状态,则按运行状态去工作。 谢谢! |
7楼: | >>参与讨论 |
作者: conwh 于 2006/10/10 16:52:00 发布:
建立进程状态字 |
8楼: | >>参与讨论 |
作者: hyunfei 于 2006/10/10 19:38:00 发布:
我建议用X5045,内部有RAM,在里边建一个状态位就可以 |
9楼: | >>参与讨论 |
作者: hyunfei 于 2006/10/10 19:42:00 发布:
X5045也是看门狗复位集成电路 |
10楼: | >>参与讨论 |
作者: senny 于 2006/10/10 20:23:00 发布:
X5045是EEPROM,擦写次数有限制的! 用正在尝试用锁存器,我觉得是个不错的选择。 |
11楼: | >>参与讨论 |
作者: 平常人 于 2006/10/10 22:29:00 发布:
楼上的人怎么竟出歪招呢?根本不用加任何外部器件,看门狗不贪吃 看门狗只负责看门复位,它决不贪吃,CPU中的绝大部分内容都不会变,包括片内RAM和CPU的寄存器,你尽可用程序变量纪录系统的运行状态,看门狗复位后通过查询这些变量决定下一步动作。 |
12楼: | >>参与讨论 |
作者: senny 于 2006/10/11 7:16:00 发布:
哈哈,掉进胡同里了。 按楼上大哥的说法,看门狗复位只是把PC指针复到0000H是吗? 其他的不受影响,是吗? 我是89C52单片机,用的是外部看门狗,看门狗用的是ADM706。 |
13楼: | >>参与讨论 |
作者: 平常人 于 2006/10/11 8:12:00 发布:
去看看单片机的手册中,有关复位后CPU中各部分的默认复位值 哪个单片机的默认复位状态中有RAM的默认复位值是清零或其他值?CPU中的寄存器也不会在复位时清除,只有那些片内外设的寄存器会被复位成特定的值。 |
14楼: | >>参与讨论 |
作者: zhujing03 于 2006/10/11 10:29:00 发布:
看门狗复位以后,怎么恢复到以前的运行状态? 提个醒;看门狗复位叫热复位,虽然内部寄存器数据不丢失,但端口是要复位的,不知你是要从复位前状态接着运行还是重新开始。要是接着运行你必须保存现场并在复位后查询。要重新开始就无所谓了。 |
15楼: | >>参与讨论 |
作者: senny 于 2006/10/11 11:25:00 发布:
谢谢! 致楼上: 当然是接着运行,不然就是非正常停机,这是不允许的。 所以,我想,锁存器无论如何也少不了的。 热复位以后查询寄存器的状态。 |
16楼: | >>参与讨论 |
作者: yuands 于 2006/10/25 23:05:00 发布:
热复位以后查询RAM中记录的状态 |
17楼: | >>参与讨论 |
作者: conwh 于 2006/10/26 0:48:00 发布:
还没有搞定? |
18楼: | >>参与讨论 |
作者: zhiwei 于 2006/10/26 17:48:00 发布:
这样也不大可靠 如果是程序跑飞引起的看门狗复位,则在跑飞后系统运行了不该运行的程序块,使用了相关内存,也可能造成内存改写,所以不能一概而轮,呵呵 |
19楼: | >>参与讨论 |
作者: zgl7903 于 2006/10/26 22:37:00 发布:
看门狗复位以后,怎么恢复到以前的运行状态? 那就是不用看门狗,以前的状态就是看门狗就要动作,恢复到前面的状态,还是看门狗就要动作,循环往复 :)纯属灌水 每到关键节点,记录当前状态和重要参数,复位后检测和恢复这些状态和参数,关键就是要保护好这些数据 |
20楼: | >>参与讨论 |
作者: stycx 于 2006/10/26 22:46:00 发布:
那就不能用看门狗了 同意楼上的,请楼主再查查看门狗的作用和运作原理、动作条件 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |