电子工程师的工作学习中,难免遇到各种问题。这时的你是怀疑人生无从下手,还是调整心态冷静排查呢?
说说遇到硬件、程序问题时有趣的心路历程,将随机选取一位赠送50元京东卡!
首先!邀请问答达人:我是假管贴胸小助手 为大家抛砖引玉!
别的不说,就说说前几天我调试IIC程序时遇到的问题。刚开始读取IIC从机时,起始信号和应答信号都正常,发送指令字节也正常。但读取数据时一直读取错误。
一时搞不清什么原因导致的,只能一再调试延时时间。最后经过查看数据手册才知道,原来IIC协议中还有一种叫做时钟延伸的问题。即在主机(单片机)读取从机(传感器)的时候,如果从机没准备好数据,会把时钟引脚拉低,直到数据准备完毕才会释放时钟引脚。此时才可以进行读取。
此时我才终于调试成功。在整个过程中,一直以为是延时时间和时序不对,一直在调整时间和引脚电平的初始状态,最后实在没办法才去看手册。期初以为仅仅是读取一个简单的数据,就只粗略看了一下指令部分。真的是经历了吃亏吃苦,才真正体会了看手册的重要性。
其实最近更多的是涉及纯软件的应用。
开发这些程序时,一般个人习惯是多输出一些信息,方便快速定位问题。
原来写一些程序处理文本信息的,结果老是有不对的地方,跟踪了好久,才发现是bash环境对字符串分隔问题,默认分隔是包括空格、回车等等,后面强制只认回车作为分隔符就好了。
同样处理文本数据,还要考虑兼容不同环境回车符问题,这个也是比较麻烦。
其实,遇到问题的时候,自己一直找不到问题的关键的时候,那段时间是最难熬的,吃饭吃不香,睡觉睡不好,还被领导各种催。
我的经验是,找个人,让他一起帮你分析分析。
你找的这个人不是关键(不论他是大牛还是新手),其实很多的时候,在你想把你的问题给对方描述清楚的时候,或者在你和他的一问一答的时候,你已经就发现了问题的所在。
这就是传说中的灯下黑!
嘿嘿:还有一种方式,那就喝点酒,在你半醉半醒之间的时候,去写程序,说不定有奇效,这个方式,在我周边还真有这样的案例(我们也经常拿这个梗来开玩笑)。
最后,来点鸡汤:总之,现在我们遇到的任何程序上的问题,最终总会找到办法去攻克它,只是时间的长短而已。
1,通讯程序,调不出来,可以尝试用示波器看波形,嵌入式,或者单片机,时序图是非常重要的工具。
2,有一种坑,中文手册是错误的,对照英文手册才能知道什么是正确的。
3,有一种坑,好不容易熟悉了一种MCU,停产了。
4,微软的坑,VS提供的控件是有BUG的。微软自己的操作系统一天到晚的打补丁。BUG一堆。
心情是复杂的,但是问题也总是要解决的。