开源改变世界

Grbl 深度探头 #115

推推 grbl 3年前 (2023-01-21) 107次浏览

关闭
kosme 打开了这个问题 2012 年 8 月 23 日 · 7条评论
关闭

Grbl 深度探头#115

kosme 打开了这个问题 2012 年 8 月 23 日 · 7条评论

注释

Grbl 深度探头 #115

我构建了一个深度探测器,并试图在 Grbl 上为其行为编码。我想使用 Arduino 的模拟引脚 0(PORTC 引脚 0),但无法使其工作。代码是:

DDRC=0X00;
PORTC=0X00;

在 gcode.c 中,代码是:

如果(PORTC&1==true)
gc.status_code = STATUS_DEPTH;

当探针接触印刷电路板时,这应该会发送一条消息。我通过外部下拉电阻将 Analog0 连接到 GND,PCB 连接到 Vcc。

任何想法我错过/做错了什么?

Grbl 深度探头 #115
成员

Grbl 并不像大多数人所期望的那样线性工作。这意味着当一个 g 代码块被发送时,它会解析它,计划加速,并放入队列中。主要的 stepper.c 代码实际上是实时运行的。因此,只有当从用户计算机发送新的 g 代码块时(不是实时的),才会调用 gcode 中的解析函数。

在 v0.8a 中,我们创建了一个伪多任务功能(在 protocol.c 中称为运行时命令)。在这里你可以放置任何你需要 Grbl 尽快响应的东西。因此,您可能只需将“if”命令语句移到那里,并让它在检测到此引脚更改时打印出回复。

还有另一种方法可以做到这一点。您可以设置该 pin 以在 pin 更改时中断主进程,然后执行您想要的任何代码,但如果您希望它与 Grbl 的其余部分一起很好地运行,这可能会变得棘手。

Grbl 深度探头 #115
作者

不明白你建议我把“if”命令放在哪里。你介意给我举个例子吗?

Grbl 深度探头 #115
成员

首先确保您拥有边缘分支 (v0.8a) 源。在 protocol.c 中,有一个名为 protocol_execute_runtime() 的函数,将您的“if port is true”语句放在那里以测试您的代码是否有效。您可以让它执行打印语句,就像状态报告一样,向您发送一些它正在工作的反馈。

为了实现更健壮的实现,我会让您的模拟引脚设置一个中断来标记运行时命令,而不是在该函数中不断地直接检查引脚。希望这可以帮助。

Grbl 深度探头 #115
作者

它确实有帮助。现在它做我想要的。

Grbl 深度探头 #115
成员

很高兴听到!还有祝你好运!

Grbl 深度探头 #115
贡献者

天哪,我太想要这个功能了。 @kosme您是否将此代码推送到任何公开的地方?我很想看

Grbl 深度探头 #115

当我将 A5 引脚短接至 GND 以使用探针时,什么也没有发生。
是否有必须启用此功能的 $ 命令?
谢谢

喜欢 (0)