Added software reset

This commit is contained in:
mj
2022-01-02 13:15:00 +01:00
parent 771fd24f93
commit 5feb12310c
4 changed files with 29 additions and 4 deletions

View File

@@ -96,6 +96,7 @@ int8_t uart_enable_interrupts(void);
#endif
/* USER CODE BEGIN Private defines */
#define MEASUREMENT_PERIOD_MS 600000
#define RESET_MAGIC_NUMBER 0xABCD
extern uint16_t usart2_rx_message_index;
extern uint16_t usart2_rx_message_len;

View File

@@ -89,7 +89,8 @@ enum
REGISTER_NUM_CO2_ALERT_LIMIT2 = 40005,
REGISTER_NUM_SCD4x_T_OFFSET = 40006,
REGISTER_NUM_MODBUS_ADDR = 40007,
REGISTER_NUM_BAUDRATE = 40008
REGISTER_NUM_BAUDRATE = 40008,
REGISTER_NUM_RESET_DEVICE = 40100
} config_registers_numbers;
enum
@@ -931,6 +932,14 @@ int8_t modbus_slave_callback(modbus_transaction_t *transaction)
sensor_config.baudrate_index = (uint16_t) (transaction->holding_registers[i]);
baudrate_changed = 1;
break;
case REGISTER_NUM_RESET_DEVICE:
if (transaction->holding_registers[i] == 0xABCD) {
/* software reset */
NVIC_SystemReset();
} else {
return MODBUS_ERROR_OUT_OF_BOUNDS;
}
break;
default:
return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED;
}