开源改变世界

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167

推推 grbl 2年前 (2023-02-08) 257次浏览
关闭
hankecnccc 开启了这个issue 2022 年 7 月 28 日 · 10 条评论

评论

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存

我每次需要设置2个以上的参数,参数会被保存

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167
作者

关于F401CCU6和F401RCT6,其他单片机不知道

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167
贡献者

对于共享相同代码的 F446,我没有发现此问题。发生这种情况时,您是直接更改无法坚持$设置命令的参数,还是通过发件人设置 UI 更改参数?

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167
作者

对于共享相同代码的 F446,我没有发现此问题。发生这种情况时,您是直接更改无法坚持$设置命令的参数,还是通过发件人设置 UI 更改参数?

谢谢你的回复,我手动发送命令“$x=x”,这个bug可以准确重现,已知在F401RCT6和F401CCU6中,“F446”可能不是问题,你能把这个问题移到STM32F4xx上吗??也许有人会修复它

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167
作者

对于共享相同代码的 F446,我没有发现此问题。发生这种情况时,您是直接更改无法坚持$设置命令的参数,还是通过发件人设置 UI 更改参数?
嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167

这是我基于grblhal制作的控制板

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167
贡献者

我手动发送命令“$x=x”,这个bug可以准确重现

我没有要检查的 F401 – F446 和 F401 之间的代码差异只是时钟设置和加载程序脚本,因为闪存布局不同。

你能把这个问题移到STM32F4xx吗??也许有人会修复它

是的,必须是可以访问 F401 的人,最好是调试器。设置断点的初始位置在这里。这是大多数设置都写在更改上的地方。

不错的主板顺便说一句,我猜你正在将设置存储在闪存中,因为我看不到任何 EEPROM/FRAM 芯片。

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167 terjeio 从 grblHAL/core 转移了这个问题 2022 年 7 月 30 日
嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167
作者

我手动发送命令“$x=x”,这个bug可以准确重现

我没有要检查的 F401 – F446 和 F401 之间的代码差异只是时钟设置和加载程序脚本,因为闪存布局不同。

你能把这个问题移到STM32F4xx吗??也许有人会修复它

是的,必须是可以访问 F401 的人,最好是调试器。设置断点的初始位置在这里。这是大多数设置都写在更改上的地方。

不错的主板顺便说一句,我猜你正在将设置存储在闪存中,因为我看不到任何 EEPROM/FRAM 芯片。

嗨,我很高兴,我根据你指出的保存功能找到了bool protocol_execute_realtime(void),我调用了nvs_buffer_sync_physical(); 在此功能中两次,
问题已解决

bool protocol_execute_realtime (void)
{
if(protocol_exec_rt_system()) {

     if (sys.suspend)
         protocol_exec_rt_suspend();

   #ifdef BUFFER_NVSDATA
    if((state_get() == STATE_IDLE || (state_get() & (STATE_ALARM|STATE_ESTOP))) && settings_dirty.is_dirty && !gc_state.file_run)
    {
 nvs_buffer_sync_physical();
 nvs_buffer_sync_physical();
    }

   #endif
 }

 return !ABORTED;

}

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167
贡献者

如果写入闪存失败,我刚刚提交了一个输出消息的更改。
而且我不明白你上面的修复是如何工作的,因为脏标志在第一次调用时被重置……

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167

nvs_buffer_sync_physical();

如果写入闪存失败,我刚刚提交了一个输出消息的更改。而且我不明白你上面的修复是如何工作的,因为脏标志在第一次调用时被重置……

如果写入闪存失败,我刚刚提交了一个输出消息的更改。而且我不明白你上面的修复是如何工作的,因为脏标志在第一次调用时被重置……

不知道,谁管呢,反正调用nvs_buffer_sync_physical()两次就可以解决我的问题

嗨,terjeio 在吗?grblhal 如果一次只设置一个系统参数,则该系统参数掉电后不保存 #167

如果写入闪存失败,我刚刚提交了一个输出消息的更改。而且我不明白你上面的修复是如何工作的,因为脏标志在第一次调用时被重置……

另外,对于这个bug的细节,如果只设置了一个参数,然后发送“$$”,得到的信息是参数是它的设置值,但是当控制板的电源拔掉再上电时再次打开,参数值不保存。