From 97ead2eccb98fa00a67b9b3975956e36eed4e3cc Mon Sep 17 00:00:00 2001 From: Cameron Lai Date: Fri, 25 Apr 2014 12:57:11 +0800 Subject: [PATCH] Fix for microstepping pin mapping, not using Teensy pin mapping, but Arduino's default pin mapping so Arduino library can be used --- Marlin/pins.h | 18 ++++++++++-------- Marlin/stepper.cpp | 23 +++++++++++++++++++---- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/Marlin/pins.h b/Marlin/pins.h index 3e5fa79c6..02a568a62 100644 --- a/Marlin/pins.h +++ b/Marlin/pins.h @@ -79,14 +79,16 @@ #endif // Microstepping pins -#define X_MS1_PIN 13 -#define X_MS2_PIN 14 -#define Y_MS1_PIN 33 -#define Y_MS2_PIN 32 -#define Z_MS1_PIN 31 -#define Z_MS2_PIN 30 -#define E0_MS1_PIN 29 -#define E0_MS2_PIN 28 +// Note that the pin mapping is not from fastio.h +// See Sd2PinMap.h for the pin configurations +#define X_MS1_PIN 25 +#define X_MS2_PIN 26 +#define Y_MS1_PIN 9 +#define Y_MS2_PIN 8 +#define Z_MS1_PIN 7 +#define Z_MS2_PIN 6 +#define E0_MS1_PIN 5 +#define E0_MS2_PIN 4 #endif /* 88 */ diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index eaba4362d..20bedcade 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -1228,13 +1228,22 @@ void digipot_current(uint8_t driver, int current) void microstep_init() { - #if defined(X_MS1_PIN) && X_MS1_PIN > -1 const uint8_t microstep_modes[] = MICROSTEP_MODES; - pinMode(X_MS2_PIN,OUTPUT); + + #if defined(E1_MS1_PIN) && E1_MS1_PIN > -1 + pinMode(E1_MS1_PIN,OUTPUT); + pinMode(E1_MS2_PIN,OUTPUT); + #endif + + #if defined(X_MS1_PIN) && X_MS1_PIN > -1 + pinMode(X_MS1_PIN,OUTPUT); + pinMode(X_MS2_PIN,OUTPUT); + pinMode(Y_MS1_PIN,OUTPUT); pinMode(Y_MS2_PIN,OUTPUT); - pinMode(Z_MS2_PIN,OUTPUT); + pinMode(Z_MS1_PIN,OUTPUT); + pinMode(Z_MS2_PIN,OUTPUT); + pinMode(E0_MS1_PIN,OUTPUT); pinMode(E0_MS2_PIN,OUTPUT); - pinMode(E1_MS2_PIN,OUTPUT); for(int i=0;i<=4;i++) microstep_mode(i,microstep_modes[i]); #endif } @@ -1247,7 +1256,9 @@ void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2) case 1: digitalWrite( Y_MS1_PIN,ms1); break; case 2: digitalWrite( Z_MS1_PIN,ms1); break; case 3: digitalWrite(E0_MS1_PIN,ms1); break; + #if defined(E1_MS1_PIN) && E1_MS1_PIN > -1 case 4: digitalWrite(E1_MS1_PIN,ms1); break; + #endif } if(ms2 > -1) switch(driver) { @@ -1255,7 +1266,9 @@ void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2) case 1: digitalWrite( Y_MS2_PIN,ms2); break; case 2: digitalWrite( Z_MS2_PIN,ms2); break; case 3: digitalWrite(E0_MS2_PIN,ms2); break; + #if defined(E1_MS2_PIN) && E1_MS2_PIN > -1 case 4: digitalWrite(E1_MS2_PIN,ms2); break; + #endif } } @@ -1286,8 +1299,10 @@ void microstep_readings() SERIAL_PROTOCOLPGM("E0: "); SERIAL_PROTOCOL( digitalRead(E0_MS1_PIN)); SERIAL_PROTOCOLLN( digitalRead(E0_MS2_PIN)); + #if defined(E1_MS1_PIN) && E1_MS1_PIN > -1 SERIAL_PROTOCOLPGM("E1: "); SERIAL_PROTOCOL( digitalRead(E1_MS1_PIN)); SERIAL_PROTOCOLLN( digitalRead(E1_MS2_PIN)); + #endif }