注释
|
你错过了 #ifndef 中的 n。 |
|
不,我没有错过’n’。FWIW,我使用了常规的#ifdef 而不是#ifndef,因为我认为阅读源代码的人更清楚。 我确实错过的是,在 ‘328 版本上,您假设(或者我从 cpu_map.h 收集到)CONTROL_FEED_HOLD_BIT 和 CONTROL_SAFETY_DOOR_BIT 将始终相同。 在 mega 上,它们不是……并且考虑到它们作为两个单独的项目在配置标头中,有人尝试单独映射它们并不是不合理的……所以我认为代码的主体应该处理这个问题大小写正确(这可以通过预处理器完成;所以它不应该对 ‘328 版本的闪存占用空间产生影响。 顺便说一句,grbl-mega 的官方发行版仍然有在#543中修复的损坏的 ISR 考虑到上述……也许更像这样的东西是适用的:
这将被添加到 cpu_map.h 大约第 91 行左右的地方:
|
|
在 Grbl 的 328p 版本上,是的,由于缺少可用的销,安全门销取代了进给保持销。它是为请求此选项的供应商特意以这种方式编写的。 |
|
我可以稍微清理一下以避免将来混淆,但 config.h 确实声明进给保持销充当安全门开关。我从来没有打算让用户在这个版本上有单独的进给保持和安全门输入引脚。 对于 Mega 分支,如果我没记错的话,安全门销和进给保持销位于不同的销上。所以这个问题在那里没有实际意义。 至于更新 Mega 分支,是的,它有点落后。我打算在审查和发布此双轴功能后更新所有内容。 |
|
嗯……好吧……
好吧,如果 ENABLE_SAFETY_DOOR_INPUT_PIN 在 grbl-mega 上不存在……所以……我想我们可以这样做吗? 我将从我的 fork 中完全删除它,为了让你更容易,我将为 grbl-mega 生成一个新的 fork 和 pull 请求,它修复了 ISR 和配置文件(我现有的 fork 已经偏离了很远官方 grbl-mega 的一部分,我认为在那里创建一个新分支不会很容易……因此新的分支只是为了制作旨在返回到主要官方存储库的补丁)。 在 ‘328 上,目前我认为最好删除 CONTROL_SAFETY_DOOR_BIT,并在代码主体中 CONTROL_SAFETY_DOOR_BIT 出现的地方;用 CONTROL_FEED_HOLD_BIT 替换它…这将删除 CONTROL_SAFETY_DOOR_BIT 作为重新固定的诱人目标。 这看起来合理吗? |
|
在 Mega 分支中,ENABLE_SAFETY_DOOR_INPUT_PIN 出现在 config.h 中是对的,但它没有做任何事情。已为下一次推送到 Mega 分支而删除。无论如何,正如我告诉过你的,代码本身是正确的,并且为每个代码假定了单独的引脚。所以,再次,讨论点。 随意对你的 Grbl 分支做任何你想做的事。这都是开源的。我会继续做我认为适合这个回购协议的事情。 |
|
看起来 FeedHold 引脚没有行为(常开),这对于 SAFETY_DOOR_InterLOCK 类型的场景是不安全的(接触松动或电缆被老鼠咬伤会使安全互锁失效)。赋予它 NC 行为的最佳方法是什么?在 config.h 中启用 ENABLE_SAFETY_DOOR_INPUT_PIN 会实现这一点吗? |
|
等待回复。限位开关具有配置为 NC 的选项。这个发送到 FeedHold 引脚 A1 的 Safety_Door_Interlock 信号怎么样。如何赋予此信号 NC(常闭)行为?GRBL 中有任何选项吗?任何代码更改都会实现这一点? |


来自 config.h:
好的,但是在 system.c 的 ISR 中它似乎禁用了进给保持输入引脚,并启用了安全门输入引脚?
在我看来,为了遵循 config.h 中的文档;它应该是这样的:
所以…
还; 基于记录的 ENABLE_SAFETY_DOOR_INPUT_PIN 行为;它的名字似乎不好……也许它应该是这样的
MAP_FEED_HOLD_INPUT_TO_SAFETY_DOOR_BEHAVIOR?这有意义吗?