Excel文件格式:xls或xlsx
检查的文件:a.xlsx
删除行后生成的新文件名:anew.xls
删除条件:第二列中值不是“OK”
删除行:不符合条件的所有行
https://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas-bsp.git/
最近,做了一批板子,不像以前的板子一样,工作不正常。
花了将近5个工作日,终于把问题原因找到了:就是这个RC电路造成的。
如下图所示的电容滤波电路,在应用中很常见。
如果电容值选择不合适,会导致问题比较麻烦,特别是系统中还使用了看门狗电路。
下图是使用的系统构成框图。
有三部分:MCU电路,看门狗,模块。
MCU的复位由硬件看门狗提供。
看门狗的喂狗由MCU来完成。
模块的电源由MCU的一个IO口控制,缺省不上电。电路中电阻R0用于给电容提供放电回路。另外,模块的供电电源电路是厂家推荐电路。
基本工作流程: MCU工作后,初始化IO口,然后根据需要设置IO口,打开MOS管,给模块供电。同时,喂狗。
使用中,发现部分板子能够正常工作,大部分板子不能正常工作,用示波器检查看门狗的输出,发现:周期性的输出复位信号,但是该周期又不是看门狗芯片手册中的周期信号,其周期比不喂狗的周期短很多。
上电后,MCU工作。当打开MOS管给模块供电时,瞬时先对电容充电,充满到模块的正常工作的阈值后,模块可以工作。
但是,这个瞬时充电会导致3V3的供电电压有个波动。
由于看门狗的检测电压阈值是2.93V,当这个波动使得3V3跌落至2.93V以下时,看门狗就会输出复位信号,复位MCU。
然后,MCU有重复上面的过程,打开MOS管供电。。。
。。。
看门狗周期输出复位信号。
模块被周期上电。
。。。
减小电容的值(4.7uF -> 0.1uF),从而减少波动,即减小电源电压跌落的幅度。
使得电源跌落幅度维持在看门狗检测的阈值(2.93V)以上,这样,看门狗就不会输出复位,从而保证MCU正常工作了。
以前用同样大小的电容(4.7uF)从来没有发现问题,为什么这批板子就出问题呢?
回头再仔细考虑这个问题,发现并不简单,还有更深层的原因:采购。
这批板子采用的是新购买的电容,从淘宝上购买的,当时也没有要求精度。
测量后发现其值大概是5.9uF左右,与设计的4.7uF(原来是用的大厂的料)差距还是不小的。而原来采用的电容值还是比较靠谱的。
同时,也说明了一个问题:原来设计的4.7uF使系统工作在一个临界状态。
以下两点需要注意:
采购物料时,一定要从大厂采购,同时标明精度,如%1。
设计系统时,一定要留有余量,不要让系统工作在一个临界状态。虽然这种临界状态不好获知。就像电影《疯狂的石头》中,那个来自国外的“高手”在中国购买的登山绳长度就没有考虑余量,所以被坑了。
完成一个项目开发后,有关团队软件开发一些记录。
先尽可能多的了解要处理的任务,再启动编程。
分层设计代码,最好用现成的框架(framework)。
项目规划,模块化设计程序,能更灵活的适应新的需求变化。
一定用版本管理系统,如svn,git等。
先启动任务的主干,暂时抛弃不理解的部分,边做边加不理解的部分。
伪代码编程的使用。
开始编程前,编码格式规范的制定。
- 不使用魔鬼数字,使用具名常量代替。
- 状态变量只在状态机中改变。
- 好的代码、变量、函数命名本身就是注释。
- 等等
如果程序乱飞,有可能是堆栈溢出造成的。
调试方法:
- Error code变量引入。
- 输出错误信息。
- 显示错误信息。
- 等等
团队编码(peer to peer)以及SVN、git、eclipse等工具的使用(标签与分支,checkin,checkout)。
及时沟通、交流。
最后,多读书。推荐这3本:《代码大全》、《人月神话》、《编程珠玑》。