注释
贡献者
它与引脚更改中断有关。它们按端口操作,不提供有关哪个引脚触发或如何触发的信息。Grbl 不会在引脚更改中断中检查引脚状态,因为它被误读的可能性非常小。为了硬限制和用户安全,Grbl 将引脚更改解释为硬限制事件。 |
贡献者
此外,方向引脚位于同一端口上,因为使用一个 8 位变量在步进中断中设置 IO 更容易、更快速。如果它们在不同的端口上,则需要更多代码来在对时间非常敏感的 ISR 中设置这些不同的引脚。 |
作者
这是完全有道理的,即使它确实很难为 Grbl 构建可扩展的防护罩,并且可能会限制未来的扩展。 感谢您的解释。 |
贡献者
我想,但鉴于这些天可用于 Grbl 的防护罩数量,这不是问题。Grbl 项目被有意设计为简单以促进其开发的高级部分,即实时覆盖。它从来没有被宣传为可以解决所有问题的完整解决方案。别担心,这都是宏伟计划的一部分。 |
我正在使用 Arduino Nano 构建一个混合 CNC/3D 打印机,并将 grbl 和 Teacup 作为各自的固件。它们有不同的引出线,所以我正在研究使用与两种固件兼容的通用引出线的可能性。
grbl 在 cpu_map.h 中定义了一些要求,最值得注意的是一些注释,例如
// NOTE: All direction pins must be on the same port.
这些看起来像是明确的不变量,但也有一些例如
// // NOTE: All limit bit pins must be on the same port, but not on a port with other input pins (CONTROL).
这些不太清楚。这是否意味着虽然限位开关必须位于同一端口,但限位开关和控制开关之间没有此类要求,或者这是否意味着限位和控制不得位于同一端口?
arduino 支持将模拟端口用作数字端口;例如,将限位开关移动到模拟 PORTB 以释放数字引脚以用于额外的步进器,存在哪些灵活性?