希望这个教训,做单片机开发的朋友都不要再犯!

640?wx_fmt=jpeg

说一个我获得的教训,老板的一个朋友委托我们给他做一个小型控制器,因为要求的工期比较急,没时间做线路板了,所以我们根据他说的要求选了一个我们以前的成型产品做基础,在这个基础上改。


640?wx_fmt=png


640?wx_fmt=jpeg


同事拿着我做的控制器去操作箱上安装配线,后来调试的时候同事告诉我说装置死机了...


我说不能啊,我已经配置了看门狗,正常程序出错是可以复位的。把同事拿回来的装置通电测试果然没有反应了,重新烧写片子还能正常工作。


是不是静电搞的鬼?


因为我们的装置原来是没有按键的,这次的按键是在操作箱上接3个按钮到装置的CPU管脚上,没有保护措施,现在冬天空气干燥,很容易产生静电。


马上改!


给3个按钮都加上了光耦隔离,改好了再装到控制箱上测试,没一会的功夫同事又回来了,说又死机了。啊!?这是怎么回事呢?


我有点傻了,难道是我的程序有问题査吧,把程序从头到尾看了几个来回也没看出毛病。


把死机的片子擦了,重新烧程序还是能正常工作,这就怪了!难道是操作箱有问题?怎么在我这好好的东西上到操作箱上就死机呢?


同事干脆把操作箱从车间运到我的办公室来,让我自己做实验。果然刚烧好的片子上到操作箱上一会功夫就死机了,经过反复的实验发现是和数字表通讯之后死的,更进一步的确认是跟数字表通讯以后修改了控制器的EEPROM以后死的。去掉了控制器的写EEPROM程序就不再死机了,难道是GCC的EEPROM库有问题?先不管,看能正常运行了再说,反正这个功能不重要。重新烧写芯片,装到控制箱上,手动操作没问题!装置开始自动运行,呀!怎么复位了?是没看清吗?


再等一会....又复位了!一波未平一波又起,怎么回事?


这么个小东西程序不超过2K怎么这么多问题?我不至于这么烂吧?这么个小程序都写不好?还得试找出问题!反复试了几十次发现规律了,只要是自动状态的1号状态再和数字表一通讯就复位,是不是485通讯没加隔离的问题?动手加隔离(这里要说一下我们的软硬件是两个人负责的,我做软件,另一个同事专做硬件),我的同事刚才加了按键的隔离这回又加485的隔离,为了增加隔离电源又在原装置的基础上改了电源。改完了装上测试,还复位!天啊!我同事都不用好眼色看我了!


妈呀,我可怎么办啊?

640?wx_fmt=jpeg

从程序上怎么也看不出问题,可恶的M8不支持仿真又看不到C语言程序具体是怎么执行的。没办法只好用汇编写程序吧,这个我熟而且每一步都可控制,肯定不会再出错了,一个白天加一个晚上把程序就写出来了,第二天调试通过,上到操作箱上,天啊!又复位了!


不对!一定是硬件有问题,同事说没关系我给你换CPU板,同事又改了一块CPU板给我送来,装上一试,你们猜怎么样?还是不行!别扔白菜,我真完了 /_\ ,呜呜...我心里直哭。


突然我转念一想,不对就不能还是硬件有问题?

640?wx_fmt=png


过了大约半个小时,啊!又复位了!


这回我没紧张,肯定是硬件问题,因为我的程序C语言版和汇编版都试过。拿来示波器看看是不是复位脚有干扰啊?没有。看电源呢?啊?CPU的5V电源在复位的时候是个大低谷,持续大约50毫秒...


元凶终于找到了!

640?wx_fmt=jpeg

是这个电源质量不好,当有继电器动作,并且来通讯,电源就挺不住了。同事也没话说了,改造电源吧,给电源变压器增加容量后,再也不复位了。终于圆满结束了。


围着电源的一个小问题,我转了一大圈,把这个教训分享出来提醒大家注意。


做单片机的朋友你可千万先把电源弄好...

640?

640?wx_fmt=jpeg

1.2018年第10期《单片机与嵌入式系统应用》电子刊新鲜出炉!

2.同是嵌入式工程师,为什么有人月薪8千,有人年薪快40万?

3.编程语言 10 月排行榜:C++ 重回前三!

4.初学者如何“勾搭”STM32?

5.Arm联手赛灵思提供免费Cortex-M处理器,助力嵌入式开发!

6.程序员能靠技术渡过中年危机吗?

640?wx_fmt=gif

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。


阅读更多
换一批

没有更多推荐了,返回首页