开源改变世界!!

步进脉冲关闭时间 #1

推推 grbl 2年前 (2023-01-29) 162次浏览
关闭
buildlog 打开了这个问题 2018 年 7 月 24 日 · 4条评论
关闭

步进脉冲关闭时间#1

buildlog 打开了这个问题 2018 年 7 月 24 日 · 4条评论

注释

步进脉冲关闭时间 #1
贡献者

我不确定为什么步进脉冲计时不准确。它起作用很奇怪,但不准确。这可能是由于定时器是如何打开或重新启动的。

一种解决方案可能是使用esp_timer_get_time()以微秒为单位捕获脉冲开启时间,完成中断代码并添加一个空的 while 循环,直到另一个esp_timer_get_time()达到关闭时间。我讨厌中断中的 while 循环,但它应该只有几微秒,其中一些在 while 循环之前运行代码已经过期。

巴特

步进脉冲关闭时间 #1
贡献者作者

上面提到的解决方案似乎工作正常。

我删除了关闭步进脉冲的定时器中断,并在主步进驱动器中断结束时用延迟循环替换它(void IRAM_ATTR onStepperDriverTimer()

// 等待步进脉冲时间完成…其中一些应该在上面的代码中过期
while (esp_timer_get_time() < step_pulse_off_time)
{
NOP(); // 在这里旋转直到关闭步骤
}
set_stepper_pins_on(0); // 全部关闭

常用 Grbl 设置为 3 uSecs,这也是最小值。我不确定为什么这是最低要求,但我会保留它。TI DRV8825 等常见驱动器需要 1.9uS 的步进脉冲长度。

我认为它不会影响性能,因为时间很短。无论如何,你不能比最小步进脉冲时间允许的速度更快。在那之前我没有分析过代码,但它可能会占用大部分时间。

我还没有提交代码,以防万一有人想对此发表评论。

步进脉冲关闭时间 #1
贡献者作者

作为参考,这里是 DRV8825 时序图。

步进脉冲关闭时间 #1

步进脉冲关闭时间 #1

几年来,我一直在使用 STM32 设备开发自己的 gcode 处理器。最近已经开始使用各种 ESP 设备进行遥感项目。非常愿意迁移到您的实施。

步进脉冲关闭时间 #1
贡献者作者

更改为使用上述方法。