1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-12-24 05:11:24 +01:00

DC mode portability for ARM (SAMD21/STM32)

This commit is contained in:
pmantoine 2022-08-10 10:45:33 +08:00
parent a985356f0c
commit 915de96e80

View File

@ -137,10 +137,12 @@ 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() { inline void detachDCSignal() {
#ifndef ARDUINO_ARCH_ESP32 #if defined(__arm__)
setDCSignal(128); pinMode(brakePin, OUTPUT);
#else #elif defined(ARDUINO_ARCH_ESP32)
ledcDetachPin(brakePin); ledcDetachPin(brakePin);
#else
setDCSignal(128);
#endif #endif
}; };
virtual int getCurrentRaw(); virtual int getCurrentRaw();
@ -148,7 +150,8 @@ class MotorDriver {
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 #if defined(ARDUINO_ARCH_ESP32) || defined(__arm__)
// TODO: on ARM we can use digitalPinHasPWM, and may wish/need to
return true; return true;
#else #else
#ifdef digitalPinToTimer #ifdef digitalPinToTimer
@ -156,7 +159,7 @@ class MotorDriver {
#else #else
return (brakePin<14 && brakePin >1); return (brakePin<14 && brakePin >1);
#endif //digitalPinToTimer #endif //digitalPinToTimer
#endif //ESP32 #endif //ESP32/ARM
} }
inline int getRawCurrentTripValue() { inline int getRawCurrentTripValue() {
return rawCurrentTripValue; return rawCurrentTripValue;