开源改变世界

RMT_STEPS mem_block_num 和步骤反转 #318

推推 grbl 3年前 (2023-01-30) 175次浏览
关闭
khnrchs 打开了这个问题 2020 年 1 月 18 日 · 2 条评论
关闭

RMT_STEPS mem_block_num 和步骤反转#318

khnrchs 打开了这个问题 2020 年 1 月 18 日 · 2 条评论

注释

RMT_STEPS mem_block_num 和步骤反转 #318

您使用的是什么版本的固件?
Git commit cc78ba3(Devt 的最后一个)

问题是否可重复?
是的

什么情况下会出现bug?
何时应反转步进引脚 – 设置 $2

mem_block_numin的值rmt_config_t应该是1。一个内存块可以容纳64项。当指定数字 2 时,使用下一个通道的内存块。根据频道要求少于 64 个项目,这并不是什么大问题。仅当使用最后一个通道时才重要 – 通道 7 的值只能mem_block_num为 1。缺少X_B_RMT_CHANNEL和的定义Y_B_RMT_CHANNEL,应该是通道 6 和 7。

步骤反转未正确屏蔽,轴号应该有一个偏移:

  rmtConfig.tx_config.idle_level = bit_istrue(settings.step_invert_mask, 1<<X_AXIS) ? RMT_IDLE_LEVEL_HIGH : RMT_IDLE_LEVEL_LOW;

STEP_PULSE_DELAY不考虑步进反转,反转引脚没有延迟但有扩展的脉冲宽度。当在函数中启用步进器时,倒置的引脚将有一个初始刻度(随机方向)st_wake_up()。当使用 RMT 时,setp outbits 必须设置为 0(这已经在 issue #302中提到)

  #ifdef USE_RMT_STEPS
	// Initialize stepper output; invert is done in RMT cycle
	st.step_outbits = 0;
#else
	// Initialize stepper output bits to ensure first ISR call does not step.
	st.step_outbits = step_port_invert_mask;
#endif
RMT_STEPS mem_block_num 和步骤反转 #318 khnrchs 添加了 漏洞 有些东西不工作标签 2020 年 1 月 18 日
RMT_STEPS mem_block_num 和步骤反转 #318

我想我对此负有部分责任,至少mem_block_num错误地设置为 2,请参阅问题#115。请注意,如果我正确理解文档, rmt_fill_tx_items(...)call 也应该更改为。rmt_fill_tx_items(rmtConfig.channel, &rmtItem[0], 2, 0);RMT RAM 块是否默认清除可能无关紧要,但最好是安全的。

当我在示波器上查看我的版本的输出时,步进脉冲延迟对于反相信号可以正常工作——而且我无法立即看出为什么这应该表现不同的任何原因。

由于我没有设置兼容的工具链,因此我无法测试此版本,对此深表歉意。

RMT_STEPS mem_block_num 和步骤反转 #318
作者

你是对的,脉冲延迟工作正常。我为此感到抱歉。
看来,我将其与未正确屏蔽的反转混为一谈。