首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ds18b20.lua任务饿了吗?

ds18b20.lua任务饿了吗?
EN

Stack Overflow用户
提问于 2020-04-28 20:50:35
回答 1查看 20关注 0票数 0

我在引脚D3上连接了一个ds18b20传感器,在引脚D1上连接了一个霍尔传感器。我在引脚D1上使用tmr.trig来计算下降沿事件。当我调用ds18b20:read_temp(callback, pin, ds18b20.C)时,一切都按预期运行。

当来自霍尔传感器的中断开始到达时,奇怪的事情开始发生。每秒仅中断一次就足够了。read_temp挂起,没有调用回调,我也没有得到任何读数。过了一段时间,对read_temp的大量调用堆积起来,esp8266就会重置。

我将这个问题追溯到ds18b20.lua的205行

代码语言:javascript
复制
if lcb then node_task_post(node_task_LOW_PRIORITY, lcb) end

如果我用node.task.HIGH_PRIORITY替换node_task_LOW_PRIORITY,这个问题就解决了。这看起来像是调度器正在抢占低优先级的任务。

我在想我是不是做错了什么?或者这是一个bug?中断是否会干扰node.task?

EN

回答 1

Stack Overflow用户

发布于 2020-04-29 00:38:11

我回答我自己的问题。我找出了干扰这项任务的因素。这并不是中断本身,而是在回调函数中调用gpio.serout。如文档中所述:

硬件定时器FRC1_SOURCE模式用于更改状态。由于只有一个硬件定时器,因此可以同时使用哪些模块有限制。如果计时器已在使用中,则会引发错误。

事实上,我确实收到了一个错误,但无法读取,因为它在串行终端中打印为胡言乱语。

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

https://stackoverflow.com/questions/61480597

复制
相关文章

相似问题

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