step 和 dir “在自己的端口上”是什么意思?

3D打印 电子产品 固件
2021-05-15 05:39:41

兰博板的维基页面提到:

步进和方向引脚位于其自己的端口上以实现同步运动能力

这是什么意思,它如何影响打印?我需要特殊的固件才能利用这一点吗?

1个回答

AVR 微控制器的“端口”是一组 8 个 IO 引脚,它们在硬件级别一起控制。底层机器码可以写一个完整的字节来一次设置所有 8 个引脚的状态。因此原则上,RAMBO 板上的所有步进引脚都可以完全同时触发。

Arduino IDE 通过将端口的字节处理抽象为每个单独引脚的函数调用,从而对固件隐藏此行为。这意味着程序员只需要知道 Arduino PIN 码,而不是处理器上正在使用的端口和位置。然后,兰博通常使用的现代固件做了进一步的抽象层,通过更改配置文件(通常是 pin.h)中的引脚分配名称而不假设任何特定的端口选择是在电路板设计期间进行的。

对于开源固件,无法保证在硬件中进行了特定的引脚选择。许多 3D 打印机控制器板甚至有非常愚蠢的引脚分配,例如使用具有硬件 PWM 功能的引脚作为步进信号而不是 PWM 加热器。在这方面,Marlin 和 Repetier 选择了灵活性而不是性能优化。他们几乎让电路板设计师使用任何引脚来做任何事情。当他们必须执行诸如运行加热器 PWM 控制或尽可能快地发射一堆阶跃脉冲之类的操作时,他们会在软件中进行模拟,而不是利用并非总是可用的特定硬件。

在这种特定情况下,实际上可能没有那么多的性能增益/损失。写入输出引脚非常快。同步发射几个步进脉冲或顺序发射它们之间的时间差量级为几微秒。这不会对打印机物理传动系统的运动保真度产生任何影响。参与兰博设计的人只是认为它可能有用,并在 Wiki 页面上引用了它(在第一次上传时!)并且从那以后的几年里它从未被澄清或从 Wiki 页面中删除。