注释
这个对吗?我无法阅读您的代码格式。 void spindle_set_speed(uint32_t pwm_value)
{
#ifndef SPINDLE_PWM_PIN
return;
#else
#ifndef SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED
spindle_set_enable(true);
#else
spindle_set_enable(pwm_value != 0);
#endif
#ifndef INVERT_SPINDLE_PWM
grbl_analogWrite(SPINDLE_PWM_CHANNEL, pwm_value);
#else
if (pwm_value == 0) {
grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION));
}
else {
grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION) - pwm_value);
}
#endif
#endif
}
|
是的,但它简化为: void spindle_set_speed(uint32_t pwm_value)
{
#ifndef SPINDLE_PWM_PIN
return;
#else
#ifndef SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED
spindle_set_enable(true);
#else
spindle_set_enable(pwm_value != 0);
#endif
#ifndef INVERT_SPINDLE_PWM
grbl_analogWrite(SPINDLE_PWM_CHANNEL, pwm_value);
#else
grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION) - pwm_value);
#endif
#endif
}
好? |
好的 |
合并
很抱歉在测试中没有发现这一点……我将小错误归因于分段近似。解决这个问题可以改善低端的 cal。 再次感谢。 |
合并为主 |
欧文达菲 评论 on 16 Oct 2019 •
请回答以下问题。
您使用的是什么版本的固件?
b7ee426
问题是否可重复?
是的
什么情况下会出现bug?

使用 INVERT_SPINDLE_PWM,测量占空比与请求占空比的特性存在截距误差。 截距应该为零。
以下更改修复了该问题,导致 2e-5 的截距很好。
事实上,if 语句的另一个分支是多余的,代码可以简化。