一个51单片机。 写500pcs,有7片不能正常工作。 老大让我分析原因。
问题是这样的。可以正常下载程序。但是写进去了程序后工作不正常。
我用示波器量了串口通讯。 主要是任务就是一个串口发几条命令。 发现接收端有数据过来。发送端无数据返回。 所以我就写了个自收自发程序。 发现接收和发送的数据不一致。 于是我让它定时发送数据。 发送的不正确。 于是我怀疑是波特率问题。 因为波特率是系统时钟分频给的。 这个小mcu又用的内部rc震荡。 所以我怀疑是系统时钟偏差。 所以我就又写了一个测试程序。 让系统时钟输出脚输出系统时钟的1/2.测量后果然发现有很大偏差。 应该输出3.6864Mhz,也就是0.27us。结果我测得只有0.16us。 也就是系统时钟快了。 于是写报告给老大。 老大看了后说我的方法有问题。
他说我用示波器直接量clkout脚就有问题。 尤其是用模拟示波器,会影响测量结果。
(IO口输出应该是有三极管做电平转换吧。那应该是跟内部隔离开的吧!! )
还说我测量系统时钟也不对。因为可能我的程序会影响系统时钟。
(系统时钟,就是最快频率了。MCU又没有倍频电路。我的程序在nb也不可能把系统时钟搞快吧! )
还有就是说飞利浦的片子,人家大厂。 怎么可能会出现时钟不准的问题呢!!
(这个我无语...)
让我在仔细看程序。 把串口发送的波形抓出来给他看!
总之就是不信我的。 就认为我的程序有问题。还说即便是我的这个测试的都是正确的,那也不能说明别的地方没有问题。
我是真郁闷了。各位给说说,是我们老大故意刁难我,还是我的方法确实有问题! 希望各位能多给意见。 |