DHT11读数一直为零

2019-10-11 13:43发布

最近调试DHT11,但返回值一直为零。
使用原子的程序,测试硬件,读数正确。
然后,把该测试程序移植至大程序,读数一直为零。
观测 DHT11最原始的数据,发现条件buf[0]+buf[1]+buf[2]+buf[3])==buf[4]一直不能满足
同一环境条件下:
测试程序的测量数据:      1C 00 19 00 35
移植进大程序的测量数据:21 00 34 00 EF  
相同的驱动程序,单总线通信接收数据差异比较大,初步判断是延时函数的问题
大程序使用了与原子不同的延时函数(这是前人所做的工作)
延时函数改与不改都很纠结!!
有什么简单的替代函数吗?
怎样检测延时函数的准确性?
如何用示波器捕捉DHT11的通信过程?
求大神帮助








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
嘉之叹息
2019-10-11 15:09
正点原子 发表于 2016-1-23 19:46
帮顶

今晚终于做出来了,看似简单的程序,不细调也做不出来。
今天早上,凑合写了一个延时函数,通过DEBUG,设断点看延时函数的实际精度,
调好之后,再用新的延时函数替代,结果还是。。。
没办法,认真把DHT11的通信时序和原子哥的程序看懂,发现原来程序对延时的精度要求很低
昨晚做出的假设被否决
今晚,再从其他地方找问题,发现是UCOS引起的,加上OSIntEnter()和OSIntExit()读数就正常了;
好烦!对ucos还不熟悉!!!

一周热门 更多>