@Phaedrux
config.g
;=== initialize variables ===;
M98 P"0:/sys/init.g"
;=== discard if necessary ===;
;=== configuration - initial networking setup ===;
M586 P0 S1 ;; enable http, disable ftp, disable telnet, set printer name, wait 5s for expansion boards
M586 P1 S0
M586 P2 S0
G4 S5
M550 P"legionXY" ;; in SBC mode, M550 goes in dsf-config.g, not config.g
;=== configuration - PanelDue init ===;
M575 P1 S1 B115200
;=== configuration - printer ===;
G90 ;; absolute coordinates, relative extruder moves
M83
M669 K1 ;; Kinematics type: 1 = CoreXY
;=== configuration - drive ===;
M569 P0.0 S0 D2 ;; Z-axis motors, 0.driver0,0.driver1,0.driver2
M569 P0.1 S0 D2
M569 P0.2 S0 D2
M569 P0.3 S1 D2 ;; Left and right motors (X- and Y- axis), 0.driver3,0.driver4
M569 P0.4 S1 D2
M569 P20.0 S1 D2 ;; Extruder, RRF36.driver0
;=== configuration - drive - axis mapping ===;
M584 X0.3 Y0.4 Z0.1:0.0:0.2 E20.0 ;; map E-axis here as toolboard will be connected
;=== configuration - drive - microstepping ===;
M350 X16 Y16 Z16 I1
;=== configuration - drive - steps/mm, current, idle timeout ===;
M92 X80 Y80 Z800 ;; set steps/mm, current (mA), idle timeout
M906 X1600 Y1600 Z1600 I30
M84 S30 ;; set idle hold 30s
;=== configuration - drive - speed, acceeleration, jerk ===;
M98 P"0:/sys/setMaxSpeed.g" ;; set all the max speeds below as these are adjusted during home moves so we only want to adjust in one spot
;=== configuration - axis - min/max ===;
M208 X0 Y0 Z0 S1
M208 X310 Y300 Z300 S0
;=== configuration - axis - endstops ===;
M574 X1 S1 P"20.io2.in" ;; configure active high (S1) X endstop at X- (X1) on RRF36.io2.in (20.io.in)
M574 Y2 S1 P"0.io2.in" ;; configure Y active high (S1) endstop at Y+ (Y2) on duet.io2.in (0.io2.in)
M574 Z1 S2 ;; configure Z-probe (S2) endstop at low end (Z1)
;=== configuration - axis - z-probe ===;
M558 P8 C"^20.io0.in" H5:1 F300:120 T6000 A20 B0 ;; klicky pcb probe installed on RRF36.io0.in (20.io0.in)
M98 P"0:/sys/setBuildPlate.g" ;; see setBuildPlate.g for Z probe trigger value, offset, trigger height
;=== configuration - axis - mesh compensation and bed dismensions ===;
M98 P"0:/sys/setDefaultProbePoints.g" ;; define mesh grid with allowance for mesh generation on printed area only
if !exists(global.Bed_Center_X) ;; calculate bed center, insert into object model
global Bed_Center_X = floor(move.axes[0].max / 2)
if !exists(global.Bed_Center_Y)
global Bed_Center_Y = floor(move.axes[1].max / 2)
;=== configuration - axis - lead screw position ===;
M671 X-4.5:150:304.5 Y-4.52:305:-4.52 S5
;=== configuration - sensor - bed heater & thermistor ===;
M308 S0 P"0.temp0" Y"thermistor" T100000 B3950 A"Bed" ;; create sensor S0 on duet.temp0 named "Bed"
M950 H0 C"0.out0" T0 Q11 ;; create heater (H0) for bed
M307 H0 B0 S1.00 ;; on bed H0 disable bang-bang mode and set PWM limit
M140 H0 ;; map heated bed to heater 0 (H0)
M143 H0 S120 ;; set heater H0 temperature limit to 120C
;=== !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ===;
;; run bed PID tune using code below
;;; ;;; H0 = heater 0, or bed
;;; ;;; S = temperature in C (90C)
;;; ; M303 H0 S90
;;;
;;; replace M307 below with results from M303
;;; M307 may have a Vnnn included with it
;;; if you're using mains (AC) bed heater on your bed, omit it
;=== !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ===;
M307 H0 R0.480 K0.256:0.000 D2.03 E1.35 S1.00 B0 ;; this is my M307, find your own
;=== configuration - sensor - chamber monitoring ===;
M308 S5 P"0.io4.out+0.io4.in" Y"dht22" A"Chamber" ;; DHT22 setup
M308 S8 P"S5.1" Y"dht-humidity" A"Humidity[%]"
M308 S11 Y"mcu-temp" A"MCU" ;; MCU temperature, with offset
M912 P0 S-1.2
;=== configuration - LEDs, chamber ===;
M950 P0 C"0.out5" Q1000 ;; configure Dayspring LEDs P0 on duet.out5 (0.out5)
;=== configuration - overrides ===;
;M501 ;; config-override.g should remain empty
;=== configuration - gizmo1 ===;
M98 P"0:/sys/gizmo1.g"
;; housekeeping
M568 P0 R0 S0 A0 ;; turn tool0 heater off
M140 S-273.1 ;; turn bed off
T0 P0 ;; select T0, don't run any toolchange macros
;=== configuration ===;
setMaxSpeed.g
;=== configuration - drive - current and idle factor ===;
M906 X1600 Y1600 Z1600 I30 ;; set motor currents and motor idle factor in per cent, December 2023
M913 X100 Y100 Z100 ;; ensure motors are at 100% current after homing
;=== configuration - drive - jerk ===;
M205 X5.00 Y5.00 Z0.1 P1 ;; set maximum instantaneous speed changes (mm/min) and jerk policy
;=== configuration - drive - speed ===;
M203 X18000.00 Y18000.00 Z900.00 ;; set maximum speeds (mm/min)
;=== configuration - drive - acceleration ===;
M201 X5000.00 Y5000.00 Z100.00 ;; set accelerations (mm/s^2), orbiter v2
M204 P2500 T5000 ;; Set printing and travel acceleration (mm/s^2)
setBuildPlate.g
;=== configuration - bed - mesh compensation ===;
;M376 H3 ;; fade mesh compensation at 3mm
;=== configuration - bed - z-probe offset ===;
;;set in config.g, but change here // old offset: G31 K0 P500 X-27.8 Y-12.0 Z1.55
G31 P500 X-23.34 Y-20.49 Z1.7 ;; klickyPCB with stock switch
setDefaultProbePoints.g
M557 X15:275 Y15:275 P7
gizmo1.g
;; gizmoN.g is the comprehensive definition of a tool (extruder, hotend, heater, thermisistor, filament monitoring, input shaping, tool and part cooling fans)
;; includes hotend (thermistor, heater), fan (tool, part), extruder (axis, microstepping), tool assignment and offset
;=== gizmo1 - fan ===;
M950 F1 C"!0.out4+0.out4.tach" ;; create fan F1 named "4028" with duet.out4+duet.out4.tach (0.out4+0.out4.tach)
M106 P1 C"4028" S0 H-1
;=== gizmo1 - hotend thermistor ===;
M308 S1 P"20.temp0" Y"thermistor" T100000 B4725 C7.060000e-8 A"e3drevo" ;; configure sensor 1 (S1) on pin RRF36.temp0 (20.temp0) as thermistor
M950 H1 C"20.out0" T1 ;; create heater output (H1) on RRF36.out0 (20.out0) and map to sensor 1 (T1)
M307 H1 B0 S1.00 ;; set PWM limit (S1.00)
M563 P0 S"revo" D0 H1 F1 ;; define tool0 (T0)
;; assign fan F1, extruder drive D0 (E0) and heater H1 to tool T0 named "revo"
G10 P0 X0 Y0 Z0 ;; set axis offsets, max temperature, initial temperature
M143 H1 S280
G10 P0 R0 S0
;=== gizmo1 - fan ===;
M950 F1 C"!0.out4+0.out4.tach" ;; create fan F1 named "4028" with duet.out4+duet.out4.tach (0.out4+0.out4.tach)
M106 P1 C"4028" S0 H-1
;=== gizmo1 - hotend thermistor ===;
M308 S1 P"20.temp0" Y"thermistor" T100000 B4725 C7.060000e-8 A"e3drevo" ;; configure sensor 1 (S1) on pin RRF36.temp0 (20.temp0) as thermistor
M950 H1 C"20.out0" T1 ;; create heater output (H1) on RRF36.out0 (20.out0) and map to sensor 1 (T1)
M307 H1 B0 S1.00 ;; set PWM limit (S1.00)
M563 P0 S"revo" D0 H1 F1 ;; define tool0 (T0)
;; assign fan F1, extruder drive D0 (E0) and heater H1 to tool T0 named "revo"
G10 P0 X0 Y0 Z0 ;; set axis offsets, max temperature, initial temperature
M143 H1 S290
G10 P0 R0 S0
;=== !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ===;
;; run hotend PID tune!! using code below
;;; T0 = PID tune tool0
;;; S210 = temperature in C (210C)
;;; F0.45 = Fan PWM value; 0.45 = 45%
;;; ; M303 T0 S210 F0.45
;;; replace M307 below with results from M303
;=== !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ===;
M307 H1 R3.611 K0.702:0.541 D1.95 E1.35 S1.00 B0 V23.5 ;; this is my M307, find your own
;=== gizmo1 - fan - hotend ===;
M950 F0 C"20.out2" Q250 ;; create fan 0 (F0) on pin RRF.out2 (20.out2)
M106 P0 C"tool" S0 H1 T45 L255 ;; set fan 0 (P0) to thermostatic control (45C), full-speed (L255) named "tool"
;=== gizmo1 - extruder ===;
;; Orbiter v2 with LDO motor
M906 E1200 I10 ;; set extruder motor current and idle factor
M350 E16 I1 ;; set microstepping to 16 with interpolation
M92 E671.64 ;; set extruder steps per mm
M203 E7200 ;; set max speed, jerk, acceleration
M205 E5.0
M201 E3000
T0 P0 ;; select T0, don't run toolchange macro
M703 ;; load filament specific gcode
;; I keep filament-specific PID tuning, retraction, and pressure advance
;; settings here.
;=== gizmo1 - options ===;
M955 P20.0 I12 ;; accelerometer on RRF36
M950 E0 C"20.rgbled" T2 U2 Q3000000 ;; configure toolhead LED E0 on FLY36.rgbled (20.rgbled)
;M98 P"0:/sys/setFilamentMonitor.g" ;; filament monitor
;M98 P"0:/sys/setInputShaping.g" ;; input shaping parameters
mesh.g
; perform mesh compensation only where printing
M98 P"0:/sys/setDefaultProbePoints.g" ; reset probe points again, just in case
if (exists(param.A) && exists(param.B) && exists(param.C) && exists(param.D) && exists(param.N))
M557 X{max(move.compensation.probeGrid.mins[0],param.A),min(move.compensation.probeGrid.maxs[0],param.B)} Y{max(move.compensation.probeGrid.mins[1],param.C),min(move.compensation.probeGrid.maxs[1] ,param.D)} S{param.N}
if result != 0
abort "Invalid M557 parameters"
G29 S0
Only two 'Error: Pop(): stack underflow on Aux' messages this time.
M122 post-error:
m122
=== Diagnostics ===
RepRapFirmware for Duet 3 Mini 5+ version 3.5.1 (2024-04-19 14:41:25) running on Duet 3 Mini5plus WiFi (SBC mode)
Board ID: NTK2Z-J196U-D65J0-40KMN-1V03Z-ZJMGF
Used output buffers: 1 of 40 (40 max)
=== RTOS ===
Static ram: 103232
Dynamic ram: 108132 of which 0 recycled
Never used RAM 27004, free system stack 140 words
Tasks: SBC(2,ready,1.9%,432) HEAT(3,nWait 6,0.0%,336) Move(4,nWait 6,0.2%,241) CanReceiv(6,nWait 1,0.1%,797) CanSender(5,nWait 7,0.0%,336) CanClock(7,delaying,0.0%,348) TMC(4,delaying,1.5%,68) MAIN(2,running,95.1%,653) IDLE(0,ready,0.4%,30) AIN(4,delaying,0.9%,260), total 100.0%
Owned mutexes: HTTP(MAIN)
=== Platform ===
Last reset 00:12:14 ago, cause: power up
Last software reset at 2024-04-23 15:37, reason: User, Gcodes spinning, available RAM 27436, slot 0
Software reset code 0x6003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00446000 BFAR 0xe000ed38 SP 0x00000000 Task SBC Freestk 0 n/a
Error status: 0x04
Aux0 errors 0,2,0
MCU revision 3, ADC conversions started 734633, completed 734633, timed out 0, errs 0
MCU temperature: min 21.8, current 41.0, max 41.0
Supply voltage: min 24.3, current 24.3, max 24.4, under voltage events: 0, over voltage events: 0, power good: yes
Heap OK, handles allocated/used 99/10, heap memory allocated/used/recyclable 2048/1332/1156, gc cycles 0
Events: 0 queued, 0 completed
Driver 0: standstill, SG min 0, read errors 0, write errors 0, ifcnt 28, reads 1168, writes 28, timeouts 0, DMA errors 0, CC errors 0
Driver 1: standstill, SG min 0, read errors 0, write errors 0, ifcnt 26, reads 1170, writes 26, timeouts 0, DMA errors 0, CC errors 0
Driver 2: standstill, SG min 0, read errors 0, write errors 0, ifcnt 26, reads 1170, writes 26, timeouts 0, DMA errors 0, CC errors 0
Driver 3: standstill, SG min 0, read errors 0, write errors 0, ifcnt 28, reads 1168, writes 28, timeouts 0, DMA errors 0, CC errors 0
Driver 4: standstill, SG min 0, read errors 0, write errors 0, ifcnt 28, reads 1168, writes 28, timeouts 0, DMA errors 0, CC errors 0
Driver 5: standstill, SG min 0, read errors 0, write errors 0, ifcnt 10, reads 1186, writes 10, timeouts 0, DMA errors 0, CC errors 0
Driver 6: standstill, SG min 0, read errors 0, write errors 0, ifcnt 10, reads 1186, writes 10, timeouts 0, DMA errors 0, CC errors 0
Date/time: 2024-04-23 15:52:32
Cache data hit count 1534212724
Slowest loop: 249.03ms; fastest: 0.11ms
=== Storage ===
Free file entries: 20
SD card 0 not detected, interface speed: 0.0MBytes/sec
SD card longest read time 0.0ms, write time 0.0ms, max retries 0
=== Move ===
DMs created 83, segments created 8, maxWait 189503ms, bed compensation in use: mesh, height map offset 0.000, max steps late 0, min interval 0, bad calcs 0, ebfmin 0.00, ebfmax 0.00
no step interrupt scheduled
Moves shaped first try 0, on retry 0, too short 0, wrong shape 0, maybepossible 0
=== DDARing 0 ===
Scheduled moves 236, completed 236, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 10], CDDA state -1
=== DDARing 1 ===
Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
=== Heat ===
Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0
Heater 0 is on, I-accum = 0.2
Heater 1 is on, I-accum = 0.0
=== GCodes ===
Movement locks held by null, null
HTTP* is doing "M122" in state(s) 0
Telnet is idle in state(s) 0
File* is idle in state(s) 0
USB is idle in state(s) 0
Aux is idle in state(s) 0
Trigger* is idle in state(s) 0
Queue* is idle in state(s) 0
LCD is idle in state(s) 0
SBC* is idle in state(s) 0
Daemon is idle in state(s) 0
Aux2 is idle in state(s) 0
Autopause is idle in state(s) 0
File2 is idle in state(s) 0
Queue2 is idle in state(s) 0
Q0 segments left 0, axes/extruders owned 0x0000807
Code queue 0 is empty
Q1 segments left 0, axes/extruders owned 0x0000000
Code queue 1 is empty
=== CAN ===
Messages queued 6841, received 20597, lost 0, errs 0, boc 0
Longest wait 2ms for reply type 6053, peak Tx sync delay 40, free buffers 26 (min 25), ts 3672/3671/0
Tx timeouts 0,0,0,0,0,0
=== SBC interface ===
Transfer state: 5, failed transfers: 0, checksum errors: 0
RX/TX seq numbers: 28359/28359
SPI underruns 0, overruns 0
State: 5, disconnects: 0, timeouts: 0 total, 0 by SBC, IAP RAM available 0x0d3f4
Buffer RX/TX: 0/0-0, open files: 0
=== Duet Control Server ===
Duet Control Server version 3.5.1 (2024-04-19 16:30:56, 32-bit)
HTTP+Executed:
> Executing M122
File 0:/gcodes/squirrelbrain_cube_10_0.2mm_PLA_VC3_300_1h54m.gcode is selected, paused
Code buffer space: 4096
Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 0
Full transfers per second: 31.05, max time between full transfers: 55.3ms, max pin wait times: 68.1ms/3.7ms
Codes per second: 0.73
Maximum length of RX/TX data transfers: 4436/1200
I was able to resume the print this time. I didn't not get a another series of errors when I tried pausing the print again.