-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
eeprom save fix AUTO_BED_LEVELING_BILINEAR with a 8x8 (and bigger) mesh #26158
eeprom save fix AUTO_BED_LEVELING_BILINEAR with a 8x8 (and bigger) mesh #26158
Conversation
On TMC2208_STANDALONE with AUTO_BED_LEVELING_BILINEAR and GRID_MAX_POINTS_X greater 7, so as of 8x8 a crc mismatch occurs on reboot. Mesh and other settings can be generated and saved but on printer reboot everything is resetted. Error:EEPROM CRC mismatch - (stored) 57991 != 44219 (calculated)! UBL works still. It only affects AUTO_BED_LEVELING_BILINEAR as of 8x8. With this fix the problem is solved.
extra #endif at 1501? |
oh sorry. you are right. corrected. |
@ThomasToka and @thisiskeithb |
i did it with jyers, proui, creality dwin and lcd_rts.cpp. all the same. why the bilinear saves „mesh“ mesh leveling data? if one switches it will be all resetted. |
By conscience, I compiled from the current bufix, a jyersui 10x10 ABL version without any modification (On an Ender3 V2). No problem found, no data reset or anything else weird. So I now conclude that it is more of an EEEprom issue with the Ender 3 S1 F4. Searching the web, other users report problems with the EEprom based on Marlin sources and not going back to the Creality firmware affecting only the Ender3 S1 F4... |
M851 Z2 reboot. i can sent you a pronterface log with debug enabled in around 2h. |
Maybe with Ender3 S1 F4, but if I do what you just did on my Ender 3 V2: reboot and...My Z-offset is 2 ! |
@RV-from-be If you look at original issue, you can see that I tested on the simulator and a Creality v4.2.2 and could not replicate this issue... |
i am very thankful that you care. and also understand if you can’t replicate. |
jyers work when i increase it dwin.h. that i can confirm for now. EDIT: trying now to adopt this for my lcd_rts.cpp ;) |
Maybe this is related to a very old resolved bug: mriscoc/Ender3V2S1#125 |
Could you please point me to your commit for this? Cant find it :-( |
I can confirm that disabling crc check fixes it. But thats not the propper solution i think. |
in dwin.h if you look at corner_pos is set to 10 |
@classicrocker883 thx. I got it already working. Have build up a own struct. But still had to modify the settings.cpp like here in this pr. But i am fine. It works. |
Marlin/src/module/settings.cpp
Outdated
uint16_t mesh_check; // Hash to check against X/Y | ||
float mbl_z_values[TERN(MESH_BED_LEVELING, GRID_MAX_POINTS_X, 3)] // bedlevel.z_values | ||
[TERN(MESH_BED_LEVELING, GRID_MAX_POINTS_Y, 3)]; | ||
#endif |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Our standard has been to store dummy data for common features so EEPROM doesn't necessarily require a reset after flashing new firmware with leveling turned on. This goes for various other features as well, although we have been phasing that out somewhat with the addition of new features. Unless we're prepared to wrap all the optional things like this, let's continue to follow the general standard.
If you'd like to help with the more comprehensive refactoring of the EEPROM that includes per-feature versioning and writes a more structured format, check out my proposal at https://github.com/MarlinFirmware/Marlin/projects?type=classic
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leaving code that increases the program memory usage only to avoid an EEPROM reset after flashing a new firmware doesn't seem good to me, but maybe that could be a personal choice, especially for those with program memory space problems.
After merging the latest, I don't see anything left in this PR that is a fix. Consider getting onboard with the feature-based EEPROM refactor. That's going to be interesting, fun, and useful. https://github.com/MarlinFirmware/Marlin/projects?type=classic |
This project last updated 3 years ago. Are there other writeups about it? Also, with ChatGPT and other variants, it should be easy to input how you want it done, and it outputs what it should be. you know, give it an example, and say "hey i want it done like this for the rest of this code" and it would save bunch of time. |
Description
On TMC2208_STANDALONE with AUTO_BED_LEVELING_BILINEAR and GRID_MAX_POINTS_X greater 7, so as of 8x8 a crc mismatch occurs on reboot. Mesh and other settings can be generated and saved but on printer reboot everything is resetted.
Error:EEPROM CRC mismatch - (stored) 57991 != 44219 (calculated)!
UBL works still. It only affects AUTO_BED_LEVELING_BILINEAR as of 8x8.
With this fix the problem is solved.
Benefits
eeprom saving is possible
Configurations
TMC2208_STANDALONE on a Ender 3 S1 Pro
Related Issues
#26144