打印
[AVR单片机]

求救 flash编程

[复制链接]
1713|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区数据,或编程器填充

不过,这不是根本之道

应该从怎样增加硬件电路得可靠性和鲁棒性着手才对

使用特权

评论回复
5
maychang| | 2007-7-28 20:06 | 只看该作者

同意 xwj

先从硬件入手,包括机械结构,软件只能是个补充。

使用特权

评论回复
6
jimigaga|  楼主 | 2007-7-28 20:37 | 只看该作者

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

源程序是用c语言编写的,那软件陷阱怎么加?还是只能在汇编源程序里加呢?

使用特权

评论回复
7
mikesullen| | 2007-7-28 23:56 | 只看该作者

C中也可以的

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

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

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

9

帖子

0

粉丝