开源改变世界

如何反转选择控制引脚 #84

推推 grbl 3年前 (2022-10-09) 330次浏览 0个评论
109JB 开了这个issue 2019 年 2 月 2 日 · 5 条评论
关闭

如何反转选择控制引脚#84

109JB 开了这个issue on 2 Feb 2019 · 5 条评论

注释

如何反转选择控制引脚 #84

所以我准备将我的 AVR Grbl 换成 ESP32 Grbl 并在我拥有的 CNC 改装铣床上使用。我有一件事想做,但由于缺乏 C 编程知识,我不知道该怎么做。我想要做的是反转安全门输入引脚而不是其他控制引脚。在 AVR Grbl 中,Config.h 文件包含以下内容,这将允许这样做:

//根据掩码反转控制命令引脚的引脚逻辑。这实质上意味着您可以
在指定的引脚上使用 // 常闭开关,而不是默认的常开开关。
// 注意:顶部选项将屏蔽和反转所有控制引脚。底部选项是
// 仅反转两个控制引脚、安全门和复位的示例。有关其他位定义,请参见 cpu_map.h。
// #define INVERT_CONTROL_PIN_MASK CONTROL_MASK // 默认禁用。取消注释以禁用。
// #define INVERT_CONTROL_PIN_MASK ((1<<CONTROL_SAFETY_DOOR_BIT)|(1<<CONTROL_RESET_BIT)) // 默认禁用。

我看到在ESP32 Grbl中,这已经改变了,我在cpu_map.h中看到了以下注释

与 AVR 版本不同,某些引脚不会强制进入同一端口。
因此,位掩码的使用方式不同,通常不应
更改。它们现在只是保留下来,以便
与 AVR grbl保持同步

那么,目前有没有一种方法可以只反转选择的控制引脚而不反转其他控制引脚?

如何反转选择控制引脚 #84
所有者

婚戒 评论 2019 年 2 月 2 日

控制引脚输入可以是任何 IO 引脚。当它们被读取时,它们组合成一个状态字节。system.h 定义位…

#define CONTROL_PIN_INDEX_SAFETY_DOOR   bit(0)
#define CONTROL_PIN_INDEX_RESET         bit(1)
#define CONTROL_PIN_INDEX_FEED_HOLD     bit(2)
#define CONTROL_PIN_INDEX_CYCLE_START   bit(3)

system.cpp 在读取引脚的函数中有这个

#ifdef INVERT_CONTROL_PIN_MASK
    control_state ^= INVERT_CONTROL_PIN_MASK;
#endif  

在 config.h 中,您可以像这样定义掩码…

#define INVERT_CONTROL_PIN_MASK  (1<<CONTROL_PIN_INDEX_SAFETY_DOOR) 

.. 用“|”将更多引脚组合在一起

我没有听到这样做的人的反馈,所以希望一切正常。

BTW:最近在配置机器时,我在 cpu_map.h 中放了很多定义。这样可以更轻松地在一个位置保留尽可能多的更改。

如何反转选择控制引脚 #84
作者

109JB 评论 2019 年 2 月 3 日

谢谢。我会试一试,让你知道它是怎么回事。我尝试对其进行测试,但我认为我有某种 IDE 问题,因为在更改 config.h 上的一行后,它告诉我程序超出了 esp32 的内存容量。一旦我得到排序,我将能够测试控制引脚掩码。

如何反转选择控制引脚 #84
作者

109JB 评论 2019 年 2 月 4 日

对此的更新:

我尝试将 config.h 中的反转控制引脚掩码更改为

 #define INVERT_CONTROL_PIN_MASK  (1<<CONTROL_PIN_INDEX_SAFETY_DOOR)

但这没有用。几乎我可以说它没有做任何事情。所以我做了一些搜索,并在底部的 cpu_map.h 中找到了这一行:

 #define INVERT_CONTROL_PIN_MASK   B1110		// don't change 

即使它说“不要改变”,我还是把它改成了

 #define INVERT_CONTROL_PIN_MASK   B1111		// don't change 

它适用于反转安全门销。在我看来,你修改了这个,也许忘记了。经过一些实验,我发现这个面具的顺序是:

 Cycle Start | Feed Hold | Reset | Safety Door

这是你的项目,由你决定,但我建议将任何这样的设置移动到 config.h,与 AVR Grbl 的设置方式保持一致。对于控制引脚掩码,我会在 config.h 中添加如下内容:

 // Inverts pin logic of the control command pins based on a mask. This essentially means you can use
 // normally-closed switches on the specified pins, rather than the default normally-open switches.
 // The mask order is Cycle Start | Feed Hold | Reset | Safety Door
 // For example B1101 will invert the function of the Reset pin.
  #define INVERT_CONTROL_PIN_MASK  B1111

我在 WebUI 分支中为上述(我的第一个)创建了一个拉取请求,您可以考虑加入。由于这是我的第一个拉取请求,如果您能告诉我我是否做得对,我将不胜感激。

如果您不接受拉取请求,我至少会将 cpu_map.h 中的“不要更改”注释替换为上面的掩码如何工作的描述。

我还在 cpu_map.h 中看到了探针引脚掩码,但我认为这很好,因为探针引脚可以在 EEPROM 设置中反转。

如何反转选择控制引脚 #84
作者

109JB 评论 2019 年 2 月 4 日

好吧,我想我对拉取请求做错了,因为修改的第二个文件没有通过。我还从 cpu_map.h 中删除了掩码,但它没有出现在拉取请求中。我原以为拉取请求会将我的 fork 中的所有文件与您的文件进行比较,并包括对拉取请求的所有更改。你知道我做错了什么吗?

如何反转选择控制引脚 #84
所有者

婚戒 评论 2019 年 2 月 4 日

感谢您为此所做的所有工作。

我想最初我不支持INVERT_CONTROL_PIN_MASK,然后没有清理笔记。

我会负责把这些改动放进去。我不知道你出了什么问题。

如何反转选择控制引脚 #84
 
添加标题文本添加粗体文本,<Ctrl+b>添加斜体文本,<Ctrl+i>
添加引号,<Ctrl+Shift+.>添加代码,<Ctrl+e>添加链接,<Ctrl+k>
添加项目符号列表,<Ctrl+Shift+8>添加编号列表,<Ctrl+Shift+7>添加任务列表,<Ctrl+Shift+l>
直接提及用户或团队引用问题、拉取请求或讨论

添加已保存的回复

喜欢 (0)

您必须 登录 才能发表评论!