mirror of
https://github.com/DCC-EX/CommandStation-EX.git
synced 2024-11-25 00:56:13 +01:00
Compare commits
5 Commits
94e9c2021b
...
1a3d295564
Author | SHA1 | Date | |
---|---|---|---|
|
1a3d295564 | ||
|
3b6789ef01 | ||
|
c472f48d93 | ||
|
9d953c70b8 | ||
|
efdbfcb030 |
|
@ -205,6 +205,39 @@ int16_t CommandDistributor::retClockTime() {
|
||||||
void CommandDistributor::broadcastLoco(byte slot) {
|
void CommandDistributor::broadcastLoco(byte slot) {
|
||||||
DCC::LOCO * sp=&DCC::speedTable[slot];
|
DCC::LOCO * sp=&DCC::speedTable[slot];
|
||||||
broadcastReply(COMMAND_TYPE, F("<l %d %d %d %l>\n"), sp->loco,slot,sp->speedCode,sp->functions);
|
broadcastReply(COMMAND_TYPE, F("<l %d %d %d %l>\n"), sp->loco,slot,sp->speedCode,sp->functions);
|
||||||
|
#ifdef SABERTOOTH
|
||||||
|
if (Serial2 && sp->loco == SABERTOOTH) {
|
||||||
|
static uint8_t rampingmode = 0;
|
||||||
|
bool direction = (sp->speedCode & 0x80) !=0; // true for forward
|
||||||
|
int32_t speed = sp->speedCode & 0x7f;
|
||||||
|
if (speed == 1) { // emergency stop
|
||||||
|
if (rampingmode != 1) {
|
||||||
|
rampingmode = 1;
|
||||||
|
Serial2.print("R1: 0\r\n");
|
||||||
|
Serial2.print("R2: 0\r\n");
|
||||||
|
}
|
||||||
|
Serial2.print("MD: 0\r\n");
|
||||||
|
} else {
|
||||||
|
if (speed != 0) {
|
||||||
|
// speed is here 2 to 127
|
||||||
|
speed = (speed - 1) * 1625 / 100;
|
||||||
|
speed = speed * (direction ? 1 : -1);
|
||||||
|
// speed is here -2047 to 2047
|
||||||
|
}
|
||||||
|
if (rampingmode != 2) {
|
||||||
|
rampingmode = 2;
|
||||||
|
Serial2.print("R1: 2047\r\n");
|
||||||
|
Serial2.print("R2: 2047\r\n");
|
||||||
|
}
|
||||||
|
Serial2.print("M1: ");
|
||||||
|
Serial2.print(speed);
|
||||||
|
Serial2.print("\r\n");
|
||||||
|
Serial2.print("M2: ");
|
||||||
|
Serial2.print(speed);
|
||||||
|
Serial2.print("\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#ifdef CD_HANDLE_RING
|
#ifdef CD_HANDLE_RING
|
||||||
WiThrottle::markForBroadcast(sp->loco);
|
WiThrottle::markForBroadcast(sp->loco);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -37,16 +37,19 @@ HardwareSerial Serial1(PB7, PA15); // Rx=PB7, Tx=PA15 -- CN7 pins 17 and 21 - F
|
||||||
// Serial2 is defined to use USART2 by default, but is in fact used as the diag console
|
// Serial2 is defined to use USART2 by default, but is in fact used as the diag console
|
||||||
// via the debugger on the Nucleo-64. It is therefore unavailable for other DCC-EX uses like WiFi, DFPlayer, etc.
|
// via the debugger on the Nucleo-64. It is therefore unavailable for other DCC-EX uses like WiFi, DFPlayer, etc.
|
||||||
// Let's define Serial6 as an additional serial port (the only other option for the Nucleo-64s)
|
// Let's define Serial6 as an additional serial port (the only other option for the Nucleo-64s)
|
||||||
HardwareSerial Serial6(PA12, PA11); // Rx=PA12, Tx=PA11 -- CN10 pins 12 and 14 - F411RE
|
HardwareSerial Serial3(PA12, PA11); // Rx=PA12, Tx=PA11 -- CN10 pins 12 and 14 - F411RE
|
||||||
#elif defined(ARDUINO_NUCLEO_F446RE)
|
#elif defined(ARDUINO_NUCLEO_F446RE)
|
||||||
// Nucleo-64 boards don't have Serial1 defined by default
|
// Nucleo-64 boards don't have Serial1 defined by default
|
||||||
HardwareSerial Serial1(PA10, PB6); // Rx=PA10 (D2), Tx=PB6 (D10) -- CN10 pins 17 and 9 - F446RE
|
// HardwareSerial Serial1(PA10, PB6); // Rx=PA10 (D2), Tx=PB6 (D10) -- CN10 pins 17 and 9 - F446RE
|
||||||
// Serial2 is defined to use USART2 by default, but is in fact used as the diag console
|
// Serial2 is defined to use USART2 by default, but is in fact used as the diag console
|
||||||
// via the debugger on the Nucleo-64. It is therefore unavailable for other DCC-EX uses like WiFi, DFPlayer, etc.
|
// via the debugger on the Nucleo-64. It is therefore unavailable for other DCC-EX uses like WiFi, DFPlayer, etc.
|
||||||
|
HardwareSerial Serial1(PC11, PC10); // Rx=PC11, Tx=PC10 -- USART3 - F446RE
|
||||||
|
HardwareSerial Serial3(PD2, PC12); // Rx=PC7, Tx=PC6 -- UART5 - F446RE
|
||||||
// NB: USART3 and USART6 are available but as yet undefined
|
// NB: USART3 and USART6 are available but as yet undefined
|
||||||
#elif defined(ARDUINO_NUCLEO_F412ZG) || defined(ARDUINO_NUCLEO_F429ZI) || defined(ARDUINO_NUCLEO_F446ZE)
|
#elif defined(ARDUINO_NUCLEO_F412ZG) || defined(ARDUINO_NUCLEO_F429ZI) || defined(ARDUINO_NUCLEO_F446ZE)
|
||||||
// Nucleo-144 boards don't have Serial1 defined by default
|
// Nucleo-144 boards don't have Serial1 defined by default
|
||||||
HardwareSerial Serial1(PG9, PG14); // Rx=PG9, Tx=PG14 -- D0, D1 - F412ZG/F446ZE
|
HardwareSerial Serial1(PC11, PC10); // Rx=PC11, Tx=PC10 -- USART3 - F412ZG/F446ZE
|
||||||
|
HardwareSerial Serial3(PD2, PC12); // Rx=PC7, Tx=PC6 -- UART5 - F412ZG/F446ZE
|
||||||
// Serial2 is defined to use USART2 by default, but is in fact used as the diag console
|
// Serial2 is defined to use USART2 by default, but is in fact used as the diag console
|
||||||
// via the debugger on the Nucleo-144. It is therefore unavailable for other DCC-EX uses like WiFi, DFPlayer, etc.
|
// via the debugger on the Nucleo-144. It is therefore unavailable for other DCC-EX uses like WiFi, DFPlayer, etc.
|
||||||
// NB:
|
// NB:
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#define GITHUB_SHA "devel-202305091210Z"
|
#define GITHUB_SHA "devel-202305201256Z"
|
||||||
|
|
|
@ -87,6 +87,9 @@ void SerialManager::init() {
|
||||||
delay(1000);
|
delay(1000);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef SABERTOOTH
|
||||||
|
Serial2.begin(9600, SERIAL_8N1, 16, 17); // GPIO 16 RXD2; GPIO 17 TXD2 on ESP32
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SerialManager::broadcast(char * stringBuffer) {
|
void SerialManager::broadcast(char * stringBuffer) {
|
||||||
|
|
|
@ -235,5 +235,15 @@ The configuration file for DCC-EX Command Station
|
||||||
//
|
//
|
||||||
//#define SERIAL_BT_COMMANDS
|
//#define SERIAL_BT_COMMANDS
|
||||||
|
|
||||||
|
// SABERTOOTH
|
||||||
|
//
|
||||||
|
// This is a very special option and only useful if you happen to have a
|
||||||
|
// sabertooth motor controller from dimension engineering configured to
|
||||||
|
// take commands from and ESP32 via serial at 9600 baud from GPIO17 (TX)
|
||||||
|
// and GPIO16 (RX, currently unused).
|
||||||
|
// The number defined is the DCC address for which speed controls are sent
|
||||||
|
// to the sabertooth controller _as_well_. Default: Undefined.
|
||||||
|
//
|
||||||
|
//#define SABERTOOTH 1
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -147,7 +147,8 @@
|
||||||
#ifndef I2C_USE_WIRE
|
#ifndef I2C_USE_WIRE
|
||||||
#define I2C_USE_WIRE
|
#define I2C_USE_WIRE
|
||||||
#endif
|
#endif
|
||||||
|
#undef NUM_SERIAL
|
||||||
|
#define NUM_SERIAL 3
|
||||||
|
|
||||||
/* TODO when ready
|
/* TODO when ready
|
||||||
#elif defined(ARDUINO_ARCH_RP2040)
|
#elif defined(ARDUINO_ARCH_RP2040)
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
#include "StringFormatter.h"
|
#include "StringFormatter.h"
|
||||||
|
|
||||||
|
|
||||||
#define VERSION "4.2.51"
|
#define VERSION "4.2.52"
|
||||||
|
// 4.2.52 - Experimental support for sabertooth motor controller on ESP32
|
||||||
// 4.2.51 - Add DISABLE_PROG to disable programming to save RAM/Flash
|
// 4.2.51 - Add DISABLE_PROG to disable programming to save RAM/Flash
|
||||||
// 4.2.50 - Fixes: estop all, turnout eeprom, cab ID check
|
// 4.2.50 - Fixes: estop all, turnout eeprom, cab ID check
|
||||||
// 4.2.49 - Exrail SPEED take notice of external direction change
|
// 4.2.49 - Exrail SPEED take notice of external direction change
|
||||||
|
|
Loading…
Reference in New Issue
Block a user