diff --git a/MotorDriver.h b/MotorDriver.h index abfb395..3f67080 100644 --- a/MotorDriver.h +++ b/MotorDriver.h @@ -20,6 +20,10 @@ #define MotorDriver_h // Virtualised Motor shield 1-track hardware Interface +#ifndef UNUSED_PIN // sync define with the one in MotorDrivers.h +#define UNUSED_PIN 127 // inside int8_t +#endif + class MotorDriver { public: MotorDriver(byte power_pin, byte signal_pin, byte signal_pin2, int8_t brake_pin, byte current_pin, float senseFactor, unsigned int tripMilliamps, byte faultPin); @@ -39,7 +43,5 @@ class MotorDriver { float senseFactor; unsigned int tripMilliamps; int rawCurrentTripValue; - const byte UNUSED_PIN = 255; - }; #endif diff --git a/MotorDrivers.h b/MotorDrivers.h index 809d69b..ef1e2cf 100644 --- a/MotorDrivers.h +++ b/MotorDrivers.h @@ -13,7 +13,9 @@ // similar to those defined here, WITHOUT editing this file. You can put your // custom defines in config.h. -const byte UNUSED_PIN = 255; +#ifndef UNUSED_PIN // sync define with the one in MotorDriver.h +#define UNUSED_PIN 127 // inside int8_t +#endif // MotorDriver(byte power_pin, byte signal_pin, byte signal_pin2, int8_t brake_pin, byte current_pin, // float senseFactor, unsigned int tripMilliamps, byte faultPin); @@ -28,9 +30,19 @@ const byte UNUSED_PIN = 255; new MotorDriver(11, 13, UNUSED_PIN, UNUSED_PIN, A1, 2.99, 2000, UNUSED_PIN) // Pololu Motor Shield -#define POLOLU_MOTOR_SHIELD F("POLOLU_MOTOR_SHIELD"), \ - new MotorDriver(4, 7, UNUSED_PIN, -9, A0, 18, 3000, 12), \ - new MotorDriver(2, 8, UNUSED_PIN, -10, A1, 18, 3000, UNUSED_PIN) +#define POLOLU_MOTOR_SHIELD F("POLOLU_MOTOR_SHIELD"), \ + new MotorDriver( 9, 7, UNUSED_PIN, -4, A0, 18, 3000, 12), \ + new MotorDriver(10, 8, UNUSED_PIN, UNUSED_PIN, A1, 18, 3000, UNUSED_PIN) +// +// Actually, on the Pololu MC33926 shield the enable lines are tied together on pin 4 and the +// pins 9 and 10 work as "inverted brake" but as we turn on and off the tracks individually +// via the power pins we above use 9 and 10 as power pins and 4 as "inverted brake" which in this +// version of the code always will be high. That means this config is not usable for generating +// a railcom cuotout in the future. For that one must wire the second ^D2 to pin 2 and define +// the motor driver like this: +// new MotorDriver(4, 7, UNUSED_PIN, -9, A0, 18, 3000, 12) +// new MotorDriver(2, 8, UNUSED_PIN, -10, A1, 18, 3000, UNUSED_PIN) +// See Pololu dial_mc33926_shield_schematic.pdf and truth table on page 17 of the MC33926 data sheet. // Firebox Mk1 #define FIREBOX_MK1 F("FIREBOX_MK1"), \