| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -62,6 +62,7 @@ static long acceleration_time, deceleration_time;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static unsigned short acc_step_rate; // needed for deccelaration start point
 | 
					 | 
					 | 
					 | 
					static unsigned short acc_step_rate; // needed for deccelaration start point
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static char step_loops;
 | 
					 | 
					 | 
					 | 
					static char step_loops;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static unsigned short OCR1A_nominal;
 | 
					 | 
					 | 
					 | 
					static unsigned short OCR1A_nominal;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					static unsigned short step_loops_nominal;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					volatile long endstops_trigsteps[3]={0,0,0};
 | 
					 | 
					 | 
					 | 
					volatile long endstops_trigsteps[3]={0,0,0};
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					volatile long endstops_stepsTotal,endstops_stepsDone;
 | 
					 | 
					 | 
					 | 
					volatile long endstops_stepsTotal,endstops_stepsDone;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -288,6 +289,8 @@ FORCE_INLINE void trapezoid_generator_reset() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  deceleration_time = 0;
 | 
					 | 
					 | 
					 | 
					  deceleration_time = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // step_rate to timer interval
 | 
					 | 
					 | 
					 | 
					  // step_rate to timer interval
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  OCR1A_nominal = calc_timer(current_block->nominal_rate);
 | 
					 | 
					 | 
					 | 
					  OCR1A_nominal = calc_timer(current_block->nominal_rate);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  // make a note of the number of step loops required at nominal speed
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  step_loops_nominal = step_loops;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  acc_step_rate = current_block->initial_rate;
 | 
					 | 
					 | 
					 | 
					  acc_step_rate = current_block->initial_rate;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  acceleration_time = calc_timer(acc_step_rate);
 | 
					 | 
					 | 
					 | 
					  acceleration_time = calc_timer(acc_step_rate);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  OCR1A = acceleration_time;
 | 
					 | 
					 | 
					 | 
					  OCR1A = acceleration_time;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -665,6 +668,8 @@ ISR(TIMER1_COMPA_vect)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					    else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      OCR1A = OCR1A_nominal;
 | 
					 | 
					 | 
					 | 
					      OCR1A = OCR1A_nominal;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      // ensure we're running at the correct step rate, even if we just came off an acceleration
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      step_loops = step_loops_nominal;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // If current block is finished, reset pointer 
 | 
					 | 
					 | 
					 | 
					    // If current block is finished, reset pointer 
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |