描述:
同时测试了好几个板子,都接了DS18B20传感器。但,有的板子读取的DS18B20温度值正确,有的读取错误。
原因查找:
以为是有的传感器坏了,但测试后发现并不是。
又以为是DS18B20需要的启动时间长,因此在给DS18B20芯片供电好长一段时间后,才启动采集程序,但结果还是错误。
但在找问题的过程中,发现调试时的暂停会导致读出正确的DS18B20结果。
因此,怀疑是延时的问题。
解决:
所以在程序中连续读取10次DS18B20数据,并把数据打印出来查看,结果发现:前几次读取的结果是错误的,之后读取的结果就都是对的。
虽然解决了,但并没有找到根源,不求甚解吧。
在此,也记录下之前的一个针对错误的处理语句(已经看不明白当时为何要这么处理了,但感觉该处理目前似乎用不上了,因此删除掉了)
if ((fabs(g_fSoilTemp - 85) > 1) && (fabs(g_fSoilTemp - 127.9) > 1))
{ break; }