注释
成员
我认为这样的事情相对容易做到。您可以劫持 Timer2 溢出中断来执行每个半步阶段。目前,它在主 Timer1 中断启动后完成步进脉冲。您需要做的就是跟踪它在做什么,并在每一步后重置 Timer2。 查看步进器引脚中发生的情况的最佳方法是示波器(如果有的话)。如果不是,您可以尝试调整定时器预分频器,以便您可以看到它们在 LED 上做它们的事情。 |
作者
谢谢,“时间预分频器”是线索:在阅读了一些关于如何实际配置中断之后,我能够让它运行,现在它可以正常工作(至少 LED 可以正常工作 目前,我在 4 个地方的代码周围设置了 if-guards:将 out_bits 分配给 stepping_port 和 Timer2 代码是预期的以及我之前拥有的。 如果有人对代码审查以及合并到主线感兴趣,我很乐意创建一个补丁。 |
成员
是的,我也在紧要关头做过,当时我的电路很嘈杂,我的 Easydrivers 也有问题。它似乎在中等进给率下运行良好。至于你最初的问题,我使用逻辑分析仪调试高频位碰撞的东西。现在它们的价格相当合理。我的是 Saleae,我真的很喜欢它: http: //www.saleae.com/ |
作者
我目前的设置实际上只不过是让我的脚弄湿 cnc-stuff 的入门书。稍后(阅读:几年后)我可能会变得更认真一点,甚至得到一个 logix 分析器,但不是现在 |
TunaTom,你设法让它运行了吗?那你是怎么接线的? |
我制作了一个简单的步进驱动器,如下所述:http: //arduino.cc/en/Reference/StepperBipolarCircuit
不幸的是,这种驱动器需要在半步相位(00、01、11、10)中为引脚通电,而不是 grbl 使用的步进/方向样式。
“它能有多难?” 我想到了一个新的代码路径并将其连接到 stepper.c 中,它将 out_bits 的 step/dir-bits 转换为我的驱动程序需要的相位样式位。我做的一切都是对的:作为一名 Java 开发人员,我首先用 Java 编写代码以确保它是正确的;我开发了所有测试驱动的东西,所以我可以证明它有效;我移植了测试以确保 C 代码与 Java 代码的功能相同。当然结果是预期的:没有任何效果
似乎 grbl 的位魔术与我预期的不同。
我现在对如何进行有点不知所措,因为我似乎无法通过串行编写调试消息。我什至试图将整个逻辑延迟到足以让我看到 LED 闪烁的程度,但这并没有真正起作用——它仍然是快速的方式。
我想我现在可以使用的是关于如何查看 out_bits 的实际值的提示 – 无论是通过串行控制台还是通过 LED 或其他方式。