chiark / gitweb /
Merge git://github.com/daid/Marlin into Marlin_v1
authorErik van der Zalm <erik@vdzalm.eu>
Sat, 14 Jul 2012 13:07:14 +0000 (15:07 +0200)
committerErik van der Zalm <erik@vdzalm.eu>
Sat, 14 Jul 2012 13:07:14 +0000 (15:07 +0200)
Added invert step pins to corexy code

1  2 
Marlin/stepper.cpp

index 5a24ac44ae4a52ce4e8b469df4fd8f89644fd6b9,6b561289cca19338f1746a29da6229938cf42652..38c18558742b9e36ab7a5519d2f77fc2a2bd4371
@@@ -482,88 -446,38 +482,88 @@@ ISR(TIMER1_COMPA_vect
          }
        }    
        #endif //ADVANCE
 -      
 -      counter_x += current_block->steps_x;
 -      if (counter_x > 0) {
 -        WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
 -        counter_x -= current_block->step_event_count;
 -        WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
 -        count_position[X_AXIS]+=count_direction[X_AXIS];   
 -      }
 -
 -      counter_y += current_block->steps_y;
 -      if (counter_y > 0) {
 -        WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
 -        counter_y -= current_block->step_event_count;
 -        WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
 -        count_position[Y_AXIS]+=count_direction[Y_AXIS];
 -      }
  
-           WRITE(X_STEP_PIN, HIGH);
 +      #if !defined COREXY      
 +        counter_x += current_block->steps_x;
 +        if (counter_x > 0) {
-           WRITE(X_STEP_PIN, LOW);
++          WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
 +          counter_x -= current_block->step_event_count;
 +          count_position[X_AXIS]+=count_direction[X_AXIS];   
-           WRITE(Y_STEP_PIN, HIGH);
++          WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
 +        }
 +  
 +        counter_y += current_block->steps_y;
 +        if (counter_y > 0) {
-           count_position[Y_AXIS]+=count_direction[Y_AXIS];         
-           WRITE(Y_STEP_PIN, LOW);
++          WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
 +          counter_y -= current_block->step_event_count; 
-           WRITE(X_STEP_PIN, HIGH);
-           WRITE(Y_STEP_PIN, HIGH);
++          count_position[Y_AXIS]+=count_direction[Y_AXIS]; 
++          WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
 +        }
 +      #endif
 +  
 +      #ifdef COREXY
 +        counter_x += current_block->steps_x;        
 +        counter_y += current_block->steps_y;
 +        
 +        if ((counter_x > 0)&&!(counter_y>0)){  //X step only
-           WRITE(X_STEP_PIN, LOW);
-           WRITE(Y_STEP_PIN, LOW);
++          WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
++          WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
 +          counter_x -= current_block->step_event_count; 
 +          count_position[X_AXIS]+=count_direction[X_AXIS];         
-           WRITE(X_STEP_PIN, HIGH);
-           WRITE(Y_STEP_PIN, HIGH);
++          WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
++          WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
 +        }
 +        
 +        if (!(counter_x > 0)&&(counter_y>0)){  //Y step only
-           WRITE(X_STEP_PIN, LOW);
-           WRITE(Y_STEP_PIN, LOW);
++          WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
++          WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
 +          counter_y -= current_block->step_event_count; 
 +          count_position[Y_AXIS]+=count_direction[Y_AXIS];
-             WRITE(Y_STEP_PIN, HIGH);
++          WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
++          WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
 +        }        
 +        
 +        if ((counter_x > 0)&&(counter_y>0)){  //step in both axes
 +          if (((out_bits & (1<<X_AXIS)) == 0)^((out_bits & (1<<Y_AXIS)) == 0)){  //X and Y in different directions
-             WRITE(Y_STEP_PIN, LOW);
++            WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
 +            counter_x -= current_block->step_event_count;             
-             WRITE(Y_STEP_PIN, HIGH);
++            WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
 +            step_wait();
 +            count_position[X_AXIS]+=count_direction[X_AXIS];
 +            count_position[Y_AXIS]+=count_direction[Y_AXIS];
-             WRITE(Y_STEP_PIN, LOW);
++            WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
 +            counter_y -= current_block->step_event_count;
-             WRITE(X_STEP_PIN, HIGH);
++            WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
 +          }
 +          else{  //X and Y in same direction
-             WRITE(X_STEP_PIN, LOW) ;
++            WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
 +            counter_x -= current_block->step_event_count;             
-             WRITE(X_STEP_PIN, HIGH); 
++            WRITE(X_STEP_PIN, INVERT_X_STEP_PIN) ;
 +            step_wait();
 +            count_position[X_AXIS]+=count_direction[X_AXIS];
 +            count_position[Y_AXIS]+=count_direction[Y_AXIS];
-             WRITE(X_STEP_PIN, LOW);        
++            WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); 
 +            counter_y -= current_block->step_event_count;    
++            WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);        
 +          }
 +        }
 +      #endif //corexy
 +      
        counter_z += current_block->steps_z;
        if (counter_z > 0) {
-         WRITE(Z_STEP_PIN, HIGH);
+         WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
          counter_z -= current_block->step_event_count;
 -        WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN);
          count_position[Z_AXIS]+=count_direction[Z_AXIS];
-         WRITE(Z_STEP_PIN, LOW);
++        WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN);
        }
  
        #ifndef ADVANCE
          counter_e += current_block->steps_e;
          if (counter_e > 0) {
-           WRITE_E_STEP(HIGH);
+           WRITE_E_STEP(!INVERT_E_STEP_PIN);
            counter_e -= current_block->step_event_count;
 -          WRITE_E_STEP(INVERT_E_STEP_PIN);
            count_position[E_AXIS]+=count_direction[E_AXIS];
-           WRITE_E_STEP(LOW);
++          WRITE(E_STEP_PIN, INVERT_E_STEP_PIN);
          }
        #endif //!ADVANCE
        step_events_completed += 1;  
      // Set E direction (Depends on E direction + advance)
      for(unsigned char i=0; i<4;i++) {
        if (e_steps[0] != 0) {
--        WRITE(E0_STEP_PIN, LOW);
++        WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN);
          if (e_steps[0] < 0) {
            WRITE(E0_DIR_PIN, INVERT_E0_DIR);
            e_steps[0]++;
--          WRITE(E0_STEP_PIN, HIGH);
++          WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN);
          } 
          else if (e_steps[0] > 0) {
            WRITE(E0_DIR_PIN, !INVERT_E0_DIR);
            e_steps[0]--;
--          WRITE(E0_STEP_PIN, HIGH);
++          WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN);
          }
        }
   #if EXTRUDERS > 1
        if (e_steps[1] != 0) {
--        WRITE(E1_STEP_PIN, LOW);
++        WRITE(E1_STEP_PIN, INVERT_E_STEP_PIN);
          if (e_steps[1] < 0) {
            WRITE(E1_DIR_PIN, INVERT_E1_DIR);
            e_steps[1]++;
--          WRITE(E1_STEP_PIN, HIGH);
++          WRITE(E1_STEP_PIN, !INVERT_E_STEP_PIN);
          } 
          else if (e_steps[1] > 0) {
            WRITE(E1_DIR_PIN, !INVERT_E1_DIR);
            e_steps[1]--;
--          WRITE(E1_STEP_PIN, HIGH);
++          WRITE(E1_STEP_PIN, !INVERT_E_STEP_PIN);
          }
        }
   #endif
   #if EXTRUDERS > 2
        if (e_steps[2] != 0) {
--        WRITE(E2_STEP_PIN, LOW);
++        WRITE(E2_STEP_PIN, INVERT_E_STEP_PIN);
          if (e_steps[2] < 0) {
            WRITE(E2_DIR_PIN, INVERT_E2_DIR);
            e_steps[2]++;
--          WRITE(E2_STEP_PIN, HIGH);
++          WRITE(E2_STEP_PIN, !INVERT_E_STEP_PIN);
          } 
          else if (e_steps[2] > 0) {
            WRITE(E2_DIR_PIN, !INVERT_E2_DIR);
            e_steps[2]--;
--          WRITE(E2_STEP_PIN, HIGH);
++          WRITE(E2_STEP_PIN, !INVERT_E_STEP_PIN);
          }
        }
   #endif
@@@ -790,27 -704,27 +790,33 @@@ void st_init(
    //Initialize Step Pins
    #if (X_STEP_PIN > -1) 
      SET_OUTPUT(X_STEP_PIN);
+     WRITE(X_STEP_PIN,INVERT_X_STEP_PIN);
 +    if(!X_ENABLE_ON) WRITE(X_ENABLE_PIN,HIGH);
    #endif  
    #if (Y_STEP_PIN > -1) 
      SET_OUTPUT(Y_STEP_PIN);
+     WRITE(Y_STEP_PIN,INVERT_Y_STEP_PIN);
 +    if(!Y_ENABLE_ON) WRITE(Y_ENABLE_PIN,HIGH);
    #endif  
    #if (Z_STEP_PIN > -1) 
      SET_OUTPUT(Z_STEP_PIN);
+     WRITE(Z_STEP_PIN,INVERT_Z_STEP_PIN);
 +    if(!Z_ENABLE_ON) WRITE(Z_ENABLE_PIN,HIGH);
    #endif  
    #if (E0_STEP_PIN > -1) 
      SET_OUTPUT(E0_STEP_PIN);
+     WRITE(E0_STEP_PIN,INVERT_E_STEP_PIN);
 +    if(!E_ENABLE_ON) WRITE(E0_ENABLE_PIN,HIGH);
    #endif  
    #if defined(E1_STEP_PIN) && (E1_STEP_PIN > -1) 
      SET_OUTPUT(E1_STEP_PIN);
+     WRITE(E1_STEP_PIN,INVERT_E_STEP_PIN);
 +    if(!E_ENABLE_ON) WRITE(E1_ENABLE_PIN,HIGH);
    #endif  
    #if defined(E2_STEP_PIN) && (E2_STEP_PIN > -1) 
      SET_OUTPUT(E2_STEP_PIN);
+     WRITE(E2_STEP_PIN,INVERT_E_STEP_PIN);
 +    if(!E_ENABLE_ON) WRITE(E2_ENABLE_PIN,HIGH);
    #endif  
  
    #ifdef CONTROLLERFAN_PIN