+Peter van der Walt
I did some test last night and I got some pretty interesting results.
Test number 1
With GRBL 1.1c (legacy reporting turned on), I can confirm that changing G0 to G1 had no effect on the jitters. What I also found out is that it is related to the buffers as far as GRBL on the Nano is concerned.
Setting used for these tests were
Max feed rate set in GRBL 1200 mm/min
Black/White feedrate 1200 mm/min
Running my test image (the number section of the gray scale test image) in LW3 produced the jitters.
I loaded up the test image in another program where I can turn off skip blank lines and it ran smoothly and quietly for the entire image. I then took that GCODE and ran it in LW3 and it was smooth but the stepper motors were making a noise and if I had gone much faster I think it would have caused some stuttering.
I took the same GCODE and ran it in UGS and it ran smoothly as well.
From this I started looking at why and what were the differences in the GCODE were that could be causing this. I tried changing the G0 to G1 with no effect as well as a few other things. What I did learn is that there were apparently two different issues going on at the same time.
Issue 1 - The serial RX buffer: When running the GCODE from the other program, that ran quietly and smoothly and produced the cleanest lines, in UGS I noticed that the GCODE lines seemed to be fed more smoothly and consistently to GRBL whereas the GCODE from LW3 seem to go in spurts. What I mean is that it would send several lines and then wait, send several more lines and wait. This was not the case where the other program was sending a line for every pixel (or so it seemed). The number of lines seemed to be cause a throttling effect.
I know this is directly related to the limited memory of GRBL on the Nano, but it may also affect smoothie in that if you fill up the buffer and smoothie/GRBL waits for the buffer to get filled up again, this will create a pause. Obviously a faster baud rate will help get the data there faster. I don’t know if GRBL or Smoothie wait till the buffer is full to start but from my tests, it seems GRBL does or at least to some extent.
Issue 2 - LW3 issuing status requests while running: When I ran the GCODE that ran smoothly in UGS and my other raster engraving program, the stepper motors were smooth and quiet. But, when I run the same GCODE in LW3 I get a repeating change in sound that appears to have the same cadence as the status request being sent to GRBL.
In conclusion, the status request from LW3 to GRBL seems to affect the performance (shouldn’t be a problem for smoothie) and filling up the RX buffer seems to induce lags.
I think it is useful to be able to turn on and off skipping blank lines so I don’t think the answer is to get rid of it all together.