From a077e4d34747e1f71ecb92c6eb4f6cdee2461fd5 Mon Sep 17 00:00:00 2001 From: David Pye Date: Tue, 29 Aug 2023 17:16:14 +0100 Subject: [PATCH] Debug formatting tweaks --- V10_BMS/src/bms.c | 38 ++++++++++++++++---------------------- V10_BMS/src/config.h | 2 ++ V10_BMS/src/serial_debug.c | 7 ++++--- 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/V10_BMS/src/bms.c b/V10_BMS/src/bms.c index 304f29d..86180b3 100644 --- a/V10_BMS/src/bms.c +++ b/V10_BMS/src/bms.c @@ -343,19 +343,14 @@ void bms_handle_discharging() { //Reset the UART message counter; serial_reset_message_counter(); //Brief pause to allow vac to wake up before we start sending serial data at it. - delay_ms(260); } while (1) { - -#ifdef SERIAL_DEBUG - char message[40]; - sprintf(message,"Discharging at %d mA \r\n", currentmA); - serial_debug_send_message(message); - sprintf(message, "Capacity %d\r\n", eeprom_data.total_pack_capacity); - serial_debug_send_message(message); - sprintf(message, "Level %d\r\n", eeprom_data.current_charge_level); - serial_debug_send_message(message); + +#ifdef SERIAL_DEBUG + sprintf(debug_msg_buffer,"Discharging at %d mA, %d mAH, capacity %d mAH, Temp %d'C\r\n", currentmA*-1, eeprom_data.current_charge_level/1000, eeprom_data.total_pack_capacity/1000, + bq7693_read_temperature()/10); + serial_debug_send_message(debug_msg_buffer); #endif if (!port_pin_get_input_level(TRIGGER_PRESSED_PIN)) { //Trigger released. @@ -458,12 +453,9 @@ void bms_handle_charging() { leds_flash_charging_segment((eeprom_data.current_charge_level*100) / eeprom_data.total_pack_capacity); #ifdef SERIAL_DEBUG - sprintf(debug_msg_buffer,"Charging at %d mA \r\n", currentmA); - serial_debug_send_message(debug_msg_buffer); - sprintf(debug_msg_buffer, "Pack charge %d microAH : cap %d microAH\r\n", eeprom_data.current_charge_level, eeprom_data.total_pack_capacity); - serial_debug_send_message(debug_msg_buffer); - sprintf(debug_msg_buffer, "Pack temp %d 'C\r\n", bq7693_read_temperature()/10); - serial_debug_send_message(debug_msg_buffer); + sprintf(debug_msg_buffer,"Charging at %d mA, %d mAH, capacity %d mAH, Temp %d'C\r\n", currentmA, eeprom_data.current_charge_level/1000, eeprom_data.total_pack_capacity/1000, + bq7693_read_temperature()/10); + serial_debug_send_message(debug_msg_buffer); #endif if (!bms_is_safe_to_charge()) { //Safety error. @@ -487,15 +479,17 @@ void bms_handle_charging() { } if (bms_is_pack_full()) { +#ifdef SERIAL_DEBUG + sprintf(debug_msg_buffer, "Charging paused - cell full, attempt %d of %d\r\n", charge_pause_counter, FULL_CHARGE_PAUSE_COUNT); + serial_debug_send_message(debug_msg_buffer); + serial_debug_send_cell_voltages(); +#endif //Pause the charging. port_pin_set_output_level(ENABLE_CHARGE_PIN, false); bq7693_disable_charge(); //Delay for 30 seconds, then go and try again. for (int i=0; i<30; ++i) { -#ifdef SERIAL_DEBUG - serial_debug_send_message("Charging paused because a cell hit capacity\r\n"); -#endif //This function takes a second. leds_flash_charging_segment((eeprom_data.current_charge_level*100) / eeprom_data.total_pack_capacity); //Check the charger hasn't been unplugged while we're waiting @@ -513,8 +507,8 @@ void bms_handle_charging() { bq7693_enable_charge(); } - if (charge_pause_counter == 10) { - //After 10 pauses, we are full. + if (charge_pause_counter == FULL_CHARGE_PAUSE_COUNT) { + //After FULL_CHARGE_PAUSE_COUNT pauses, we are full. //Disable the charging port_pin_set_output_level(ENABLE_CHARGE_PIN, false); bq7693_disable_charge(); @@ -529,7 +523,7 @@ void bms_handle_charging() { #ifdef SERIAL_DEBUG serial_debug_send_message("Charging stopped - cells at capacity\r\n"); char message[40]; - sprintf(message, "Total pack capacity %d\r\n", eeprom_data.total_pack_capacity); + sprintf(message, "Total pack capacity %dmAh\r\n", eeprom_data.total_pack_capacity/1000); serial_debug_send_message(message); #endif return; diff --git a/V10_BMS/src/config.h b/V10_BMS/src/config.h index 867d6f1..8333cc0 100644 --- a/V10_BMS/src/config.h +++ b/V10_BMS/src/config.h @@ -47,6 +47,8 @@ #define IDLE_TIME 60 * 15 // Idle time in seconds. Pack will go into SHIP/deep sleep mode if nothing happens in this duration +#define FULL_CHARGE_PAUSE_COUNT 10 //Once a cell reaches max charge volts, pause for 30 seconds and retry, this many times. + #define SERIAL_DEBUG 1 #endif /* CONFIG_H_ */ \ No newline at end of file diff --git a/V10_BMS/src/serial_debug.c b/V10_BMS/src/serial_debug.c index 6ac857d..1de49c8 100644 --- a/V10_BMS/src/serial_debug.c +++ b/V10_BMS/src/serial_debug.c @@ -48,12 +48,13 @@ void serial_debug_init() { //Enable usart_enable(&debug_usart); - //Initial debug blurb. + //Initial debug blurb serial_debug_send_message("Dyson V10 BMS Aftermarket firmware init\r\n"); serial_debug_send_message("(C) David Pye davidmpye@gmail.com\r\n"); serial_debug_send_message("GNU GPL v3.0 or later\r\n"); - - serial_debug_send_cell_voltages(); + //Need to pause 250mS before cell voltages are available from the BQ7693 + delay_ms(250); + serial_debug_send_cell_voltages(); #endif }