注释
好像找到了解释: http: //picprog.strongedge.net/step_prof/step-profile.html |
使用 ARM Cortex M3 的 Keil 模拟器对等式 6 和 7 进行了模拟计时,得到:3.17us,这是针对非优化代码。DUE 和 ARM 内核的优点在于您可以确定中断的优先级。较高优先级的中断将中断较低优先级的中断。您可以将 Stepper.c ISR 设置为最高优先级,它只输出步进脉冲并更新时序,然后它调用一个较低优先级的软件 ISR 来为下一个脉冲时间进行所有计算。意味着您可以获得微秒级的精确脉冲。 |
为了完整起见,我在 ARM Cortex M4 上用浮点单元模拟了等式 6:333ns。当我为 M3 优化时:2us。他们非常快。两种情况下的时钟均为 84MHz。 |
是的,Uno 的缺点之一是 USB 端口比步进器获得更高的 INT 优先级,这是相当落后的。这就是为什么您不能在机器运行时查询各种参数的原因,因为串行 IO 可能会进入等待循环并扰乱电机控制。 ARM Cortex h/w 的价格与 UNO 大致相同,而且至少在几乎所有方面都更强大。 |
@Moffy: 感谢测试结果。巧合的是,我一直在研究下一个规划器,所需的数学似乎确实需要像 Cortex-M4 这样的东西,而不是 M0。特别是,如果我想为未来的进步留出一点喘息的空间。 在大多数情况下,Grbl 的限制不是中断或优先级。这是小型 8 位 AVR 处理器可以计算一切的速度。而不是纳秒,像 sqrt() 或 cos() 这样的计算每次都需要 0.25 – 0.4 毫秒。这几乎是荒谬的慢。令我感到惊讶的是,即便如此,Grbl 仍然能够为大多数应用程序提供服务。 |
是的,像那样在硬件上执行三角函数非常慢。 GRBL 有一些巧妙的优化来完成所有处理并设法保持可观的脉搏率。令人惊讶的是,它在如此有限的硬件上却能做到如此出色,甚至还有一点空闲代码空间。 我很高兴也能为 L6474 堆栈在其中压缩一些 SPI,认为这将它推到了闪存的最后几个字节。 将串行接口作为最高优先级有点不幸。幸运的是,我们现在有大量便宜的选择。强大的硬件。 |
@Moffy你是怎么用Keil模拟ARM Cortex M3的?你能给我一些提示或代码吗?PS:我是初学者:) |
我附上了 Keil 的项目文件。我不再使用它,因此无法提供进一步的建议。希望能帮助到你。 |
嗨,莫菲,非常感谢!最好的问候安迪
|
我一直试图理解 GRBL 运动代码,所以我回到 v0.6,因为它更简单一些。我还必须计算出基本的运动方程式,这样我才能理解正在编码的内容。我附上了备忘单:
motion.pdf
我对 GRBL 不确定的是它如何计算步进器计时。看起来加速度的计算方式是:Fnew = Fold + DeltaF(acceleration),F 是频率,对吗?