mirror of
https://github.com/DCC-EX/CommandStation-EX.git
synced 2024-11-30 11:36:13 +01:00
make DC mode portable to ESP32
This commit is contained in:
parent
e1fd6e9414
commit
c1993fba87
|
@ -136,16 +136,27 @@ class MotorDriver {
|
||||||
};
|
};
|
||||||
inline byte getSignalPin() { return signalPin; };
|
inline byte getSignalPin() { return signalPin; };
|
||||||
virtual void setDCSignal(byte speedByte);
|
virtual void setDCSignal(byte speedByte);
|
||||||
|
inline void detachDCSignal() {
|
||||||
|
#ifndef ARDUINO_ARCH_ESP32
|
||||||
|
setDCSignal(128);
|
||||||
|
#else
|
||||||
|
ledcDetachPin(brakePin);
|
||||||
|
#endif
|
||||||
|
};
|
||||||
virtual int getCurrentRaw();
|
virtual int getCurrentRaw();
|
||||||
virtual int getCurrentRawInInterrupt();
|
virtual int getCurrentRawInInterrupt();
|
||||||
virtual unsigned int raw2mA( int raw);
|
virtual unsigned int raw2mA( int raw);
|
||||||
virtual unsigned int mA2raw( unsigned int mA);
|
virtual unsigned int mA2raw( unsigned int mA);
|
||||||
inline bool brakeCanPWM() {
|
inline bool brakeCanPWM() {
|
||||||
|
#ifdef ARDUINO_ARCH_ESP32
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
#ifdef digitalPinToTimer
|
#ifdef digitalPinToTimer
|
||||||
return ((brakePin!=UNUSED_PIN) && (digitalPinToTimer(brakePin)));
|
return ((brakePin!=UNUSED_PIN) && (digitalPinToTimer(brakePin)));
|
||||||
#else
|
#else
|
||||||
return (brakePin<14 && brakePin >1);
|
return (brakePin<14 && brakePin >1);
|
||||||
#endif
|
#endif //digitalPinToTimer
|
||||||
|
#endif //ESP32
|
||||||
}
|
}
|
||||||
inline int getRawCurrentTripValue() {
|
inline int getRawCurrentTripValue() {
|
||||||
return rawCurrentTripValue;
|
return rawCurrentTripValue;
|
||||||
|
|
|
@ -56,8 +56,8 @@
|
||||||
new MotorDriver(11, 13, UNUSED_PIN, 8, A1, 1.95, 2000, UNUSED_PIN)
|
new MotorDriver(11, 13, UNUSED_PIN, 8, A1, 1.95, 2000, UNUSED_PIN)
|
||||||
#elif defined(ARDUINO_ARCH_ESP32)
|
#elif defined(ARDUINO_ARCH_ESP32)
|
||||||
#define STANDARD_MOTOR_SHIELD F("STANDARD_MOTOR_SHIELD"), \
|
#define STANDARD_MOTOR_SHIELD F("STANDARD_MOTOR_SHIELD"), \
|
||||||
new MotorDriver(25/* 3*/, 19/*12*/, UNUSED_PIN, UNUSED_PIN, 36/*A4*/, 0.57, 2000, UNUSED_PIN), \
|
new MotorDriver(25/* 3*/, 19/*12*/, UNUSED_PIN, 13/*9*/, 36/*A4*/, 0.57, 2000, UNUSED_PIN), \
|
||||||
new MotorDriver(23/*11*/, 18/*13*/, UNUSED_PIN, UNUSED_PIN, 39/*A5*/, 0.57, 2000, UNUSED_PIN)
|
new MotorDriver(23/*11*/, 18/*13*/, UNUSED_PIN, 12/*8*/, 39/*A5*/, 0.57, 2000, UNUSED_PIN)
|
||||||
#else
|
#else
|
||||||
#define STANDARD_MOTOR_SHIELD F("STANDARD_MOTOR_SHIELD"), \
|
#define STANDARD_MOTOR_SHIELD F("STANDARD_MOTOR_SHIELD"), \
|
||||||
new MotorDriver(3, 12, UNUSED_PIN, 9, A0, 2.99, 2000, UNUSED_PIN), \
|
new MotorDriver(3, 12, UNUSED_PIN, 9, A0, 2.99, 2000, UNUSED_PIN), \
|
||||||
|
|
|
@ -170,7 +170,7 @@ bool TrackManager::setTrackMode(byte trackToSet, TRACK_MODE mode, int16_t dcAddr
|
||||||
else {
|
else {
|
||||||
// DCC tracks need to have set the PWM to zero or they will not work.
|
// DCC tracks need to have set the PWM to zero or they will not work.
|
||||||
// 128 is speed=0 and dir=0 and then loosen brake.
|
// 128 is speed=0 and dir=0 and then loosen brake.
|
||||||
track[trackToSet]->setDCSignal(128);
|
track[trackToSet]->detachDCSignal();
|
||||||
track[trackToSet]->setBrake(false);
|
track[trackToSet]->setBrake(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user