2835|8

333

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

怎么从软件和硬件提高单片机的可靠性? [复制链接]

随着程序的不断增加,单片机里的程序越来越冗杂但又缺一不可,程序多意味着未知错误多,我的程序运行一两个小时可能没问题,但是时间一长就出现些异常,比如接收中断不能进入,或者接收到的不是预料的数据。
程序编写上应该大体没问题,不然也不会坚持个把小时的,硬件也应该如此,那么怎么从细节上提升可靠性呢?
请各位大神从软件和硬件上提出高见。
(本来导师让我熟悉一下制作流程的,后来说要可以作为实验设备,现在要让我制作成产品,靠我一个人的力量我觉得太渺茫了,希望各位能提出意见,我的作品不完美,经常有各种莫名其妙的问题,然后断电几个小时就恢复了。。。。。)

最新回复

我觉得现阶段不要去迴避问题,加看门狗解决一时的问题。但是很显然,出问题的因素还在。只有找到原因,才是王道。看看软件里有没有竞争冒险。看看硬件是否足够简单可靠  详情 回复 发表于 2014-10-22 09:51
 
点赞 关注

回复
举报

1万

帖子

25

TA的资源

裸片初长成(高级)

沙发
 
刚开始工作正常,后来不正常,象这种现象一般是由器件及干扰引起的。

器件质量不过关时(特别是大功率及苛刻场合)很容易出现。

这个问题也是工程师们一直寻求解决的问题。

1、选择好的器件
2、设计适当的电路及PCB。
3、程序中加入例外处理及看门狗

点评

下次做板子买些好的器件,把这些问题最小化。谢谢您!  详情 回复 发表于 2014-10-22 10:11
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
试试那个库 IEC 60730 Library,好像就是为了可靠性设计的。我没看全,里面有很多自检措施,基本能保证硬件安全。剩下的就是自己排查代码中的bug了,很多故障是隐性的,需要满足特定条件才能进入故障分支。这时候就得采用白盒分析法,特别是分析清楚在代码执行过程中产生了中断会造成什么状况。
举个例子,我这几天在写一个I2C读取数组的程序,写从设备代码的时候,由于我们不知道主机什么时候发起I2C请求,于是采用了中断法,在主循环中对数组进行更新,更新周期大概每秒1次,中断服务采用状态机方式读取数组并将其值依次发出去。
由于中断到来的时间不定,一般情况下代码是能够正常运行的,但是如果恰巧正在对数组赋值的时候中断来了,就可能产生不可预料的后果。所以考虑了半天,决定在赋值前把中断关闭,赋值后再开启中断。这样才不会发错数据。出现这样状况的概率大概是1us/1s,但是一旦出现这样的错误,可能会产生灾难性后果。所以宁可增加代码和CPU的使用率都得加上相应的保护语句。

点评

首先谢谢你的经验之谈,让我以后遇到问题有个参考。 你开头说的那个IEC 60730 Library是什么?我百度下也没百度出什么东西,哪里可以找到?  详情 回复 发表于 2014-10-22 10:15
 
 
 

回复

1万

帖子

139

TA的资源

版主

4
 
楼主的问题实在不是几句话能说清楚,说清楚得写一本厚厚的书,只能简单讲讲最核心的问题。
可靠性设计的基础是对电路、程序和系统的高度理解,这要求你对电路原理、程序编制、系统工艺性等多方面都有足够的知识积淀和认识深度,这不是朝夕之功课程,也不是看看书就能明白,这需要大量的学习和经验积累。“高手”之所以是高手,不在于其是否会用什么“高级技巧”,而是对设计品质的把握,牛B哄哄的伪高手千万不能学。
一切从最简单的元件和电路开始吧,好好重新认识,勿急于求成。这个时候,“慢”才是真正的快。

点评

如果让我三年做这个产品,我会静下心来做,除了模拟电路的低频,还要细究高频,学习PCB板的各种规避干扰的布局布线等细节。当初导师让我做这个东西一开始是让我熟悉下流程,后来看我做成了,要我能在实验设备上可以  详情 回复 发表于 2014-10-22 10:10
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

2453

帖子

19

TA的资源

五彩晶圆(中级)

5
 
我觉得现阶段不要去迴避问题,加看门狗解决一时的问题。但是很显然,出问题的因素还在。只有找到原因,才是王道。看看软件里有没有竞争冒险。看看硬件是否足够简单可靠

点评

我也觉得不能规避风险,而是去寻找应对机制  详情 回复 发表于 2014-10-22 10:16
 
个人签名    懒得很
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

6
 
chunyang 发表于 2014-10-21 22:40
楼主的问题实在不是几句话能说清楚,说清楚得写一本厚厚的书,只能简单讲讲最核心的问题。
可靠性设计的基 ...

如果让我三年做这个产品,我会静下心来做,除了模拟电路的低频,还要细究高频,学习PCB板的各种规避干扰的布局布线等细节。当初导师让我做这个东西一开始是让我熟悉下流程,后来看我做成了,要我能在实验设备上可以实验,实验成功了又要我做成产品(我们实验室的GPRS模块都是买的,他意思是自己做,这样报项目的时候可以显示下技术含量),但是实验到产品之间的道路都是细节决定的,我一个学生还没毕业也做不到面面俱到,经验还不够。问题的关键是我的毕业设计根本不是这个,我一直花时间再这边,根本来不及做毕业设计,所以被你说中了,是有点急。但是在这个论坛里和你们高手交流还是学到了很多东西,最起码我把那个东西做起来了,谢谢你们!
 
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

7
 
dontium 发表于 2014-10-21 21:48
刚开始工作正常,后来不正常,象这种现象一般是由器件及干扰引起的。

器件质量不过关时(特别是大功率及 ...

下次做板子买些好的器件,把这些问题最小化。谢谢您!
 
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

8
 
qiushenghua 发表于 2014-10-21 22:38
试试那个库 IEC 60730 Library,好像就是为了可靠性设计的。我没看全,里面有很多自检措施,基本能保证硬件 ...

首先谢谢你的经验之谈,让我以后遇到问题有个参考。
你开头说的那个IEC 60730 Library是什么?我百度下也没百度出什么东西,哪里可以找到?
 
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

9
 
zca123 发表于 2014-10-22 09:51
我觉得现阶段不要去迴避问题,加看门狗解决一时的问题。但是很显然,出问题的因素还在。只有找到原因,才是 ...

我也觉得不能规避风险,而是去寻找应对机制
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表