Implement MIXING_EXTRUDER and SWITCHING_EXTRUDER
This commit is contained in:
		@@ -167,37 +167,63 @@ void manage_inactivity(bool ignore_stepper_queue = false);
 | 
			
		||||
  #define disable_z() NOOP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if HAS_E0_ENABLE
 | 
			
		||||
  #define  enable_e0() E0_ENABLE_WRITE( E_ENABLE_ON)
 | 
			
		||||
  #define disable_e0() E0_ENABLE_WRITE(!E_ENABLE_ON)
 | 
			
		||||
#else
 | 
			
		||||
  #define  enable_e0() NOOP
 | 
			
		||||
  #define disable_e0() NOOP
 | 
			
		||||
#endif
 | 
			
		||||
#if ENABLED(MIXING_EXTRUDER)
 | 
			
		||||
 | 
			
		||||
#if (EXTRUDERS > 1) && HAS_E1_ENABLE
 | 
			
		||||
  #define  enable_e1() E1_ENABLE_WRITE( E_ENABLE_ON)
 | 
			
		||||
  #define disable_e1() E1_ENABLE_WRITE(!E_ENABLE_ON)
 | 
			
		||||
#else
 | 
			
		||||
  /**
 | 
			
		||||
   * Mixing steppers synchronize their enable (and direction) together
 | 
			
		||||
   */
 | 
			
		||||
  #if MIXING_STEPPERS > 3
 | 
			
		||||
    #define  enable_e0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); E3_ENABLE_WRITE( E_ENABLE_ON); }
 | 
			
		||||
    #define disable_e0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); E3_ENABLE_WRITE(!E_ENABLE_ON); }
 | 
			
		||||
  #elif MIXING_STEPPERS > 2
 | 
			
		||||
    #define  enable_e0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); }
 | 
			
		||||
    #define disable_e0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); }
 | 
			
		||||
  #else
 | 
			
		||||
    #define  enable_e0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); }
 | 
			
		||||
    #define disable_e0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); }
 | 
			
		||||
  #endif
 | 
			
		||||
  #define  enable_e1() NOOP
 | 
			
		||||
  #define disable_e1() NOOP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (EXTRUDERS > 2) && HAS_E2_ENABLE
 | 
			
		||||
  #define  enable_e2() E2_ENABLE_WRITE( E_ENABLE_ON)
 | 
			
		||||
  #define disable_e2() E2_ENABLE_WRITE(!E_ENABLE_ON)
 | 
			
		||||
#else
 | 
			
		||||
  #define  enable_e2() NOOP
 | 
			
		||||
  #define disable_e2() NOOP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (EXTRUDERS > 3) && HAS_E3_ENABLE
 | 
			
		||||
  #define  enable_e3() E3_ENABLE_WRITE( E_ENABLE_ON)
 | 
			
		||||
  #define disable_e3() E3_ENABLE_WRITE(!E_ENABLE_ON)
 | 
			
		||||
#else
 | 
			
		||||
  #define  enable_e3() NOOP
 | 
			
		||||
  #define disable_e3() NOOP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else // !MIXING_EXTRUDER
 | 
			
		||||
 | 
			
		||||
  #if HAS_E0_ENABLE
 | 
			
		||||
    #define  enable_e0() E0_ENABLE_WRITE( E_ENABLE_ON)
 | 
			
		||||
    #define disable_e0() E0_ENABLE_WRITE(!E_ENABLE_ON)
 | 
			
		||||
  #else
 | 
			
		||||
    #define  enable_e0() NOOP
 | 
			
		||||
    #define disable_e0() NOOP
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  #if E_STEPPERS > 1 && HAS_E1_ENABLE
 | 
			
		||||
    #define  enable_e1() E1_ENABLE_WRITE( E_ENABLE_ON)
 | 
			
		||||
    #define disable_e1() E1_ENABLE_WRITE(!E_ENABLE_ON)
 | 
			
		||||
  #else
 | 
			
		||||
    #define  enable_e1() NOOP
 | 
			
		||||
    #define disable_e1() NOOP
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  #if E_STEPPERS > 2 && HAS_E2_ENABLE
 | 
			
		||||
    #define  enable_e2() E2_ENABLE_WRITE( E_ENABLE_ON)
 | 
			
		||||
    #define disable_e2() E2_ENABLE_WRITE(!E_ENABLE_ON)
 | 
			
		||||
  #else
 | 
			
		||||
    #define  enable_e2() NOOP
 | 
			
		||||
    #define disable_e2() NOOP
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  #if E_STEPPERS > 3 && HAS_E3_ENABLE
 | 
			
		||||
    #define  enable_e3() E3_ENABLE_WRITE( E_ENABLE_ON)
 | 
			
		||||
    #define disable_e3() E3_ENABLE_WRITE(!E_ENABLE_ON)
 | 
			
		||||
  #else
 | 
			
		||||
    #define  enable_e3() NOOP
 | 
			
		||||
    #define disable_e3() NOOP
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
#endif // !MIXING_EXTRUDER
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The axis order in all axis related arrays is X, Y, Z, E
 | 
			
		||||
@@ -376,6 +402,10 @@ extern uint8_t active_extruder;
 | 
			
		||||
  void print_heaterstates();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if ENABLED(MIXING_EXTRUDER)
 | 
			
		||||
  extern float mixing_factor[MIXING_STEPPERS];
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void calculate_volumetric_multipliers();
 | 
			
		||||
 | 
			
		||||
// Buzzer
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user