|  |  |  | @ -1108,25 +1108,25 @@ void Stepper::report_positions() { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #if ENABLED(BABYSTEPPING) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define _ENABLE(axis) enable_## axis() | 
			
		
	
		
			
				
					|  |  |  |  |   #define _READ_DIR(AXIS) AXIS ##_DIR_READ | 
			
		
	
		
			
				
					|  |  |  |  |   #define _INVERT_DIR(AXIS) INVERT_## AXIS ##_DIR | 
			
		
	
		
			
				
					|  |  |  |  |   #define _APPLY_DIR(AXIS, INVERT) AXIS ##_APPLY_DIR(INVERT, true) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define BABYSTEP_AXIS(axis, AXIS, INVERT) { \ | 
			
		
	
		
			
				
					|  |  |  |  |       _ENABLE(axis); \ | 
			
		
	
		
			
				
					|  |  |  |  |       uint8_t old_pin = _READ_DIR(AXIS); \ | 
			
		
	
		
			
				
					|  |  |  |  |       _APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^direction^INVERT); \ | 
			
		
	
		
			
				
					|  |  |  |  |       _APPLY_STEP(AXIS)(!_INVERT_STEP_PIN(AXIS), true); \ | 
			
		
	
		
			
				
					|  |  |  |  |       delayMicroseconds(2); \ | 
			
		
	
		
			
				
					|  |  |  |  |       _APPLY_STEP(AXIS)(_INVERT_STEP_PIN(AXIS), true); \ | 
			
		
	
		
			
				
					|  |  |  |  |       _APPLY_DIR(AXIS, old_pin); \ | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   // MUST ONLY BE CALLED BY AN ISR,
 | 
			
		
	
		
			
				
					|  |  |  |  |   // No other ISR should ever interrupt this!
 | 
			
		
	
		
			
				
					|  |  |  |  |   void Stepper::babystep(const uint8_t axis, const bool direction) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define _ENABLE(axis) enable_## axis() | 
			
		
	
		
			
				
					|  |  |  |  |     #define _READ_DIR(AXIS) AXIS ##_DIR_READ | 
			
		
	
		
			
				
					|  |  |  |  |     #define _INVERT_DIR(AXIS) INVERT_## AXIS ##_DIR | 
			
		
	
		
			
				
					|  |  |  |  |     #define _APPLY_DIR(AXIS, INVERT) AXIS ##_APPLY_DIR(INVERT, true) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define BABYSTEP_AXIS(axis, AXIS, INVERT) { \ | 
			
		
	
		
			
				
					|  |  |  |  |         _ENABLE(axis); \ | 
			
		
	
		
			
				
					|  |  |  |  |         uint8_t old_pin = _READ_DIR(AXIS); \ | 
			
		
	
		
			
				
					|  |  |  |  |         _APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^direction^INVERT); \ | 
			
		
	
		
			
				
					|  |  |  |  |         _APPLY_STEP(AXIS)(!_INVERT_STEP_PIN(AXIS), true); \ | 
			
		
	
		
			
				
					|  |  |  |  |         delayMicroseconds(2); \ | 
			
		
	
		
			
				
					|  |  |  |  |         _APPLY_STEP(AXIS)(_INVERT_STEP_PIN(AXIS), true); \ | 
			
		
	
		
			
				
					|  |  |  |  |         _APPLY_DIR(AXIS, old_pin); \ | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     switch (axis) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       case X_AXIS: | 
			
		
	
	
		
			
				
					|  |  |  | 
 |