电机控制中CPU死机复位后的处理
我做电机控制 CPU由于杂讯干扰而死机 watchdog动作后 进入复位状态 但是规范要求保持之前运行状态 有哪位高手做过的 指教一下 最好的方法是让cpu不死机,想要死机后保持原先状态是不可能的,至少中间存在一个恢复的过程。让cpu不死机,就是硬件抗干扰方面的处理了。 是啊 可惜硬件已经定型了 恢复的延迟时间可以接受 只要回复后可以继续之前状态输出就好 那就再增加一个备用系统啊,当一个死机的时候,由另一个来控制啦 只能考虑一用一备两个系统啦可以互检有问题就切换 是不应该死机的,这要从硬件上解决。 从硬件上解决,CPU挂掉之后,一切寄存器都为0了.
用双CPU方案比较合适. 成本上是不允许用双CPU,而且干扰信号不是持续性的,所以我想通过WATCHDOG来克服,但是不想每次狗一叫就复位,有什么好办法吗? 非上电复位之后保护关键的变量不被清零,或者通过硬件检测出当前的状态:电压,速度,电流,然后进行衔接,保证电压和电流的突变在可承受的范围内,避免因为输出状态不连续进行另一次复位。 非上电复位之后保护关键的变量不被清零,或者通过硬件检测出当前的状态:电压,速度,电流,然后进行衔接, ...
jtyzas 发表于 2011-3-28 13:06 http://bbs.simol.cn/images/common/back.gif
非上电复位之后保护关键的变量不被清零如何实现 本帖最后由 jtyzas 于 2011-3-28 15:54 编辑
回复 11# lbz0123
在单片机的启动代码里,复位后会对全局变量进行初始化,清除变量的数据。划分出特定的RAM空间,将关键的变量定义在那,并且修改启动代码,复位的时候避开这段RAM就可以了。但是上电复位的时候还是要确保被清除的 恩 这个可以实现 我的意思是能不能不要从初始位置开始走 就是PC的值有没有可能保留下来 如果由于干扰导致PC值乱跳,程序跑飞,看门狗复位的话,就必须在第一次PC值异常时保存下此时的PC值,将之拉回正轨。因为干扰本身就是随机的,是否存在这种方法我也不太清楚,希望高手指点。不过存在很多软件抗干扰的方法,比如指令陷阱,中断和主程序相互监控等等 回复 14# jtyzas
谢谢 受到不少启发 干扰的存在在实际中是很难从根本上根除的。
可以在硬件上考虑增添一块eeprom,实时记录控制器当前运行的状态和核心参数,一旦CPU出现死机复位后再回写到CPU,维持死机前的运行状态。 回复 16# motorzbc
应该没有那么快吧实时记录 应该来不及吧 回复 16# lbz0123
关键在于你建立的eeprom的读写机制如何,应该可以实现在一个中断周期内读写一次 回复 17# motorzbc
可是这样就不算实时了呀 而且这些内容可以在进中断的时候压栈吧 不过还是谢谢你 {:1_432:}受益了! 还是找到一些抗干扰的方法吧,通信用双绞屏蔽线,大电流加上磁环和滤波器。
页:
[1]
2