[AVR单片机] 求救 flash编程

[复制链接]
2579|6
 楼主| jimigaga 发表于 2007-7-27 09:50 | 显示全部楼层 |阅读模式
各位,我们原来用mega128做了一块电网分析仪,结果由于干扰问题,导致程序总是跑飞,所以现在打算完善程序,在未被程序占用的flash区加上几个抗干扰语句,想请问各位大侠,在特定的flash地址里怎么加入特定的指令代码啊?急需救火 ,先谢过!!

 还有就是采用指令冗余方法,加nop语句,一般都在什么地方加啊?加多少合适呢?
mikesullen 发表于 2007-7-28 03:00 | 显示全部楼层

没有用看门狗吗?

空白地方可以加些跳转指令,跳回复位地址处,具体的还要看程序的细节,因为程序跑飞后RAM和REGISTER中的值都可能有错了。。。
 楼主| jimigaga 发表于 2007-7-28 19:52 | 显示全部楼层

想看门狗和软件陷阱一起用

我不懂的是怎么在你说的空白部分加呢?一般的软件陷阱指令是
  
   nop
   nop
   jmp 0x0000
这个指令写在程序的哪里呢?
还望赐教
xwj 发表于 2007-7-28 19:55 | 显示全部楼层

定义flash区数据,或编程器填充

不过,这不是根本之道

应该从怎样增加硬件电路得可靠性和鲁棒性着手才对
maychang 发表于 2007-7-28 20:06 | 显示全部楼层

同意 xwj

先从硬件入手,包括机械结构,软件只能是个补充。
 楼主| jimigaga 发表于 2007-7-28 20:37 | 显示全部楼层

嗯,这是个治标不治本的办法,接着问

源程序是用c语言编写的,那软件陷阱怎么加?还是只能在汇编源程序里加呢?
mikesullen 发表于 2007-7-28 23:56 | 显示全部楼层

C中也可以的

nop是空指令,不做事
jmp 0x0000,是指跳到地址0x0000,一般单片机的复位地址是0x0000

如果用C的话,相当于goto main()的第一条语句。。。。
也就是在main()中后面多加很多NOP,和GOTO。

的确程序跑飞的原因很多,防治办法也很多,但最终目的是要解决问题。。。
要注意实测。。。注意查找跑飞的地方和准确原因,有的程序跑飞也可能是纯软件的问题。。。C中指针用错最可能出现程序跑飞。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

9

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部