diff options
author | Jason S. McMullan <jason.mcmullan@gmail.com> | 2021-04-17 06:54:12 -0400 |
---|---|---|
committer | KevinOConnor <kevin@koconnor.net> | 2021-05-26 11:57:57 -0400 |
commit | 913649de2e8057e849be2a54e08d34302ee37dad (patch) | |
tree | b7461d6351d46c73a5ad10e3aa49e7b8ad8facae /test/klippy | |
parent | 4ea434796bb1f5bcc9d44bfcd0d9d66b8476faa9 (diff) | |
download | kutter-913649de2e8057e849be2a54e08d34302ee37dad.tar.gz kutter-913649de2e8057e849be2a54e08d34302ee37dad.tar.xz kutter-913649de2e8057e849be2a54e08d34302ee37dad.zip |
loop_sdcard: Add loopable SD card file sections
To support continuous belt printing, add nestable repeat
loop support via an `[sdcard_loop]` module.
Supported G-Code:
- SDCARD_LOOP_BEGIN COUNT=n ; Loop for N times, or infinitely if N is 0
- SDCARD_LOOP_END ; End of loop
- SDCARD_LOOP_DESIST ; Complete all loops without iterating
Marlin M808 compatibility example in `config/sample-macros.cfg`:
- M808 Ln ; Loop for N times, or infinitely if N is 0
- M808 ; End of loop
- M808 K ; Complete all loops without iterating
Added unit tests in test/klippy/sdcard_loop.test
See https://reprap.org/wiki/G-code#M808:_Set_or_Goto_Repeat_Marker
Signed-off-by: Jason S. McMullan <jason.mcmullan@gmail.com>
Diffstat (limited to 'test/klippy')
-rw-r--r-- | test/klippy/sdcard_loop.cfg | 89 | ||||
-rw-r--r-- | test/klippy/sdcard_loop.test | 9 | ||||
-rw-r--r-- | test/klippy/sdcard_loop/big.gcode | 350 |
3 files changed, 448 insertions, 0 deletions
diff --git a/test/klippy/sdcard_loop.cfg b/test/klippy/sdcard_loop.cfg new file mode 100644 index 00000000..27844512 --- /dev/null +++ b/test/klippy/sdcard_loop.cfg @@ -0,0 +1,89 @@ +# Test config for sdcard_loop +[virtual_sdcard] +path: test/klippy/sdcard_loop + +[display_status] + +# Override to support unlimited belt size +# (homing Z simply resets its virtual position to 0.0) +[homing_override] +axes: xyz +set_position_x: 0 +set_position_y: 0 +set_position_z: 0 +gcode: + G92 X0 Y0 Z0 + + +[stepper_x] +step_pin: ar54 +dir_pin: ar55 +enable_pin: !ar38 +step_distance: .0125 +endstop_pin: ^ar3 +position_endstop: 0 +position_max: 200 +homing_speed: 50 + +[stepper_y] +step_pin: ar60 +dir_pin: !ar61 +enable_pin: !ar56 +step_distance: .0125 +endstop_pin: ^ar14 +position_endstop: 0 +position_max: 200 +homing_speed: 50 + +[stepper_z] +step_pin: ar46 +dir_pin: ar48 +enable_pin: !ar62 +step_distance: .0025 +endstop_pin: ^ar18 +position_endstop: 0.5 +position_max: 200000000 + +[extruder] +step_pin: ar26 +dir_pin: ar28 +enable_pin: !ar24 +step_distance: .004242 +nozzle_diameter: 0.500 +filament_diameter: 3.500 +heater_pin: ar10 +sensor_type: EPCOS 100K B57560G104F +sensor_pin: analog13 +control: pid +pid_Kp: 22.2 +pid_Ki: 1.08 +pid_Kd: 114 +min_temp: 0 +max_temp: 210 + +[heater_bed] +heater_pin: ar8 +sensor_type: EPCOS 100K B57560G104F +sensor_pin: analog14 +control: watermark +min_temp: 0 +max_temp: 110 + +[mcu] +serial: /dev/ttyACM0 +pin_map: arduino + +[printer] +kinematics: cartesian +max_velocity: 300 +max_accel: 3000 +max_z_velocity: 5 +max_z_accel: 100 + +[sdcard_loop] + +[gcode_macro M808] +gcode: + {% if params.K is not defined and params.L is defined %}SDCARD_LOOP_BEGIN COUNT={params.L|int}{% endif %} + {% if params.K is not defined and params.L is not defined %}SDCARD_LOOP_END{% endif %} + {% if params.K is defined and params.L is not defined %}SDCARD_LOOP_DESIST{% endif %} diff --git a/test/klippy/sdcard_loop.test b/test/klippy/sdcard_loop.test new file mode 100644 index 00000000..dd9db434 --- /dev/null +++ b/test/klippy/sdcard_loop.test @@ -0,0 +1,9 @@ +; Virtual SD card unit tests + +DICTIONARY atmega2560.dict +CONFIG sdcard_loop.cfg + +G28 +SDCARD_LOOP_DESIST +; Verify long-name functions +SDCARD_PRINT_FILE FILENAME=big.gcode diff --git a/test/klippy/sdcard_loop/big.gcode b/test/klippy/sdcard_loop/big.gcode new file mode 100644 index 00000000..f5e52041 --- /dev/null +++ b/test/klippy/sdcard_loop/big.gcode @@ -0,0 +1,350 @@ +; Large example, to test M808 looping with `partial_data` +M808 L20 +; Looping +G92 E0 +G91 +G1 E1 ; This is line 0 +G1 E1 ; This is line 1 +G1 E1 ; This is line 2 +G1 E1 ; This is line 3 +G1 E1 ; This is line 4 +G1 E1 ; This is line 5 +G1 E1 ; This is line 6 +G1 E1 ; This is line 7 +G1 E1 ; This is line 8 +G1 E1 ; This is line 9 +G1 E1 ; This is line 10 +G1 E1 ; This is line 11 +G1 E1 ; This is line 12 +G1 E1 ; This is line 13 +G1 E1 ; This is line 14 +G1 E1 ; This is line 15 +G1 E1 ; This is line 16 +G1 E1 ; This is line 17 +G1 E1 ; This is line 18 +G1 E1 ; This is line 19 +G1 E1 ; This is line 20 +G1 E1 ; This is line 21 +G1 E1 ; This is line 22 +G1 E1 ; This is line 23 +G1 E1 ; This is line 24 +G1 E1 ; This is line 25 +G1 E1 ; This is line 26 +G1 E1 ; This is line 27 +G1 E1 ; This is line 28 +G1 E1 ; This is line 29 +G1 E1 ; This is line 30 +G1 E1 ; This is line 31 +G1 E1 ; This is line 32 +G1 E1 ; This is line 33 +G1 E1 ; This is line 34 +G1 E1 ; This is line 35 +G1 E1 ; This is line 36 +G1 E1 ; This is line 37 +G1 E1 ; This is line 38 +G1 E1 ; This is line 39 +G1 E1 ; This is line 40 +G1 E1 ; This is line 41 +G1 E1 ; This is line 42 +G1 E1 ; This is line 43 +G1 E1 ; This is line 44 +G1 E1 ; This is line 45 +G1 E1 ; This is line 46 +G1 E1 ; This is line 47 +G1 E1 ; This is line 48 +G1 E1 ; This is line 49 +G1 E1 ; This is line 50 +G1 E1 ; This is line 51 +G1 E1 ; This is line 52 +G1 E1 ; This is line 53 +G1 E1 ; This is line 54 +G1 E1 ; This is line 55 +G1 E1 ; This is line 56 +G1 E1 ; This is line 57 +G1 E1 ; This is line 58 +G1 E1 ; This is line 59 +G1 E1 ; This is line 60 +G1 E1 ; This is line 61 +G1 E1 ; This is line 62 +G1 E1 ; This is line 63 +G1 E1 ; This is line 64 +G1 E1 ; This is line 65 +G1 E1 ; This is line 66 +G1 E1 ; This is line 67 +G1 E1 ; This is line 68 +G1 E1 ; This is line 69 +G1 E1 ; This is line 70 +G1 E1 ; This is line 71 +G1 E1 ; This is line 72 +G1 E1 ; This is line 73 +G1 E1 ; This is line 74 +G1 E1 ; This is line 75 +G1 E1 ; This is line 76 +G1 E1 ; This is line 77 +G1 E1 ; This is line 78 +G1 E1 ; This is line 79 +G1 E1 ; This is line 80 +G1 E1 ; This is line 81 +G1 E1 ; This is line 82 +G1 E1 ; This is line 83 +G1 E1 ; This is line 84 +G1 E1 ; This is line 85 +G1 E1 ; This is line 86 +G1 E1 ; This is line 87 +G1 E1 ; This is line 88 +G1 E1 ; This is line 89 +G1 E1 ; This is line 90 +G1 E1 ; This is line 91 +G1 E1 ; This is line 92 +G1 E1 ; This is line 93 +G1 E1 ; This is line 94 +G1 E1 ; This is line 95 +G1 E1 ; This is line 96 +G1 E1 ; This is line 97 +G1 E1 ; This is line 98 +G1 E1 ; This is line 99 +G1 E1 ; This is line 100 +G1 E1 ; This is line 101 +G1 E1 ; This is line 102 +G1 E1 ; This is line 103 +G1 E1 ; This is line 104 +G1 E1 ; This is line 105 +G1 E1 ; This is line 106 +G1 E1 ; This is line 107 +G1 E1 ; This is line 108 +G1 E1 ; This is line 109 +G1 E1 ; This is line 110 +G1 E1 ; This is line 111 +G1 E1 ; This is line 112 +G1 E1 ; This is line 113 +G1 E1 ; This is line 114 +G1 E1 ; This is line 115 +G1 E1 ; This is line 116 +G1 E1 ; This is line 117 +G1 E1 ; This is line 118 +G1 E1 ; This is line 119 +G1 E1 ; This is line 120 +G1 E1 ; This is line 121 +G1 E1 ; This is line 122 +G1 E1 ; This is line 123 +G1 E1 ; This is line 124 +G1 E1 ; This is line 125 +G1 E1 ; This is line 126 +G1 E1 ; This is line 127 +G1 E1 ; This is line 128 +G1 E1 ; This is line 129 +G1 E1 ; This is line 130 +G1 E1 ; This is line 131 +G1 E1 ; This is line 132 +G1 E1 ; This is line 133 +G1 E1 ; This is line 134 +G1 E1 ; This is line 135 +G1 E1 ; This is line 136 +G1 E1 ; This is line 137 +G1 E1 ; This is line 138 +G1 E1 ; This is line 139 +G1 E1 ; This is line 140 +G1 E1 ; This is line 141 +G1 E1 ; This is line 142 +G1 E1 ; This is line 143 +G1 E1 ; This is line 144 +G1 E1 ; This is line 145 +G1 E1 ; This is line 146 +G1 E1 ; This is line 147 +G1 E1 ; This is line 148 +G1 E1 ; This is line 149 +G1 E1 ; This is line 150 +G1 E1 ; This is line 151 +G1 E1 ; This is line 152 +G1 E1 ; This is line 153 +G1 E1 ; This is line 154 +G1 E1 ; This is line 155 +G1 E1 ; This is line 156 +G1 E1 ; This is line 157 +G1 E1 ; This is line 158 +G1 E1 ; This is line 159 +G1 E1 ; This is line 160 +G1 E1 ; This is line 161 +G1 E1 ; This is line 162 +G1 E1 ; This is line 163 +G1 E1 ; This is line 164 +G1 E1 ; This is line 165 +G1 E1 ; This is line 166 +G1 E1 ; This is line 167 +G1 E1 ; This is line 168 +G1 E1 ; This is line 169 +G1 E1 ; This is line 170 +G1 E1 ; This is line 171 +G1 E1 ; This is line 172 +G1 E1 ; This is line 173 +G1 E1 ; This is line 174 +G1 E1 ; This is line 175 +G1 E1 ; This is line 176 +G1 E1 ; This is line 177 +G1 E1 ; This is line 178 +G1 E1 ; This is line 179 +G1 E1 ; This is line 180 +G1 E1 ; This is line 181 +G1 E1 ; This is line 182 +G1 E1 ; This is line 183 +G1 E1 ; This is line 184 +G1 E1 ; This is line 185 +G1 E1 ; This is line 186 +G1 E1 ; This is line 187 +G1 E1 ; This is line 188 +G1 E1 ; This is line 189 +G1 E1 ; This is line 190 +G1 E1 ; This is line 191 +G1 E1 ; This is line 192 +G1 E1 ; This is line 193 +G1 E1 ; This is line 194 +G1 E1 ; This is line 195 +G1 E1 ; This is line 196 +G1 E1 ; This is line 197 +G1 E1 ; This is line 198 +G1 E1 ; This is line 199 +G1 E1 ; This is line 200 +G1 E1 ; This is line 201 +G1 E1 ; This is line 202 +G1 E1 ; This is line 203 +G1 E1 ; This is line 204 +G1 E1 ; This is line 205 +G1 E1 ; This is line 206 +G1 E1 ; This is line 207 +G1 E1 ; This is line 208 +G1 E1 ; This is line 209 +G1 E1 ; This is line 210 +G1 E1 ; This is line 211 +G1 E1 ; This is line 212 +G1 E1 ; This is line 213 +G1 E1 ; This is line 214 +G1 E1 ; This is line 215 +G1 E1 ; This is line 216 +G1 E1 ; This is line 217 +G1 E1 ; This is line 218 +G1 E1 ; This is line 219 +G1 E1 ; This is line 220 +G1 E1 ; This is line 221 +G1 E1 ; This is line 222 +G1 E1 ; This is line 223 +G1 E1 ; This is line 224 +G1 E1 ; This is line 225 +G1 E1 ; This is line 226 +G1 E1 ; This is line 227 +G1 E1 ; This is line 228 +G1 E1 ; This is line 229 +G1 E1 ; This is line 230 +G1 E1 ; This is line 231 +G1 E1 ; This is line 232 +G1 E1 ; This is line 233 +G1 E1 ; This is line 234 +G1 E1 ; This is line 235 +G1 E1 ; This is line 236 +G1 E1 ; This is line 237 +G1 E1 ; This is line 238 +G1 E1 ; This is line 239 +G1 E1 ; This is line 240 +G1 E1 ; This is line 241 +G1 E1 ; This is line 242 +G1 E1 ; This is line 243 +G1 E1 ; This is line 244 +G1 E1 ; This is line 245 +G1 E1 ; This is line 246 +G1 E1 ; This is line 247 +G1 E1 ; This is line 248 +G1 E1 ; This is line 249 +G1 E1 ; This is line 250 +G1 E1 ; This is line 251 +G1 E1 ; This is line 252 +G1 E1 ; This is line 253 +G1 E1 ; This is line 254 +G1 E1 ; This is line 255 +G1 E1 ; This is line 256 +G1 E1 ; This is line 257 +G1 E1 ; This is line 258 +G1 E1 ; This is line 259 +G1 E1 ; This is line 260 +G1 E1 ; This is line 261 +G1 E1 ; This is line 262 +G1 E1 ; This is line 263 +G1 E1 ; This is line 264 +G1 E1 ; This is line 265 +G1 E1 ; This is line 266 +G1 E1 ; This is line 267 +G1 E1 ; This is line 268 +G1 E1 ; This is line 269 +G1 E1 ; This is line 270 +G1 E1 ; This is line 271 +G1 E1 ; This is line 272 +G1 E1 ; This is line 273 +G1 E1 ; This is line 274 +G1 E1 ; This is line 275 +G1 E1 ; This is line 276 +G1 E1 ; This is line 277 +G1 E1 ; This is line 278 +G1 E1 ; This is line 279 +G1 E1 ; This is line 280 +G1 E1 ; This is line 281 +G1 E1 ; This is line 282 +G1 E1 ; This is line 283 +G1 E1 ; This is line 284 +G1 E1 ; This is line 285 +G1 E1 ; This is line 286 +G1 E1 ; This is line 287 +G1 E1 ; This is line 288 +G1 E1 ; This is line 289 +G1 E1 ; This is line 290 +G1 E1 ; This is line 291 +G1 E1 ; This is line 292 +G1 E1 ; This is line 293 +G1 E1 ; This is line 294 +G1 E1 ; This is line 295 +G1 E1 ; This is line 296 +G1 E1 ; This is line 297 +G1 E1 ; This is line 298 +G1 E1 ; This is line 299 +G1 E1 ; This is line 300 +G1 E1 ; This is line 301 +G1 E1 ; This is line 302 +G1 E1 ; This is line 303 +G1 E1 ; This is line 304 +G1 E1 ; This is line 305 +G1 E1 ; This is line 306 +G1 E1 ; This is line 307 +G1 E1 ; This is line 308 +G1 E1 ; This is line 309 +G1 E1 ; This is line 310 +G1 E1 ; This is line 311 +G1 E1 ; This is line 312 +G1 E1 ; This is line 313 +G1 E1 ; This is line 314 +G1 E1 ; This is line 315 +G1 E1 ; This is line 316 +G1 E1 ; This is line 317 +G1 E1 ; This is line 318 +G1 E1 ; This is line 319 +G1 E1 ; This is line 320 +G1 E1 ; This is line 321 +G1 E1 ; This is line 322 +G1 E1 ; This is line 323 +G1 E1 ; This is line 324 +G1 E1 ; This is line 325 +G1 E1 ; This is line 326 +G1 E1 ; This is line 327 +G1 E1 ; This is line 328 +G1 E1 ; This is line 329 +G1 E1 ; This one breaks +G90 +M808 +G1 E330 ; Should pass +SDCARD_LOOP_BEGIN COUNT=5 +; Sub-loop +G1 X100 Y100 +G91 +M808 L3 +; Inner-loop +G1 Z1 +M808 +G90 +SDCARD_LOOP_END +; Done |