开源改变世界

当 DEFAULT_HOMING_DIR_MASK 不为 0 时,反冲设置部分被忽略 #37

推推 grbl 3年前 (2023-02-10) 204次浏览
关闭
c031917 打开了这个问题 2020 年 4 月 23 日 · 1条评论
关闭

当 DEFAULT_HOMING_DIR_MASK 不为 0 时,反冲设置部分被忽略#37

c031917 打开了这个问题 2020 年 4 月 23 日 · 1条评论

评论

当 DEFAULT_HOMING_DIR_MASK 不为 0 时,反冲设置部分被忽略 #37

你好,
谢谢你的工作——它终于可以给我真正需要的反弹补偿。我什至为此从 Arduino2560 切换到 STM32..

我遇到了一个效果,即我为 X 设置了反冲设置,但没有为 Y 设置。
通过调试器,我发现这是在 MotionControl.c 中的 MC_Init 中引起的

void MC_Init(void)
{
for(uint8_t i = 0; i < N_AXIS; i++)
{
dir_negative[i] = DIR_NEGATIV ^ (settings.homing_dir_mask & (1<<i));
}

当 settings.homing_dir_mask 不为零时,我的工厂就是这种情况(“3”表示 X 和 Y 倒转,而不是 Z),初始化完成后 dir_negative[] 为 {0;3;1;1;1}。但它应该是 {1;1;0;0;0}
这导致总是跳过 Y 反向间隙计算进一步向下,因为与 3 比较时这个表达式永远不会变为真:

如果(dir_negative[i] == DIR_NEGATIV)

我将 MC_Init 中的行替换为

dir_negative[i] = 1 & (settings.home_dir_mask >> i);

现在我在 dir_negative[] 中得到 {1;1;0;0;0},因此也在 Y 上进行反冲补偿!

该行尚未完成,因为我删除了“DIR_NEGATIV ^”部分

此致

彼得

当 DEFAULT_HOMING_DIR_MASK 不为 0 时,反冲设置部分被忽略 #37

谢谢,我稍后再看。