刚刚入行做一款电子设备时,画图时,把ADC的输出LSB与MSB与单片机的P0-8口连接搞反,如同网上搜到的这张图,
当然,schematic中U3的封装表达也不好,LSB,MSB与数字序号反了,所以连接线也就成了LSB连接到了P0.7(AD7)
而另外一个网上搜到的,要规范的多:
D7符合标识MCU的P2.7;D7也是schematic中ADC模块中的一个符合,标识清楚,不会犯错,软件写起来也顺利!
而上面搞反的,高位和地位的数据要反过来,才是正确的ADC输出。
怎么实现呢:1,改硬件,割线飞线,硬件的LSB、MSB与单片机的P.0与P.7一一对应起来。2、软件补偿,软件数据处理时,将数据顺序反向即可。
当时,软件的调试工程师告诉我反了,我核对后也认可确实反了,心里还非常紧张,又要改板子了?割线和飞线?很快软件工程师说,算了,你别动了,我程序上想办法吧。一下子,我就明白了,有些硬件的故障,软件可以补的,特别是类似于数据顺序类型错误,软件调整更方便,当然也有一定的代价,运行时需要消耗资源,周期时间变长。
最牛的软件错误硬件补,是Intel的Pentium系列CPU的硬件错误,这个错误的发现很有意思,
详见:一道数学题,让芯片巨头亏了5亿美金!电子工程专辑公众号上有,写的很详细,很形象,很有意思。
也可以看链接:https://m.163.com/dy/article/HDBS4JIN0538B4E3.html
数学家为了计算“布朗常数”,用计算机暴力破解,导致发现新旧计算机结果的差异,最后用了4个月的时间,确定了问题是新的Pentium“奔腾”处理器上。
而这种错误,被发现的概率只有90亿分之一,且由于Intel的傲慢,导致数学家开始四处宣传!
然后各行业的牛人,程序专家、CPU设计专家确定了问题的根源,而且事实确实如此!
最后登场的MATLAB之父,不但最后接过了接力棒,反而将其捧成了奖杯。竟然开发了补丁,发表了《MathWorks修复了Intel奔腾浮点数Bug》,补丁免费让用户使用。
看看,这波为大众搞技术谋福利,最终成就了MATLAB的狂欢和营销的大好机会!
这恐怕是硬件错误软件补的最高境界了!
作者: 追忆流年寻梦少年, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-855000.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论