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条回答
正点原子
1楼-- · 2019-10-11 14:07
帮顶
嘉之叹息
2楼-- · 2019-10-11 15:09
正点原子 发表于 2016-1-23 19:46
帮顶

今晚终于做出来了,看似简单的程序,不细调也做不出来。
今天早上,凑合写了一个延时函数,通过DEBUG,设断点看延时函数的实际精度,
调好之后,再用新的延时函数替代,结果还是。。。
没办法,认真把DHT11的通信时序和原子哥的程序看懂,发现原来程序对延时的精度要求很低
昨晚做出的假设被否决
今晚,再从其他地方找问题,发现是UCOS引起的,加上OSIntEnter()和OSIntExit()读数就正常了;
好烦!对ucos还不熟悉!!!
徽客
3楼-- · 2019-10-11 19:18
你好,我碰到的问题和你一样!请问OSIntEnter()和OSIntExit()加在什么位置
嘉之叹息
4楼-- · 2019-10-12 01:10
 精彩回答 2  元偷偷看……
襟铭心缘
5楼-- · 2019-10-12 06:56
本帖最后由 襟铭心缘 于 2016-3-12 16:17 编辑

我也遇到这个问题,但OSIntEnter()和OSIntExit()不能在任务级函数中调用,得加在中断函数里。目前发现ds18b20用起来没有出现读数据错误的情况,dht11我实在找不到数据读不出来的原因
嘉之叹息
6楼-- · 2019-10-12 11:17
襟铭心缘 发表于 2016-3-12 13:53
我也遇到这个问题,但OSIntEnter()和OSIntExit()不能在任务级函数中调用,得加在中断函数里。目前发现ds18b ...

不是遇到读不上数据都是这个问题。。。先看看波形对不对把

一周热门 更多>