M350 not working wrt M584



  • So I've only had my DuetEthernet a day but it was my understanding that once M584 was executed, an M350 would automatically apply to all drivers mapped to a specific axis. At least with 1.20 and 1.21 this seems to not be the case...

    M584 X4:3 Y0:1 Z2
    M350 X32 Y32 Z16 E16:16 I0
    M92 X320 Y320 Z160 E160:160
    

    results in my X axis motors only moving half the distance they should.

    Setting E0 and E1 (normally drivers 3:4) fixes the issue.

    M350 X32 Y32 Z16 E32:32 I0
    

    results in the correct movement.

    M92 does seem to behave as I'd expect.

    Did I miss something?



  • keep it easy.
    Put the M92 command in front of M350, M92 will assume x16, so put correct values for that microstepping.
    Any M350 command that comes after M92, the duet will recalculate the steps per mm correctly according the microstepping values provided in M350.



  • @whosrdaddy said in M350 not working wrt M584:

    keep it easy.
    Put the M92 command in front of M350, M92 will assume x16, so put correct values for that microstepping.
    Any M350 command that comes after M92, the duet will recalculate the steps per mm correctly according the microstepping values provided in M350.

    Unfortunately, that makes things worse.
    Even with just...

    M584 X4:3 Y0:1 Z2
    M92 X320 Y320
    M350 X32 Y32
    

    One X axis motor spins at twice the rate as the other.
    The only way to make it work is to set...

    M350 X32 Y32 E32:32
    


  • The only way to make it work is to set...

    M350 X32 Y32 E32:32
    

    I take it back. The spin at the same rate but the wrong rate. Still too fast.

    M350
    Microstepping - X:32, Y:32, Z:16(on), E:32:32:16:16:16:16:16:16:16
    M92
    Steps/mm: X: 640.000, Y: 640.000, Z: 4000.000, E: 320.000:320.000:420.000:420.000:420.000:420.000:420.000:420.000:420.000
    

    M92 is not what I set it to. Maybe I need to go back and read more because this isn't making sense.

    Just found this in the cartesian guide...

    The M350 command to set microstepping should come before the M92 commands to set steps/mm, because the steps/mm are adjusted automatically when microstepping is changed.



  • read the M350 manual

    both setups are possible. If you want to play with microstepping just put M92 in front of M350...



  • I've got a feeling that it's because of this quote from the explanation of M584

    "Assigning a drive using M584 does not remove its old assignment. Therefore, if you assign a drive that defaults to being an extruder drive, you should also assign the extruder drives explicitly as in the above example. Failure to do so may result in unexpected behaviour."

    The example referred to has this "M584 X0 Y1 Z2:3 E4:5:6"

    So your M584 has to include the extruders as well as X, Y and Z.

    My set up is a bit different to yours but I do remap the drives and the relevant parts of my config,g are as follows:

    M584 X0:3 Y1:4 Z2 U10 V11 E5:6:7:8:9 P3;
    M350 X16 Y16 U16 V16 Z16 E16:16:16:16:16 I1;
    M92 X80 Y80 U80 V80 Z3200 E393:397:403:400:401 ;

    HTH

    Edit. You can just ignore all the U and V values, then it'll look more like your own setup.



  • @deckingman said in M350 not working wrt M584:

    "Assigning a drive using M584 does not remove its old assignment. Therefore, if you assign a drive that defaults to being an extruder drive, you should also assign the extruder drives explicitly as in the above example. Failure to do so may result in unexpected behaviour."

    That was it!

    M584 X4:3 Y0:1 Z2 E5:6
    M350 X32 Y32 I0
    M92 X320 Y320
    

    Now does what I'd expect.

    Thanks all!



  • @gtj0

    I thought that would do the trick - glad you got it sorted.


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.