From 66061df7d75e861c36a78920446e458e5fbbbfeb Mon Sep 17 00:00:00 2001 From: Mathieu Carbou Date: Sun, 28 Jan 2024 08:47:46 +0100 Subject: [PATCH] Improving JSy speed --- examples/SetSpeed/SetSpeed.ino | 6 ++++-- src/MycilaJSY.cpp | 18 +++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/examples/SetSpeed/SetSpeed.ino b/examples/SetSpeed/SetSpeed.ino index 8923d28..cce13a5 100644 --- a/examples/SetSpeed/SetSpeed.ino +++ b/examples/SetSpeed/SetSpeed.ino @@ -1,6 +1,8 @@ #include #include +static const Mycila::JSYBaudRate target = Mycila::JSYBaudRate::BAUD_38400; + void setup() { Serial.begin(115200); while (!Serial) @@ -14,10 +16,10 @@ void setup() { if (Mycila::JSY.isEnabled()) { Mycila::Logger.info("APP", "JSY is enabled at %d bauds", Mycila::JSY.getBaudRate()); - if (Mycila::JSY.getBaudRate() != Mycila::JSYBaudRate::BAUD_38400) { + if (Mycila::JSY.getBaudRate() != target) { Mycila::Logger.warn("APP", "JSY baud rate wrong"); - if (Mycila::JSY.updateBaudRate(Mycila::JSYBaudRate::BAUD_38400)) { + if (Mycila::JSY.updateBaudRate(target)) { Mycila::Logger.info("APP", "JSY baud rate updated"); ESP.restart(); diff --git a/src/MycilaJSY.cpp b/src/MycilaJSY.cpp index 1857246..ddd609d 100644 --- a/src/MycilaJSY.cpp +++ b/src/MycilaJSY.cpp @@ -10,6 +10,10 @@ #define TAG "JSY" #define SUCCESSFUL_JSY_READ_COUNT 61 +#define JSY_MIN_PAUSE 30 +#define JSY_DETECTION_READ_COUNT 10 +#define JSY_RESET_LOOP_COUNT 30 +#define JSY_UPDATE_BAUDS_LOOP_COUNT 40 static const uint8_t JSY_READ_MSG[] = {0x01, 0x03, 0x00, 0x48, 0x00, 0x0E, 0x44, 0x18}; @@ -76,7 +80,7 @@ void Mycila::JSYClass::end() { _enabled = false; _baudRate = JSYBaudRate::UNKNOWN; while (_state != JSYState::IDLE) - delay(60); + delay(JSY_MIN_PAUSE); current1 = 0; current2 = 0; energy1 = 0; @@ -172,7 +176,7 @@ bool Mycila::JSYClass::_read(uint8_t maxCount) { while (maxCount > 0 && !_read()) { if (--maxCount == 0) return false; - delay(60); + delay(JSY_MIN_PAUSE); } return true; } @@ -231,11 +235,11 @@ bool Mycila::JSYClass::_reset() { const uint8_t data[] = {0x01, 0x10, 0x00, 0x0C, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFA}; - for (size_t i = 0; i < 30; i++) { + for (size_t i = 0; i < JSY_RESET_LOOP_COUNT; i++) { _serial->write(data, 13); _serial->flush(); _drop(); - delay(60); + delay(JSY_MIN_PAUSE); } _state = JSYState::IDLE; @@ -279,11 +283,11 @@ bool Mycila::JSYClass::_updateBaudRate() { break; } - for (size_t i = 0; i < 30; i++) { + for (size_t i = 0; i < JSY_UPDATE_BAUDS_LOOP_COUNT; i++) { _serial->write(data, 11); _serial->flush(); _drop(); - delay(60); + delay(JSY_MIN_PAUSE); } _requestedBaudRate = JSYBaudRate::UNKNOWN; @@ -313,7 +317,7 @@ Mycila::JSYBaudRate Mycila::JSYClass::_detectBauds() { continue; _serial->flush(); _drop(); - if (_read(5)) + if (_read(JSY_DETECTION_READ_COUNT)) return baudRates[i]; } return JSYBaudRate::UNKNOWN;