Code: Select all
G1 Y0 E0
G1 E4 F2400
G1 E0
G1 Y2 E4 F666.7
In any case, please test and report your findings.
- Karl
Code: Select all
G1 Y0 E0
G1 E4 F2400
G1 E0
G1 Y2 E4 F666.7
Code: Select all
diff --git a/Repetier/motion.cpp b/Repetier/motion.cpp
index 4391f91..f89ee4b 100644
--- a/Repetier/motion.cpp
+++ b/Repetier/motion.cpp
@@ -1034,7 +1034,7 @@ inline void queue_E_move(long e_diff,byte check_endstops,byte pathOptimize
p->delta[i] = 0;
axis_diff[i] = 0;
}
- axis_diff[3] = e_diff*inv_axis_steps_per_unit[3];
+ axis_diff[3] = fabs(e_diff*inv_axis_steps_per_unit[3]);
if (e_diff >= 0) {
p->delta[3] = e_diff;
p->dir = 0x88;
Could you post this for the 0.90alpha please.karlo wrote:I think I have it figured out. There appears to be an bug in the extruder code, where a quick extrude + retract with no simultaneous movement will ignore acceleration, ie. it will run the filament down at full speed, and then back it out at full speed with no decel/accel in between. At least for me this causes skipping--I think my stepper motor has issues. With the change in place, the skipping is now gone. Can someone test with and without and see if this breaks anything?
This is for 0.80 RepetierMax. I have the fix for 0.90alpha as well, if anyone is interested.Code: Select all
diff --git a/Repetier/motion.cpp b/Repetier/motion.cpp index 4391f91..f89ee4b 100644 --- a/Repetier/motion.cpp +++ b/Repetier/motion.cpp @@ -1034,7 +1034,7 @@ inline void queue_E_move(long e_diff,byte check_endstops,byte pathOptimize p->delta[i] = 0; axis_diff[i] = 0; } - axis_diff[3] = e_diff*inv_axis_steps_per_unit[3]; + axis_diff[3] = fabs(e_diff*inv_axis_steps_per_unit[3]); if (e_diff >= 0) { p->delta[3] = e_diff; p->dir = 0x88;
- Karl
Code: Select all
diff --git a/src/ArduinoAVR/Repetier/motion.cpp b/src/ArduinoAVR/Repetier/motion.cpp
--- a/src/ArduinoAVR/Repetier/motion.cpp
+++ b/src/ArduinoAVR/Repetier/motion.cpp
@@ -1100,7 +1102,7 @@ inline void PrintLine::queueEMove(long e_diff,uint8_t check_endstops,uint8_t pat
p->delta[i] = 0;
axis_diff[i] = 0;
}
- axis_diff[E_AXIS] = e_diff*Printer::invAxisStepsPerMM[E_AXIS];
+ axis_diff[E_AXIS] = fabs(e_diff*Printer::invAxisStepsPerMM[E_AXIS]);
if (e_diff >= 0)
{
p->delta[E_AXIS] = e_diff;
karlo wrote:Here's the 0.90alpha code. This is not a change in Configuration.h, this is a change in motion.cpp. Either you use 'patch', or you have to locate the code in motion.cpp and make the change there. Line number 1100.
Then compile and update the Arduino.Code: Select all
diff --git a/src/ArduinoAVR/Repetier/motion.cpp b/src/ArduinoAVR/Repetier/motion.cpp --- a/src/ArduinoAVR/Repetier/motion.cpp +++ b/src/ArduinoAVR/Repetier/motion.cpp @@ -1100,7 +1102,7 @@ inline void PrintLine::queueEMove(long e_diff,uint8_t check_endstops,uint8_t pat p->delta[i] = 0; axis_diff[i] = 0; } - axis_diff[E_AXIS] = e_diff*Printer::invAxisStepsPerMM[E_AXIS]; + axis_diff[E_AXIS] = fabs(e_diff*Printer::invAxisStepsPerMM[E_AXIS]); if (e_diff >= 0) { p->delta[E_AXIS] = e_diff;
- Karl
Anything less than zero whitespace 5+ nested ternaries contained on a single line is just ineligant and unreadable. And no you can't use parentheses, they just make it look dirty.geneb wrote:I learned three things.
1. TERNARIES FOR ALL THE THINGS!
2. Whitespace is where nightmares come from.
Umm, yeah. I'm a professional developer as well, and I'll have to agree.geneb wrote:I learned three things.
1. TERNARIES FOR ALL THE THINGS!
2. Whitespace is where nightmares come from.
3. Constants are for pussies.
I don't really do free-air extrudes, so I haven't seen this, but if you have a test case, I can take a look at it.Have you had any issue with .90alpha ignoring any movement commands if you try free-air extruding a bit? It extrudes a small amount and then stops. Some seconds later it'll resume. It's almost like the stepper driver is packing it in, but it affects all axes at once and doesn't happen under Marlin or RepetierMAX.
Thank you for squashing that bug. I'm glad that they applied your fix because it benefits us all.karlo wrote:Good news! Roland acknowledged the bug and applied my fix with some modifications. As mentioned, the bug exists in 0.80 RepetierMAX as well, although I'm not sure that's being maintained any more.
My printer is down for a PSU replacement. If I find time, I'll take a look at your issue, Gene.
- Karl