mirror of
https://github.com/Klipper4FlashForge/firmware.git
synced 2026-10-21 12:52:16 -05:00
An adversarial re-read of master..HEAD, checking the new text rather than
trusting it. The substantive work held up -- all eight dead-code removals prove
out, SAFE-MODE->MOD_UI is complete, A3's reordering is correct -- but eleven
claims were wrong, and one made a document worse than it found it:
* docs/notes/10-hardware.md said `temperature_sensor motor_value` on
eboard:PA1 is "not in anything this repo ships". It is:
printer.motor.cfg:37 declares it and that file is in the package, which is
also why ff-toolchange.cfg can name MOTOR_STOP. The real nuance is that
printer.base.cfg does not include printer.motor.cfg. A correct claim in
25-app-vs-klipper-ownership.md was "corrected" into a false denial.
* docs/toolchange.md pointed at a worked example that reaches 0.125 mm. The
only example is NOZZLE=220 BED=80, which gives 0.045; the 0.08 bed term
needs a bed at 100 or above. Both numbers now stated, no forward reference.
* docs/testing.md said 48 tests; pytest collects 53.
* test_config_ownership.py cited bin/patch.sh:80/:88/:128 -- correct on
master, shifted by two when this branch deleted MARK_BEGIN/MARK_END. The
line numbers are dropped rather than re-pinned, so they cannot rot again.
* test_includes.py invented a reason for ff-legacy being last ("so its import
sees every [ff_tool] already declared"). ff_legacy resolves tools at
klippy:ready; order does not matter.
* fetch-assets.sh's replacement usage text omitted BUILD_MOONRAKER and was
less accurate than the vague line it replaced.
* 49-runout's sensor table still claimed `extruder: extruderN` after the A1
fix made that true only of our override, not of the stock file it describes.
* firmwareExe kept "newest version directory" after the same claim was
corrected in how-it-works.md.
* 25-app inverted the preflight call order and omitted that an M23 print gets
neither call.
* creator5-safe-moves.gcode called the prepare's G1 Z10 "the one move" below
Z50; the G28 and offset move before it also go below.
* DOC-DRIFT-AUDIT.md asserted both "Every finding has been applied" and
"Nothing in this file has been applied", and cited five commits after a
hash the rebase had rewritten.
53 passed.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
194 lines
6.7 KiB
Plaintext
194 lines
6.7 KiB
Plaintext
; ====================================================================
|
|
; Creator 5 / Creator 5 Pro -- safe first check
|
|
;
|
|
; The feature print with the heat and the filament taken out. Once the
|
|
; machine is homed, no move in THIS FILE goes below Z50 (the implicit
|
|
; prepare that runs before it does -- see the note at the end); nothing
|
|
; extrudes, and no heater is ever given a target. It is the file to run
|
|
; FIRST on a freshly flashed machine, so that the expensive way to
|
|
; discover a wrong Z offset or a dock that does not latch is not a
|
|
; nozzle in the plate.
|
|
;
|
|
; The one approach to the bed is G28 itself, which has to touch the eddy
|
|
; sensor to find Z. That is the moment to have a finger on the stop.
|
|
;
|
|
; It answers three questions, in this order:
|
|
; does the G28 wrapper home safely, docking a mounted tool first
|
|
; does a tool change actually latch and release
|
|
; do the fans, the chamber gate and END_PRINT do what they claim
|
|
;
|
|
; WHAT IT DOES NOT ANSWER
|
|
; Nothing about the print Z offset, the nozzle clean, the bed mesh or
|
|
; extrusion. Those need heat and filament and are what
|
|
; gcode/creator5-feature-test.gcode is for. Run this one, watch it,
|
|
; then run that one.
|
|
;
|
|
; BEFORE YOU START
|
|
; * no filament needed, and none should be pushed -- there is not a
|
|
; single E word in this file.
|
|
; * T0 and T1 must be docked or mounted. Change the SELECT_TOOL lines
|
|
; below for other tools; they are the only place a tool is named.
|
|
; * clear the plate. Nothing comes near it, but a first check is the
|
|
; wrong time to find out your clip is 60 mm tall.
|
|
; * KEEP THE EMERGENCY STOP WITHIN REACH. This is the first time the
|
|
; machine moves under this firmware.
|
|
;
|
|
; TWO REFUSALS THAT ARE CORRECT BEHAVIOUR, NOT FAULTS
|
|
; "Not calibrated: station_z=None ..." -- Mainsail's print entry
|
|
; point gates every job on the calibration, and it runs before this
|
|
; file's first line. On a machine that has not been calibrated yet,
|
|
; that refusal is the gate working. To go ahead anyway, deliberately:
|
|
; SET_GCODE_VARIABLE MACRO=_FF_JOB VARIABLE=allow_uncalibrated VALUE=1
|
|
; "Refusing to home Z: cannot tell whether a tool is mounted"
|
|
; -- the dock switches disagree. Run TOOLCHANGE_STATUS and find the
|
|
; one that is lying before you move anything.
|
|
;
|
|
; This file names no tool as a bare `Tn`, and carries no M104/M140, so
|
|
; ff_print derives nothing from it and the implicit prepare has nothing
|
|
; to heat or purge -- unlike the feature print, which wants prepare at 0.
|
|
;
|
|
; With prepare at 1 (the shipped default) the implicit START_PRINT still
|
|
; runs G28, BED_MESH_PROFILE LOAD=MESH_DATA and `G1 Z10 F1200` before
|
|
; this file's own first line. That Z10 is in the raw eddy frame, ~6.8 mm
|
|
; physical. The G28 and the offset move before it also take Z well below
|
|
; 50 -- homing is what drops you, as the opening note says. None of it
|
|
; heats or extrudes. Set prepare to 0 if you want the Z50 floor to hold
|
|
; from power-on to the last line.
|
|
; ====================================================================
|
|
|
|
G90
|
|
M83
|
|
|
|
; --------------------------------------------------------------------
|
|
; 1 Report the geometry before anything moves
|
|
; --------------------------------------------------------------------
|
|
M117 1/6 status
|
|
TOOLCHANGE_STATUS
|
|
TOOL_OFFSET_STATUS
|
|
G4 P2000
|
|
|
|
; --------------------------------------------------------------------
|
|
; 2 Home. The G28 wrapper docks a mounted tool before homing Z --
|
|
; watch for that. Homing Z with a head on drives it into the plate,
|
|
; which is the whole reason the wrapper exists.
|
|
; --------------------------------------------------------------------
|
|
M117 2/6 homing
|
|
G28
|
|
G1 Z50 F1200
|
|
G4 P1000
|
|
|
|
; --------------------------------------------------------------------
|
|
; 3 The bed, at 50 mm. Slow lap first, then a fast one: a belt that
|
|
; skips does it at speed, and the second lap ending where the first
|
|
; did is the check.
|
|
; --------------------------------------------------------------------
|
|
M117 3/6 slow lap
|
|
G1 X125.000 Y125.000 F6000
|
|
G1 X20.000 Y20.000 F6000
|
|
G1 X230.000 Y20.000 F6000
|
|
G1 X230.000 Y230.000 F6000
|
|
G1 X20.000 Y230.000 F6000
|
|
G1 X20.000 Y20.000 F6000
|
|
G1 X125.000 Y125.000 F6000
|
|
G4 P1000
|
|
|
|
M117 3/6 fast lap
|
|
G1 X20.000 Y20.000 F18000
|
|
G1 X230.000 Y20.000 F18000
|
|
G1 X230.000 Y230.000 F18000
|
|
G1 X20.000 Y230.000 F18000
|
|
G1 X20.000 Y20.000 F18000
|
|
G1 X125.000 Y125.000 F18000
|
|
G4 P1000
|
|
|
|
; A diagonal each way. On corexy a single failing motor shows here and
|
|
; nowhere else -- the head tracks an L instead of a diagonal.
|
|
M117 3/6 diagonals
|
|
G1 X20.000 Y20.000 F9000
|
|
G1 X230.000 Y230.000 F9000
|
|
G1 X20.000 Y230.000 F9000
|
|
G1 X230.000 Y20.000 F9000
|
|
G1 X125.000 Y125.000 F9000
|
|
G4 P1000
|
|
|
|
; Z, well clear of everything.
|
|
M117 3/6 Z travel
|
|
G1 Z150.000 F1200
|
|
G1 Z50.000 F1200
|
|
G4 P1000
|
|
|
|
; --------------------------------------------------------------------
|
|
; 4 Tool changes, cold and empty.
|
|
;
|
|
; SELECT_TOOL rather than a bare `T0`: the same code path, but
|
|
; ff_print scans a file's first bare Tn to decide which tool to
|
|
; prepare, and a file that names one would get a purge it does not
|
|
; want. [ff_toolchange] also ships restore_axis unset, so a change
|
|
; restores NO position -- every move after one re-states itself
|
|
; below, which is what your own sliced files must do too.
|
|
; --------------------------------------------------------------------
|
|
M117 4/6 grab T0
|
|
SELECT_TOOL T=0
|
|
G1 Z50.000 F1200
|
|
G1 X125.000 Y125.000 F6000
|
|
G4 P2000
|
|
TOOLCHANGE_STATUS
|
|
|
|
M117 4/6 change to T1
|
|
SELECT_TOOL T=1
|
|
G1 Z50.000 F1200
|
|
G1 X125.000 Y125.000 F6000
|
|
G4 P2000
|
|
TOOLCHANGE_STATUS
|
|
|
|
M117 4/6 park
|
|
TOOLCHANGE_PARK
|
|
G1 Z50.000 F1200
|
|
G4 P1000
|
|
TOOLCHANGE_STATUS
|
|
|
|
; --------------------------------------------------------------------
|
|
; 5 Fans, one at a time. P101 is a no-op by design: printer.macro.cfg's
|
|
; M106 has that branch commented out. Bare M106 and P1 are the part
|
|
; fan, P2 the chamber loop + cool pair, P3 the chamber fan.
|
|
; --------------------------------------------------------------------
|
|
M117 5/6 P101 -- nothing should spin
|
|
M106 P101 S255
|
|
G4 P3000
|
|
M117 5/6 part fan full
|
|
M106 S255
|
|
G4 P3000
|
|
M117 5/6 part fan half
|
|
M106 S128
|
|
G4 P3000
|
|
M117 5/6 part fan off
|
|
M106 S0
|
|
G4 P3000
|
|
M117 5/6 P2 chamber loop + cool
|
|
M106 P2 S255
|
|
G4 P3000
|
|
M106 P2 S0
|
|
M117 5/6 P3 chamber fan
|
|
M106 P3 S255
|
|
G4 P3000
|
|
M106 P3 S0
|
|
G4 P1000
|
|
|
|
; --------------------------------------------------------------------
|
|
; 6 The chamber gate. A Pro starts heating. A plain Creator 5 answers
|
|
; "no chamber heater on this model -- ignoring TARGET=40.0" and
|
|
; carries on. An ABORT here is a real failure. Set back to 0 straight
|
|
; away: this file is not a soak test.
|
|
; --------------------------------------------------------------------
|
|
M117 6/6 chamber gate
|
|
M141 S40
|
|
G4 P3000
|
|
M141 S0
|
|
|
|
M117 6/6 end
|
|
TOOLCHANGE_STATUS
|
|
|
|
;end_gcode
|
|
END_PRINT
|
|
;end_gcode end
|