电路调试有“三毒”——“贪” “嗔” “痴”

第一毒——“贪”,希望获得与保有,但终是受挫。

在很多时候,拿到刚刚完成贴装寄回手上的新电路板,做的第一件事情往往是接通电路,看看有没有预期的表现。在我刚刚接触电路设计工作不久的时候,我在此时往往期待的是一个非常明确的表现,恨不得屏幕上立即显示正确的结果;但是往往是一堆乱码,甚至是什么都没有。

在电路没有被实际生产出来之前,我总是很希望自己的设计是天衣无缝,面面俱到的 ,所以对新设计的期待很高。总是所有跳过的调试阶段直接观察最终的输出。好像最终输出正常就表示电路没有丝毫问题,而没有正常的输出往往会让人觉得很失望。

实际上难以发现和处理的问题往往隐藏在完全正常的最终表现之后。当我们看到一个符合预期的最终结果的时候,清晰的思路往往会被骄傲和庆幸占据而不再去关注不易发现的细节问题,抱着侥幸的心态说没有什么问题了。实际上这种心态是内心深处对自己设计的不自信,以及对解决未知问题的惶恐,急于试图遮蔽自己的双眼,对问题视而不见。

在最终输出正常的情况下,即使发现了电路细节上有不符合自己预期的地方,我有时候仍然会想到要把错误归结到仪器使用的问题,焊接问题,未知的干扰源(比如电网干扰)甚至是宇宙射线的影响;生怕深入挖掘这个问题的时候会发现更多的问题使当前的“正常”化为乌有。

有时候最终输出结果是错误百出的,完全不符合预期的;在这种时候反而给我们很多线索,只要抓住这些线索,分析产生现有输出的原因,反倒很容易发现错误的根源并且加以解决。

第二毒——“嗔”,因无法得到和控制产生烦恼与仇恨。

电路没有正常工作,一般就要开始采取各种行动来探究它罢工 的原因。当我打开示波器,万用表,频谱仪,信号发生器,可调电源;花费半个小时拆解了机壳,卸下螺丝,焊上测试用飞线之后,有时候会发现输入是正常的,电源是正常的,配置也是正常的,就是输出不正常……

好像我能量到的其他地方都挺正常,但是信号进入芯片/模块之后,就再也没有好好出来;我摸摸芯片,它默默的不做声,可能会有点发热,但是也只是比环境温度高一点点。于是我开始想是不是这个芯片坏了,你用一个新的芯片替换它,但是电路仍然故我,保持罢工。

这时候有一种无名的怒火从我心中升起,我测量每一个测试点,看着各种电压/电流/频率/功率,但仅仅是盲目的测量,希望看到什么线索。但是所谓线索即所谓异常的现象,都是相对于正常的现象来说的,而心中焦躁愤怒的情绪往往使人无法集中注意力思考看到的现象和期望之中的区别。

情况更糟的时候,你会认定是某个器件坏了,仿佛这就不是自己设计或者设备生产时的问题,而是元器件供应商的责任。但是事实上,经过出厂测试的商用芯片真正出现质量问题的可能性并不是那么大,当我反复测试芯片/模块本身性能之后往往得到的就是“它工作正常”这个结论。

“世界上没有不可思议之事,世界上只会发生可能发生之事。”

当每个器件都工作正常,但是系统整体发生问题的时候,那只能说明在系统设计的时候出现了问题。这种问题往往是因为对整个系统的运行考虑周全和深入理解,或者是对元器件的工作原理和性能的了解还不充分。这个时候就更需要冷静的心态,暂时放下抱怨和急躁才能找到那关键的一点灵光一现。

第三毒——“痴”,因对法界不如实知见,故作颠倒之行。

调试不仅仅是要发现问题而且还要让问题得到解决和消除。发现异常仅仅是起手第一步,之后是分析异常的本质。然而,人往往有惯性的思维希望依赖过去的经验快速地解决问题。然而绝大部分时候过去的经验并不一定能很完美的解决一个现有的特定环境下的问题。只有掌握现象背后的原理,才能举一反三。

一个很简单的例子,在给高速数字芯片加去耦电容的时候,很多人都知道需要加“一个大电容和一个小电容”,问起原因有些人会说滤除电源系统上的噪声。实际上即使直接采用电池供电(电源非常稳定,没有开关噪声)的系统当中,高速数字芯片附近仍然需要去耦电容,这些电容的存在是为了提高电源对芯片的瞬态输出能力。

当数字芯片的内部时钟边沿触发逻辑翻转是需要在瞬间从电源吸取比较大的电流,这时需要电容来提供一个“本地”的瞬态电源,以克服电源到芯片之间导线上的寄生电感和电阻的影响。如果盲目的认为电容总是用来滤除噪声的,就会出现确实使用了两个电容,但是却用了比较长的导线布置在了远离芯片的地方之类的错误。

在遇到调试问题的时候要睁大双眼,同时也要扫除心理的惰性和对已有经验的依赖,从客观的角度分析问题。扎实的理论根基可以助人消除迷惘,同时利用从每一次的调试的机会也可以学到很多新的经验和隐藏在背后的知识。

本文转自:玩转单片机