From e2f8ab34058629cdaed0e7766bc24386185b1d18 Mon Sep 17 00:00:00 2001 From: Duke NUCem Date: Sun, 10 Oct 2021 12:12:39 +0200 Subject: [PATCH] WIP modbus write --- fw/Core/Src/main.c | 9 ++++++--- fw/Core/Src/modbus.c | 2 +- tests/holding_register_test.py | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/fw/Core/Src/main.c b/fw/Core/Src/main.c index fb79206..353ec12 100644 --- a/fw/Core/Src/main.c +++ b/fw/Core/Src/main.c @@ -108,7 +108,7 @@ uint16_t sps30_measured_data[10]; /* Struct to store the sensor config */ config_t sensor_config; - +uint8_t sensor_config_pending_write = 0; uint8_t baudrate_changed = 0; /* USER CODE END PV */ @@ -255,7 +255,10 @@ int main(void) /* Reset the RX DONE flag */ lpuart1_rx_done = 0; } - + /* if config changed (MODBUS write), reflect changes to EEPROM */ + if (sensor_config_pending_write) { +// config_write(&sensor_config); + } if (baudrate_changed == 1) { /* TODO: TEST */ @@ -717,7 +720,7 @@ int8_t modbus_slave_callback(modbus_transaction_t *transaction) } /* TODO: Set modbus address on change */ /* TODO: Set UART baudrate on change */ - config_write(&sensor_config); + sensor_config_pending_write = 1; return MODBUS_OK; case MODBUS_WRITE_MULTIPLE_REGISTERS: for (int i = 0; i < transaction->register_count; i++, register_number++) diff --git a/fw/Core/Src/modbus.c b/fw/Core/Src/modbus.c index fdf1513..c48c762 100644 --- a/fw/Core/Src/modbus.c +++ b/fw/Core/Src/modbus.c @@ -62,7 +62,7 @@ int8_t modbus_copy_reply_to_buffer(uint8_t *buffer, uint8_t *msg_len, modbus_tra buffer[1] = transaction->function_code; *msg_len = 5; - if (transaction->function_code | MODBUS_ERROR_FLAG) { + if (transaction->function_code & MODBUS_ERROR_FLAG) { /* sending error reply */ buffer[2] = transaction->exception.exception_code; } else { diff --git a/tests/holding_register_test.py b/tests/holding_register_test.py index 007fd7e..335669f 100755 --- a/tests/holding_register_test.py +++ b/tests/holding_register_test.py @@ -45,5 +45,5 @@ print('---- Reading from holding registers ----') #baudrate = {baudrate} #''') # write to holding register -print('---- Writing to holding registers ----)') +print('---- Writing to holding registers ----') instrument.write_register(LED_on_register, 0, functioncode=6)