liyuehan 发表于 2012-6-19 21:17:58

如何提高软件的抗干扰性?

大侠!是否可以谈谈在一个由多个中断组成的系统里,怎样建立良好的编程思路,使程序稳定运行,现实中在软件里做何处理才能有效防止程序跑飞?

Gorgon_Meducer 发表于 2012-6-21 00:10:58

首先我想知道你对钱后台系统的理解,以及对中断所消耗的系统资源的理解,然后我就知道如何对你解释最有效率。

wind2100 发表于 2012-6-21 00:20:39

真把我雷倒了 软件抗干扰性真没听过 只听过硬件会被干扰软件来想办法解决的。
软件只有编错的 没有干扰软件的。
楼上说对了 系统资源 CPU占用率 搞明白了 就明白了。管它多少中断。

liyuehan 发表于 2012-6-21 19:37:31

本人是个菜鸟,软件上确实知之甚少,还请各位不吝赐教啊,哈哈!工业环境应用中电磁干扰很严重,有时经常程序会很奇怪的运行,假如对几个交流信号进行采样,(固定每个一段时间进行AD转换)根据采样出来的值再进行处理,定期刷新屏幕上的值,有按键调整参数等等,我想问一下中断服务程序里面可以调用函数吗?如果调用是不是会被下一个中断覆盖的风险呢?

yunqian09 发表于 2012-6-21 19:42:49

liyuehan 发表于 2012-6-21 19:37 static/image/common/back.gif
本人是个菜鸟,软件上确实知之甚少,还请各位不吝赐教啊,哈哈!工业环境应用中电磁干扰很严重,有时经常程 ...

"被下一个中断覆盖"要避免,合理分配下时间不就可以了

liyuehan 发表于 2012-6-21 19:48:06

如果是单一中断那就好处理一些,如果不是单一中断,时间很难预知啊。

pengxin213 发表于 2012-6-21 22:22:32

中断里面最好不要处理时间太长的东西,尤其多个等级相同的中断,最好在中断程序里面置标志位,到主程序里面处理~更复杂的我就不太懂了

Gorgon_Meducer 发表于 2012-6-21 23:35:59

搂主,你很多的判断都是基于感性,而且是基于人类的感官。对计算机来说,时间的快慢是一个相对的概念。
也许对人类来说一秒钟发生1千次或者1万次的事情已经是快的难以想象了,但对计算机来说是快还是慢,这是一个相对的。
你首先要记住,一个事件,比如中断,他发生的频率,要用计算机的思维模式来评估。

如何评估呢?你首先要记住一点:
1us = 1M, 也就是说,系统主频率是1M的单片机系统,执行一条指令要1us,1ms可以执行1000条指令。以此类推,12M
的系统主频,1ms系统可以执行12 * 1000条指令。这是什么概念?如果粗略的认为1条指令2个字节,那么12 * 1000基本上
就是24K的代码空间了?你哪个中断处理程序要24K这么大?另外一个角度,你可以仔细计算中断处理程序的汇编指令数量
找出最坏情况下,这个中断处理程序需要多少个指令周期来完成。由此,你可以判断,比如,这个中断发生的频次是小于
1ms 10次,也就是小于10K,那么你就拥有100us的时间来执行中断处理程序,如果你系统跑12M,那么你就拥有12 * 100
条指令周期,在这种情况下,你看看你中断处理程序是否需要这么多指令周期?如果大于等于,那么显然你现在的软件系统
设计是不合格的。反之则勉强可以运行。如果12 * 100远远大于中断处理程序的指令周期数,你则可以很自豪的说,这个中断
相对于系统来说是一个低速事件。

——计算机系统中事件的快慢要定量分析,请杜绝简单的用人类感官进行估计。

解决了时间的问题,你另外一个需要搞清楚的就是前后台系统。弄清楚前后台系统以后,再来问具体问题吧。

liyuehan 发表于 2012-6-22 19:26:18

非常感谢傻孩子及以上莫友的指点,受教了!

jude90 发表于 2012-8-22 13:39:08

感觉本贴与抗干扰没什么太大关系。
页: [1]
查看完整版本: 如何提高软件的抗干扰性?