I have gotten the basics running on Marlin for my SKR Pro. When I move my X-axis, it is super smooth with TMC2208. Great sucess! Then I move Y and it is hissing like crazy! I move Z and same thing.
Now I have read through some things on the noise you get from active steppers, but I am curious why only the X makes the noise? I have swapped the drivers around and the ones that made noise for Y and Z did not make any noise when used for X.
So anyone have any insight for me? I think that everything is set properly in FW and I thought that you arent supposed to touch the pots on the drivers.
M122 is the key. If one of those settings are wrong, I think it would report an error. It looks like they aren’t enabled, which may make some of the info invalid. But if they are enabled, it says right there is stealthchop is enabled and it only shows it true for X.
Yep, if you remember a while back, I posted about a printer I had that tried to burn my house down (Eryone Thinker SE) and the company did not help at all so i am upgrading the brain to the SKR Pro. I killed my SKR turbo by accident, shorting it with a wire I dropped and now just trying to get this one up and running.
So far I have learned at lot! And I have most things working on it, so it’s just down to the details like these noisy steppers. I have gotten much better at VS code and feel like I’m not going to wreck anything anymore.
I will keep digging into the stealthchop issue and see what I can find.
Also, thanks Jeff, I always know that if i post here I’ll get a response from you that will be helpful! I’m so glad that Ryan created all of this!
So, Jeff, you are correct that the M122 showing stealthChop off for Y, Z, E being the problem. I was able to send “M569 S1 X Y Z E”, which turned stealthchop to true for all of them.
When I reset power to it, it all goes back though. So now I just need to figure out how to keep stealthchop set to on. I am sure a more FW savy person could figure it out quicker but I will keep on digging until I find it. Lots of rabbit holes to go down. I guess this is how we learn though!
I agree, m500 can get you there for now, but next time the eeprom is reset for whatever reason, you will have to set stealthchop again. Since you show the stealthchop enable defines are not commented… perhaps there is another define somewhere causing the problem? AFAIK, the latest Marlin uses a single define to set stealthchop for all axis, but those individual defines can also be used. So maybe that single line just needs to be commented out so it won’t redefine your enable lines (not at pc to show exactly which line… but easy to find near the top of the tmc configs).
Is it common for the eeprom to get reset? It wouldnt be a huge deal to send the gcode again to fix it if it broke, but I would rather have a permanent solution.
I tried looking for anything else that would either define that stealthchop was off or that spreadcycle was somehow defined later but I cannot find anything.
When I look into the TMC definitions I do not see anything weird. At least everything looks fine based on my limited programming knowledge.
I checked to make sure the hybrid_threshold isnt active, so its not trying to switch to spreadCycle.
Do you think this is an old version of Marlin? I got mine from BTT and it says V2.0. I checked the stealthchop vs the latest Marlin release (from Marlins Github) and they seem to define it the same as my files:
in config_adv from Marlins latest release:
TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
Use Trinamic’s ultra quiet stepping mode.
When disabled, Marlin will use spreadCycle stepping mode.
*/ #define STEALTHCHOP_XY #define STEALTHCHOP_Z
And it looks like my trinamic.h and .cpp are the same for the stealthchop items.
I feel like I am going nowhere on this one. I suppose I won’t let it slow me down and I will keep going through the rest of the configurations, but I would really like to figure this out. Hard for me to sleep when I am scrolling through config files when I close my eyes!
One thing that I do not know enough about is what UART mode even does vs standalone. I will be reading up on it, but is it possible it thinks that the drivers are not in UART mode and therefore defaulting to turn off stealthchop? Not sure how to verify that UART is active. Or if this is even a possibility. My jumpers are connected on the main board for UART…
One other strange thing. In my M122, it shows X Set current is 800 but my config_adv I have set to 750.
Any idea why that wouldn’t be correct? Maybe the way I am flashing the board? I have been sending the firmware.bin to the SD card and plugging it back in. So when it reads the card, it updates the FW with the little green flashing LED. I bring this up because when I was working on my SKR Turbo, the tutorial told me to use the PIO upload button in VScode.
It SHOULD NOT be common for the EEPROM to be reset.
As a general principle though, with Marlin, if I need to set things up in the EEPROM, I will most commonly adjust the firmware and recompile it so that the default values are the ones that I actually want to use. This way, if something happens to my control board, and I need to reflash a new one, I don’t need to remember all of the changes that I set. Everything from steps/mm to probe offsets I will check periodically so that a fresh compile with my source code will result in the same settings that I am currently using.
Hehe… config file flashbacks at bedtime do happen. At least it is just the sorting out phase where a lot has to be learned at once… makes me a bit stir crazy as well. Once things are tuned up and running well though, having a firmware file that you can always fall back to that gets it running well is good… and you learn valuable stuff along the way too.
Sometimes I feel I am just being ocd, but I also have a habit of compiling with my tuning and configs as much as possible, and I always initialize the eeprom after flashing. Since I often like to try new features that come out in Marlin, I am finding myself diffing new versions of config files a lot anyways. Having everything in the config makes those upgrades a lot less painful.
I suppose it is possible for the eeprom to already have had values in there. This SD came with one of my SKR boards pre-loaded with FW. So if reloading the FW doesnt reset those values, then it probably is whatever they left stored on it. Is M502 the only way to reset the values? I thought that the gcode was temporary (if the eeprom reset for some reason).
What does it mean to initialize the eeprom after flashing? Is that through pronterface or VScode?
How do you keep track of your different configs? I have a hard time understanding where everything is stored in VScode and determining how it pulls from different folders. (and the difference between a workspace and a project and just open files. Like if I open 2x configs at the same time, does it keep them in separate places?
There are three versions of these settings (not all settings work this way, but many do):
The firmware version. Set in configuration.h and configuration_adv.h. These only change when you flash it.
The eeprom versions. These do not change when you flash it. If you change versions of the firmware, they may be misinterpeted.
The ones currently loaded in memory while it is running. These are what get used.
When it boots up. It loads the ones from eeprom to memory.
When you change something with gcode, like M92, it changes the ones in memory.
M500 Saves the ones in memory to eeprom
M502 reads the ones from firmware into memory.
When you flash using the sd card, you should also send M502 and then M500 to reset the values in the eeprom to the firmware you just flashed.
After you change something with gcode that you like, use M500 and it is also a good habit to go back to your copy of configuration.h and make the change there so you won’t lose it next time you flash.
There is some logic in the marlin firmware when you substantially change versions, like from v2.0.4 to v2.0.9 which will see that the eeprom is based on an old version of marlin and it will not read from eeprom. So sometimes you might have gotten lucky and not had to do M502/M500. But you shouldn’t depend on that.
Thanks Jeff. I also see that M503 tells you what is currently stored so that is helpful so I can save it before I kill it to remember what all changed.
Your explanation is super helpful. Not sure why this wasn’t mentioned in any of the videos I watched (which is a lot) from beginner to advanced.
The thing that I don’t understand is why the EEPROM ISNT overwritten every time you load FW. Or at least why isn’t there an error letting you know that values are different on first boot up? Maybe it’s just me!