开源改变世界!!

hal.port.digital_out 导致挂起 #42

推推 grbl 2年前 (2023-02-08) 208次浏览
关闭
5ocworkshop 开了这个issue 2021 年 7 月 25 日 · 6条评论
关闭

hal.port.digital_out 导致挂起#42

5ocworkshop 开了这个issue 2021 年 7 月 25 日 · 6条评论

评论

hal.port.digital_out 导致挂起 #42
5oc工作坊 评论了 2021 年 7 月 25 日  

我正在开发一个使用 Output_Aux 行的新插件,但是当我解决它们时它会挂起代码。

我能够使用标准的 Arduino pinMode 和 digitalWrite 命令写入引脚,它们的行为符合预期——因此电气路径是正确的。

这是让线路变高的正确语法吗?

hal.port.digital_out(Output_Aux0,真)

(编辑:我想我发现了错误,点上方的注释指的是 true 但实际命令需要一个 bool 并且它说 on。但是没有定义“on”但是定义了“On”和“Off”。探索现在。)

也,我还没有找到它,但我假设输出引脚在某处设置为输出模式,或者我应该初始化它们吗?

hal.port.digital_out 导致挂起 #42
作者

我想也许在 bool 的情况下有一些我不熟悉的独特之处,但我已经确认没有任何一对 true/false、1/0 或 On/Off 起作用。是的,我知道他们都应该评估为等效,只是试图戳它看看我是否能得到不同的结果。

在端口通过 HAL 命令可用之前是否需要设置步骤?

hal.port.digital_out 导致挂起 #42
作者
5oc工作坊 评论了 2021 年 7 月 25 日  

多逛了一下。我最初是在我的新模块中进行测试,但将测试移至冷却剂控制功能,以便我可以使用 M7 和 M9 来触发事件。我注意到我没有在 coolant_control.c 中包含 driver.h,所以我添加了它,我可以看到 Output_Aux0 的计算结果为“82”。然而,结果是一样的。该命令挂起系统。

我在运行命令之前手动设置 pin 输出,直到我可以确认 init 发生在其他地方。

在 driver.c 中,我可以看到 .pin = AUXOUTPUT0_PIN 正确解析为我期望的 pin(源自 my_machine_map.h)。

hal.port.digital_out 导致挂起 #42
作者

查看 fan.c 中的语法,我认为这应该有效:

hal.port.digital_out(0, true);
延迟(1000);
hal.port.digital_out(0, false);

但它也挂板。

我也有点困惑,当我们拥有带有人类可读名称的整个 xbar 时,我们正在使用整数来指代端口。也许我误解了 HAL 的工作原理,但我认为按名称进行查找会提高可读性?

hal.port.digital_out 导致挂起 #42
作者

谜团已揭开。我的 my_machine_map.h 缺少以下行:

#define HAS_IOPORTS

最好在调用 digital_in 和 digital_out 时进行错误检查,以确保 ioports.c 模块已编译并正常输出到控制台。目前我对代码还不够熟悉,无法提供补丁,但我希望能加快速度并为未来做出贡献。