Fix Modbus transmit enable GPIO

Fix Modbus transmit enable GPIO enabled once during write buffer
This commit is contained in:
Theo Arends
2022-12-28 14:07:30 +01:00
parent ef4138bdaa
commit 2fd63ff01f
6 changed files with 24 additions and 8 deletions

View File

@@ -29,7 +29,13 @@ enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_D
TasmotaModbus::TasmotaModbus(int receive_pin, int transmit_pin, int tx_enable_pin) : TasmotaSerial(receive_pin, transmit_pin, 2)
{
setTransmitEnablePin(tx_enable_pin);
// setTransmitEnablePin(tx_enable_pin);
mb_tx_enable_pin = tx_enable_pin;
if (mb_tx_enable_pin > -1) {
pinMode(mb_tx_enable_pin, OUTPUT);
digitalWrite(mb_tx_enable_pin, LOW);
}
mb_address = 0;
}
@@ -150,7 +156,14 @@ uint8_t TasmotaModbus::Send(uint8_t device_address, uint8_t function_code, uint1
#endif
flush();
if (mb_tx_enable_pin > -1) {
digitalWrite(mb_tx_enable_pin, HIGH);
}
write(frame, framepointer);
if (mb_tx_enable_pin > -1) {
delay(1);
digitalWrite(mb_tx_enable_pin, LOW);
}
free(frame);
return 0;
}