评论
测试设置:一推旋转编码器退出状态画面,能否测试一下是否正常运行?这将确认我发现的状态屏幕错误。 |
不确定我明白你在说什么。你是在暗示不是 i2c 通信导致速度下降,而是它在生成状态屏幕时所做的一些不必要的处理(当你不导航菜单时显示的内容),所以我看到的问题应该只发生在正在显示状态屏幕,而不是在导航菜单时?如果是这样,我想我可以测试一下,虽然我的带有 VIKI 的机器正在工作,但我要到星期三才会去那里弄乱它。 |
这正是我的意思。主液晶显示屏会进行一系列更新,而不是每个周期仅更新一次。 |
我查看了代码,看起来有几种情况可以将 lcdDrawUpdate 设置为两个,这意味着该代码似乎在那里导致它连续更新两次。我没有看到任何可以将其设置为更高值的东西。我不确定这有什么意义,但我猜想在这种情况下让 lcd_update 尽早返回同样有效,这样只发生第二次更新,而不是运行更新只是为了再次运行它尽快。 不管怎样,我已经添加了一些调试代码,应该可以更好地了解正在发生的事情,当我回到配备 Viki 的机器时,我将运行它。 |
您是否抽出时间来测试您的调试代码? |
是的,抱歉,我以为我已经发布了。我进行了测试,但在显示其他菜单屏幕时无法察觉行为或跳过的可能性有任何变化。 |
我打破了我的重复幽灵,它是 u8glib pictureloop 循环所有显示页面。 |
这个是大约一年前创建的,有很多变化,请下载最新的 marlin 副本,看看问题是否仍然存在。您还可以使用最新的 arduino IDE 来刷新 marlin 固件。如果您的板文件等只能在旧的 ide 下工作,请先升级它们,以便它们在最新的 IDE 下工作。 如果您为不在https://github.com/ErikZalm/Marlin/tree/Marlin_v1/ArduinoAddons中的硬件创建板文件,请 fork marlin 并添加文件,然后创建一个拉取请求,以便我们可以获得硬件支持的。这也将使人们了解人们正在使用什么硬件。 |
自从添加 Viki LCD 以来,我注意到长距离高速移动经常会在中间跳过。打印机通常不会丢失其位置,但偶尔会出现可听见的震动,从而导致丢失步骤。对于没有 LCD 的配置相同的机器,不会发生同样的情况。我的理论是 I2C LCD 更新花费的时间太长,导致步进器计时错误。所有的步骤都在进行中,但有些步骤延迟太多,导致延迟,可能导致遗漏步骤。
似乎解决此问题的最佳方法是在任何轴的步进率高于特定阈值时禁用 LCD 更新。这可能相当于在进行 LCD 更新之前检查中断间隔,或者在 stepper.cpp 中添加一个布尔变量集并在更新 LCD 之前检查以查看步进速率对于 LCD 更新延迟是否安全。
想法?有一个更好的方法吗?检查当前步进率以查看 LCD 更新是否会出现问题的最佳位置在哪里?