注释
你正在做的事情看起来应该对我有用,但我自己还没有尝试过。Sonny 可能是为数不多的对代码有足够了解的人之一,但他很忙,不能花太多时间来帮助解决这种分心的问题。 当您正在处理听起来像是高度定制的版本时,这可能会引入我们不知道的各种复杂性,我建议您采用标准的 1.1f 代码(最好是在 328P 上)并进行最小的更改来测试这个一点逻辑。 |
顺便说一句,如果这是由按下按钮触发的,您是否实施了某种去抖动和反重复处理?否则,您可能会在释放按钮之前多次设置该覆盖标志。 |
谢谢@electrokean. 我很忙,但我仍在尽力回答问题。 @dastultz: 你在做什么应该工作。我不清楚为什么不是。它不应该的唯一原因是新计算的覆盖与当前的覆盖没有什么不同,或者您正在中断内调用 protocol_execute_realtime() 函数(这种方式不起作用)。 |
我正在轮询主循环中的按钮,不涉及中断,并且正在对它们进行去抖动。 如果你说它应该有效,那么我会坚持下去。给我一个星期的时间来解决这个问题,我会用我的发现更新这个问题。 谢谢。 |
好的,我发现代码确实有效,但它非常参差不齐,所以我一定是早些时候错过了它。如上所述,我从 当然我可以在中断时设置我的按钮,但是去抖动要复杂得多(对我来说)。是否有一个安全的定时器中断例程,我可以利用它来调用我的服务例程? |
感谢更新。执行可能暂时不会回到主循环。如果它已满并且在添加下一行动作之前必须等待它清空,我可能会被规划器阻止。参见 mc_line()。 |
您好,我正在为我的硬件定制 GRBL,一台 Sanguino/644p CNC 机器。我有许多按钮和一个用于慢跑和覆盖的滑块(pot)。我已经进入
protocol_main_loop
运行我的代码。我慢跑效果很好。我试图按一下按钮发出覆盖命令。我认为这会很简单。我在 ISR 中看到serial.c
传入的 RT 命令导致调用system_set_exec_state_flag
. 所以我试过了,但它似乎没有用。我想也许事情可能会在下一个循环的顶部重置,所以我尝试protocol_execute_realtime
在行为没有变化的情况下调用。考虑一下:打印语句在控制台中可见,但不会发生覆盖。
从 GRBL (1.1f) 中触发快速/进给覆盖的最佳方法是什么?
谢谢。