0% found this document useful (0 votes)
66 views4 pages

EEPROM Error Handling Guide

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
66 views4 pages

EEPROM Error Handling Guide

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

EEPROM Write Function Call

ADDRESS INDEX

#define SOC_ADD #define SOC_INDEX 0


0x0000
#define SOH_INDEX 1
#define SOH_ADD
0x0001 #define MAX_CELL_VOLT_LIMIT_INDEX 2

#define MAX_CELL_VOLT_LIMIT_ADD #define MIN_CELL_VOLT_LIMIT_INDEX 3


0x0002
#define IMBALANCE_CELL_VOLT_LIMIT_INDEX 4
#define MIN_CELL_VOLT_LIMIT_ADD
0x0003 #define MAX_CELL_NTC_LIMIT _INDEX 5

#define IMBALANCE_CELL_VOLT_LIMIT_ADD 0x0004 #define MIN_CELL_NTC_LIMIT_INDEX 6

#define MAX_CELL_NTC_LIMIT_ADD #define MAX_AFE_BOARD_NTC_LIMIT_INDEX 7


0x0005
#define MIN_AFE_BOARD_NTC_LIMIT_INDEX 8
#define MIN_CELL_NTC_LIMIT_ADD 0x0006
#define MAX_AFE_DIE_NTC_LIMIT_INDEX 9
#define MAX_AFE_BOARD_NTC_LIMIT_ADD 0x0007
#define MIN_AFE_DIE_NTC_LIMIT_INDEX 10
#define MIN_AFE_BOARD_NTC_LIMIT_ADD 0x0008
#define CHRG_MAX_CURRENT_LIMIT_INDEX 11
#define MAX_AFE_DIE_NTC_LIMIT_ADD
0x0009 #define DISCHRG_MAX_CURRENT_LIMIT_INDEX 12

#define MIN_AFE_DIE_NTC_LIMIT_ADD #define PRE_CHRG_CONTACTOR_ERR_INDEX 13


0x000A

#define CHRG_MAX_CURRENT_LIMIT_ADD 0x000B

#define DISCHRG_MAX_CURRENT_LIMIT_ADD
0x000C

#define PRE_CHRG_CONTACTOR_ERR_ADD 0x000D

arr [SOC_INDEX] = “SOC”;


Variables
arr [SOH_INDEX] = SOH;
Total_error_size = 14;
arr [MAX_CELL_VOLT_LIMIT_INDEX] = MAX_CELL_VOLT_LIMIT;
Char arr [Total_error_size] ; arr [MIN_CELL_VOLT_LIMIT_INDEX ] = MIN_CELL_VOLT_LIMIT;
arr [IMBALANCE_CELL_VOLT_LIMIT_INDEX] =
Char current_state[25] = “ZERO”;
IMBALANCE_CELL_VOLT_LIMIT;
arr [MAX_CELL_NTC_LIMIT_INDEX] = MAX_CELL_NTC_LIMIT;
arr [MIN_CELL_NTC_LIMIT_INDEX] = MIN_CELL_NTC_LIMIT;
arr [MAX_AFE_BOARD_NTC_LIMIT_INDEX] =
MAX_AFE_BOARD_NTC_LIMIT;
arr [MIN_AFE_BOARD_NTC_LIMIT_INDEX] =
MIX_AFE_BOARD_NTC_LIMIT;
arr [MAX_AFE_DIE_NTC_LIMIT_INDEX] =
MAX_AFE_DIE_NTC_LIMIT;
arr [MIN_AFE_DIE_NTC_LIMIT_INDEX] =
MIN_AFE_DIE_NTC_LIMIT;
arr [CHRG_MAX_CURRENT_LIMIT_INDEX] =
CHRG_MAX_CURRENT_LIMIT ;
arr [DISCHRG_MAX_CURRENT_LIMIT_INDEX] =
DISCHRG_MAX_CURRENT_LIMIT;
arr [PRE_CHRG_CONTACTOR_ERR_INDEX] =
PRE_CHRG_CONTACTOR_ERR;

for (int i = 0; I < total_error; i++)

If( i[0] == arr [SOC_INDEX])

If (current_state != i[0])

current_state = i[0];

eeprom_mgr_write_u8(data_to_write_aru8, size_aru8, param_type_are);

else

Continue;

else

Continue;

#define MAX_ERRORS 14
uint8_t error_codes[MAX_ERRORS];
uint8_t error_count = 0;
// Function to log an error
void log_error(uint8_t error_code) {
if (error_count < MAX_ERRORS) {
error_codes[error_count++] = error_code;
} else {
// Handle overflow: Could log to a secondary storage or ignore
printf("Max error limit reached.\n");
}
}
// Function to check for errors
void check_for_errors() {
for (uint8_t i = 0; i < error_count; i++) {
switch (error_codes[i]) {
case SOC:

break;

case SOH:

break;

case MAX_CELL_VOLT_LIMIT:

break;

case MIN_CELL_VOLT_LIMIT:

break;

case IMBALANCE_CELL_VOLT_LIMIT:

break;

case MAX_CELL_NTC_LIMIT:

break;

case MIN_CELL_NTC_LIMIT:

break;

case MAX_AFE_BOARD_NTC_LIMIT:

break;

case MIN_AFE_BOARD_NTC_LIMIT:

break;

case MAX_AFE_DIE_NTC_LIMIT:

break;

case MIN_AFE_DIE_NTC_LIMIT:

break;

case CHRG_MAX_CURRENT_LIMIT:

break;

case DISCHRG_MAX_CURRENT_LIMIT:

break;

case PRE_CHRG_CONTACTOR_ERR:

break;

/* default:

printf("Unknown Error Code: %d\n", error_codes[i]);

break; */
}
}
// Reset error count after checking
error_count = 0;
}
void write_config_to_eeprom() {
// Try to write to EEPROM and check for errors
if (!eeprom_write(SOC_ADD, config_data, sizeof(config_data))) {
log_error(SOC);
}
// Additional write operations can go here, with error checks
}

int main() {
write_config_to_eeprom();
check_for_errors(); // Check and display any errors that occurred
return 0;
}

You might also like