Fill out above information and in all cases attach yourklippy.logfile. Pasting yourprinter.cfgis not needed When pasting code or config snippetsusethe code tags</>in the menu above
Describe your issue:
Hi,
I recently build a coreXY machine with Panasonic Minas A4 servo motors. The motherboard is a SKR 1.4t attached to a raspberry pi 4 running klipper. So far everything works fine. But since I want to go high speed and it is more reliable, I am using the differntial line driver interface of the servo drivers now. This method is working fine but I noticed that changing the “step_pulse_duration” in the printer config doesnt take any effect. According to my oscilioscope the pulse width sticks to 2us no matter what I set up. I am trying to achive at least 250ns. What am I doing wrong? Is this only possible to set up for tmc drivers in uart/spi mode?
Thanks for help in advance, I really want to get this running properly.
I did not look into the code (maybe one should do), but I read the definition (below) that way, that you can have other values only if you use TMC drivers?
#step_pulse_duration:
# The minimum time between the step pulse signal edge and the
# following "unstep" signal edge. This is also used to set the
# minimum time between a step pulse and a direction change signal.
# The default is 0.000000100 (100ns) for TMC steppers that are
# configured in UART or SPI mode, and the default is 0.000002 (which
# is 2us) for all other steppers.
I looked at the code and as far as I can say it looks like it should work. Out of the blue my pulse has changed now. It is not getting lower then 800ns though, no matter how low I set the step pulse duration in the config. I can print models like the ringing tower with 200mms without a problem and great quality. But with some larger prints I get the “stepper too far in past” error and the print aborts. It mostly happens after the bottom layers finished. But never at the same move.
Now I am wondering how is that possible? The mcu of the SKR 1.4T should be fast enough. Before I used five
tmc 2009 on the board. X and Y with 256 microstepping, the others with 16. Now I switched to servo drives in “standalone” mode and cant achieve 250ns step pulse on two axis??
I attached my klippy.log now. Last print was aborted for the mentioned reason. I hope someone can help.
The step_pulse_duration is used to force a longer step pulse for some stepper motor drivers that require that. Configuring a shorter pulse will not make the code run faster.
Configuring a step_pulse_duration may disable optimizations in the code. (In particular, the “step on both edges” optimization allows the code to reach much higher step rates.)
I recommend you update to the latest code (on both mcu and host), do not specify a step_pulse_duration, and do not make any code modifications. That will be the most optimized setup. If you continue to run into errors in that setup you should post the full klipper log from that event here.
Thanks for the reply. I understood that the “step on both edges” optimization only works with drivers which support this feature. And as far as I understood from the code, it says that, if the pulse duration is requested to be less then or equal 0.0000002s the “step on both edges” optimization will be enabled. So why should I not be able to get 0.00000025s pulse duration? Please correct me if I am mistaken.
I updated both systems already. No change.
What do you mean by full klipper log? Isnt that what I posted?