With the 3.3 firmware, there’s no need to define the U and V axes. Keep in min that certain things must happen in order. M584 has to be fairly early in the config.
Here’s my running config.g:
; Configuration file for Duet WiFi (firmware version 3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.2.3 on Tue Apr 20 2021 01:19:12 GMT-0600 (Mountain Daylight Time)
; Monkeyed with by SupraGuy because obviously I know better than the configuration tool, lol!
; General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"MPCNC Primo" ; set printer name
; Network
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S0 ; disable FTP
M586 P2 S0 ; disable Telnet
; Drives
M669 K0 ; set Cartesian kinematics
M569 P0 S0 ; physical drive 0 goes backwards
M569 P1 S1 ; physical drive 1 goes forwards
M569 P2 S1 ; physical drive 2 goes forwards
M569 P3 S0 ; physical drive 3 goes backwards
M569 P4 S1 ; physical drive 4 goes forwards
M584 X0:3 Y1:4 Z2 ; set drive mapping: X on drives 0 and 3, Y on 1 and 4, Z on 2
M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation
M92 X100.00 Y100.00 Z400.00 ; set steps per mm
M566 X900.00 Y900.00 Z60.00 ; set maximum instantaneous speed changes (mm/min)
M203 X3000.0 Y3000.0 Z180.00 ; set maximum speeds (mm/min) 5 centimeters per second, lol
M201 X250.00 Y250.00 Z20.00 ; set accelerations (mm/s^2)
M906 X1200 Y1200 Z1200 I75 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout
; Axis Limits
M208 X0 Y0 Z-12.5 S1 ; set axis minima
M208 X635 Y940 Z90 S0 ; set axis maxima
; Endstops
M574 X1 S1 P"^xstop+^e0stop" ; configure active-high endstop for low end on X via pin ^xstop+^e0stop
M574 Y1 S1 P"^ystop+^e1stop" ; configure active-high endstop for low end on Y via pin ^ystop+^e1stop
; Z-Probe
M558 P5 C"!^zprobe.in" H5 F120 T6000 ; set Z probe type to switch and the dive height + speeds
G31 P850 X0 Y0 Z0.5 ; set Z probe trigger value, offset and trigger height
M557 X15:615 Y15:915 S100 ; define mesh grid
; Heaters
M140 H-1 ; disable heated bed (overrides default heater mapping)
M308 S2 Y"drivers" A"DRIVERS" ; configure sensor 2 as temperature warning and overheat flags on the TMC2660 on Duet
M308 S3 Y"mcu-temp" A"MCU" ; configure sensor 3 as thermistor on pin e1temp for left stepper
; Fans
M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency
M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency
M106 P1 S1 H T45 ; set fan 1 value. Thermostatic control is turned on
M950 F2 C"fan2" Q500 ; create fan 2 on pin fan2 and set its frequency
M106 P2 H2:3 L0.15 X1 B0.3 T25:60 ; set fan 2 value. Thermostatic control is turned on
; Tools
M563 P0 S"Router" R0 ; Define the router as tool 0
M453 ; Set CNC Mode
; Custom settings are not defined
M575 P1 S1 B57600 ; Enable PanelDUE
G54 ; Select Workspace Coordinate 1
So you’ll see my M584 only defines X, Y and Z. (My LowRider does define U and V as well, so that I can independently jog the Y2 and Z2 motors after homing. That config file is still ugly because I’m working on other stuff. For the Primo, it was easy to adjust the machine stops to be square, so there was no need.
I also set axis limits, so that the machine does not try to move out of the space I defined. The Z limit of -12.5 is temporary, I usually have it set to -2.5 because that’s as far as I want the tool to dig into the spoilboard, and it keeps those limits in absolute position, regardless of work coordinates.
Setting the endstops with the + sign works fine, you just have to make sure you define them in the same order that you defined the drives earlier.
Those pseudo “heaters” are set up so that I can monitor the overtemp function of the drivers, and the MCU temperature. If the drivers get to overheating, I want the fan on full blast, but they don’t give you actual temps, just overheat or no. The MCU is sort of a weather vane and I can use it to set the fan to hopefully keep the overtemp on the drivers from ever activating.
My LowRider config has a bunch of stuff for laser mode defined as well, but CNC mode and workspace 1 are how it leaves the config alone. Switching to laser mode is a macro, and another macro switches it back… But it’s still fugly, so forgive me for not posting that configuration.