首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DS18B20温度传感器转换时间

DS18B20温度传感器转换时间
EN

Stack Overflow用户
提问于 2015-11-30 05:05:35
回答 1查看 1.8K关注 0票数 0

我正在研究DS18B20 temp传感器的实现。代码运行良好。但是有一个与“转换时间”相关的问题。

芯片数据表指出,在发出"start_conversion“命令后,我应该等待给定的时间(数百毫秒),然后才能继续读取数据寄存器(以获取温度)。

我看到的是,这是我的问题,我不需要等待。我的代码运行时使用750ms或0ms作为等待时间。数据寄存器有一些值,我可以毫不费力地获取它们。

那么它是如何工作的呢?我到底要不要等。如果等待时间比所需时间短,那么数据寄存器中的数据是什么?

我个人的想法是,我不需要等待,我可以等待这个转换。但我可以随时读取寄存器,但只能获得最新存储的温度。可能不是我在几个时钟周期前要求开始转换的那个…

EN

回答 1

Stack Overflow用户

发布于 2015-11-30 14:33:09

您必须等待转换完成。但执行此操作的标准方法是读取最后一个结果,然后开始一个新的转换,以便稍后读取。

代码语言:javascript
复制
loop
    start conversion
    yield for at least 750 ms
    read result
    loop

注意,代码读取结果,然后立即跳到循环的顶部以开始下一次转换。

这就是你的代码要做的吗?

响应评论进行编辑:

挂起CPU是一种糟糕的方法。这就是为什么我建议不要这么做的原因。

至于在转换过程中读取温度值,除了TH和TL之外,我看不到其他内部寄存器。对我来说,这意味着随着转换的进行,这些寄存器的位将从高位变为低位。如果您在转换过程中读取,您将获得高位的当前值,但低位的过时值。这意味着你会得到很差的精度,并且可能会得到非常错误的结果。

例如,旧的结果可能以0111111结尾。如果新的结果稍微高一点,那么它可能会以1000000结束。在转换过程中,结果将保留1111111,这比新旧结果都要高得多。

在转换过程中,单元似乎响应为0。您可以检查是否可以安全地读取值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33988121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档