Changeset 25 for trunk/fw_g473rct/SES/src
- Timestamp:
- Sep 7, 2025, 3:51:43 PM (8 weeks ago)
- Location:
- trunk/fw_g473rct/SES/src
- Files:
-
- 1 added
- 7 edited
-
ads1260.c (modified) (3 diffs)
-
battery_voltage.c (modified) (3 diffs)
-
eeprom.c (modified) (11 diffs)
-
esr.c (modified) (8 diffs)
-
fast_current.c (modified) (2 diffs)
-
main.c (modified) (4 diffs)
-
ref_voltage.c (added)
-
sysdata.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/fw_g473rct/SES/src/ads1260.c
r20 r25 61 61 62 62 #define DEFAULT_ADS1260_TRANSMIT_TIMEOUT (10) 63 #define DEFAULT_ADS1260_TRANSMIT_RECEIVE_TIMEOUT (10 )63 #define DEFAULT_ADS1260_TRANSMIT_RECEIVE_TIMEOUT (1000) 64 64 #define ADS1260_SELF_OFFSET_CALIBRATION_TIMEOUT (2000) // > 16 * sampletime muss eingestellt werden 65 65 #define ADS1260_SYSTEM_OFFSET_CALIBRATION_TIMEOUT (2000) … … 776 776 777 777 /* 4*/ //while(HAL_GPIO_ReadPin(ADC_DATA_READY_GPIO_Port, ADC_DATA_READY_Pin) == GPIO_PIN_RESET); 778 HAL_NVIC_SetPriority(EXTI2_IRQn, 2, 0);779 HAL_NVIC_EnableIRQ(EXTI2_IRQn);778 //HAL_NVIC_SetPriority(EXTI2_IRQn, 2, 0); 779 //HAL_NVIC_EnableIRQ(EXTI2_IRQn); 780 780 781 781 /* 5*/ ADS_1260_SetExternalReference(&hspi3); … … 1005 1005 //HAL_GPIO_WritePin(ADC_SPI1_NSS_GPIO_Port, ADC_SPI1_NSS_Pin, GPIO_PIN_SET); 1006 1006 1007 if (Dout[0] == replyHeader && Dout[1] == Din[0] && Dout[2] == Din[1] && Dout[3] == Din[2] && Dout[5] == HAL_CRC_Calculate(&hcrc, (uint32_t*)&Dout[4], 1)) 1007 if (Dout[0] == replyHeader && Dout[1] == Din[0] && Dout[2] == Din[1] && Dout[3] == Din[2] && Dout[5] == HAL_CRC_Calculate(&hcrc, (uint32_t*)&Dout[4], 1)) 1008 1008 { 1009 1009 if ((Dout[4] & (1U << MODE3_STATENB)) && (Dout[4] & (1U << MODE3_CRCENB))) -
trunk/fw_g473rct/SES/src/battery_voltage.c
r24 r25 20 20 21 21 22 #define BATTERY_VOLTAGE_VOLTAGE_DIVIDER 6.023 #define ADC_RESOLUTION 32768.0 //65536/2 da im differential mode24 #define ADC_OFFSET 32768.025 22 26 23 // --- LOKALE TYPE DEFS - bitte hier dokumentieren------------------------------- … … 54 51 55 52 //Umrechung auf Eingangsspannung am Gerät mit Teiler 56 sys_data.s.values.batteryVoltage = ((avgVal- ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) /ADC_RESOLUTION;53 sys_data.s.values.batteryVoltage = ((avgVal-BATTERY_VOLTAGE_ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) / BATTERY_VOLTAGE_ADC_RESOLUTION; 57 54 58 55 … … 76 73 //Berechnung schnelle Wert ohne Glättung: 77 74 //Umrechung auf Eingangsspannung am Gerät mit Teiler 78 sys_data.s.values.fast_voltage = ((newVal- ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) /ADC_RESOLUTION;75 sys_data.s.values.fast_voltage = ((newVal-BATTERY_VOLTAGE_ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) / BATTERY_VOLTAGE_ADC_RESOLUTION; 79 76 80 77 -
trunk/fw_g473rct/SES/src/eeprom.c
r20 r25 94 94 int16_t uBatEmptyCompStopTemp; // We stop calculating uBatEmpty compensations when cell temperature is lower than this value 95 95 uint16_t uBatEmptyCompStopVolt; // uBatEmpty Voltage at temperatures lower than lvpCompStopTemp 96 97 96 int16_t extraDischargeStrom_mA; // For example, current that consumes LiPro itself 98 uint32_t dischargeTotalAh;99 uint32_t chargeTotalAh;100 uint32_t dischargeTotalWh; // 154-155 [mAs]101 uint32_t chargeTotalWh; // 156-157 [mAs]102 103 97 uint16_t cefW; 104 uint32_t onTime; 98 105 99 106 100 } eeprom_data_t; 107 101 108 typedef struct 109 { 110 // Schnittstellenparameter 111 uint32_t baudrate; 112 uint16_t parityMode; 113 uint16_t stopBits; 114 uint16_t slave_adress; 115 uint16_t ibn_day; 116 uint16_t ibn_month; 117 uint16_t ibn_year; 118 uint16_t user_id; 119 120 // Offset und Gain 121 int16_t batteryCurrentOffsetRefTemperatureShunt; 122 int16_t batteryCurrentOffsetRefTemperatureChip; 123 int16_t batteryCurrentGainRefTempShunt; 124 int16_t batteryCurrentGainRefTempChip; 125 int16_t batteryCurrentOffsetTemperatureCalibrationTemperature; 126 int16_t batteryCurrentGainTemperatureCalibrationShuntTemperature; 127 int16_t batteryCurrentGainTemperatureCalibrationChipTemperature; 128 int32_t batteryCurrentOffsetRefshuntVoltage; 129 int32_t batteryCurrentOffsetCommonModeCalibrationVoltage; 130 int32_t batteryCurrentOffsetCommonModeCompensationFactor; 131 int32_t batteryCurrentOffsetTemperatureCompensationFactor; 132 int32_t batteryCurrentGainRefCurrent; 133 int32_t batteryCurrentGainTemperatureCompensationShuntFactor; 134 int32_t batteryCurrentGainTemperatureCompensationChipFactor; 135 136 int32_t currentOffset; 137 uint32_t currentGain; 138 139 int64_t mAsCounter; 140 int32_t detectedCapacity; 141 int32_t detectedEnergy; 142 int32_t mAh_AutoMode; 143 int32_t mWh_AutoMode; 144 145 // battery parameter 146 uint16_t cef; 147 uint16_t peukert; 148 uint32_t cellCapacity; 149 uint32_t cellEnergy; 150 uint16_t iBatFull; 151 uint16_t tBatFull; 152 uint16_t uBatFull; 153 uint16_t uBatEmpty; 154 uint8_t socCalcMode; 155 uint16_t cellRatedDischargeTime; 156 157 // Schaltausgänge 158 uint16_t lvpStart; // Spannung ab der die LOW Voltage Protection aktiv wird in mV 159 uint16_t lvpStop; // Spannung ab der die LOW Voltage Protection wieder inaktiv wird 160 uint16_t ovpStart; // Spannung ab der die OVER Voltage Protection aktiv wird in mV 161 uint16_t ovpStop; // Spannung ab der die OVER Voltage Protection wieder inaktiv wird 162 int16_t loadCurrentLimit; // maximaler Laststrom in A wenn der Strom größer ist als der eingestelle Wert dann wird die Laststrom Protection aktiv 163 int16_t chargeCurrentLimit; // maximaler Ladestrom in A wenn der Strom größer ist als der eingestelle Wert dann wird die Ladestrom Protection aktiv 164 int16_t chargeStopHighTemperatureStart; // Abschalttemperatur Ladung wegen zu hoher Temperatur 165 int16_t chargeStopHighTemperatureStop; // Wiedereinschalttemperatur 166 int16_t chargeStopLowTemperatureStart; // Abschalttemperatur Ladung wegen zu niedriger Temperatur 167 int16_t chargeStopLowTemperatureStop; // Wiedereinschalttemperatur 168 int16_t dischargeStopHighTemperatureStart; // Abschalttemperatur Entladung wegen zu hoher Temperatur 169 int16_t dischargeStopHighTemperatureStop; // Wiedereinschalttemperatur 170 int16_t dischargeStopLowTemperatureStart; // Abschalttemperatur EntLadung wegen zu niedriger Temperatur 171 int16_t dischargeStopLowTemperatureStop; // Wiedereinschalttemperatur 172 173 int16_t uBatEmptyCompStartTemp; // We start calculating uBatEmpty compensations only when cell temperature is lower than this value 174 int16_t uBatEmptyCompStopTemp; // We stop calculating uBatEmpty compensations when cell temperature is lower than this value 175 uint16_t uBatEmptyCompStopVolt; // uBatEmpty Voltage at temperatures lower than lvpCompStopTemp 176 177 int16_t extraDischargeStrom_mA; // For example, current that consumes LiPro itself 178 uint32_t dischargeTotalAh; 179 uint32_t chargeTotalAh; 180 uint32_t dischargeTotalWh; // 154-155 [mAs] 181 uint32_t chargeTotalWh; // 156-157 [mAs] 182 183 uint16_t cefW; 184 uint32_t onTime; 185 186 }eeprom_old_data_t; 102 187 103 188 104 // Substitute for #if sizeof(some_type) == sizeof(another_type) functionality … … 248 164 249 165 // muss modulo 8 noch hinzufügen wg 8 byte alignement 250 static uint 64_t eepromData[(SIZE_OF_DATA_TO_STORE / 8) + 1];166 static uint8_t eepromData[SIZE_OF_DATA_TO_STORE]; 251 167 252 168 … … 336 252 337 253 /* extraDischargeStrom_mA */ 7, // mA, current that LiPro consumes itself 338 /* dischargeTotalAh */ 0, // Ah for negative current counter339 /* chargeTotalAh */ 0, // Ah for total charge counter340 /* dischargeTotalWh */ 0,341 /* chargeTotalWh */ 0,342 343 254 /* cefW */ 90, // 90% cef for Wh calculations 344 /* onTime */ 0255 345 256 346 257 }; … … 359 270 startType_t EEPROM_isFirstStart(void) 360 271 { 361 // sizeof eeprom_new_data_t must not be equal to size of eeprom_old_data_t362 BUILD_BUG_ON(sizeof(eeprom_data_t) == sizeof(eeprom_old_data_t));363 272 364 273 uint8_t firstStartCatcher; … … 390 299 { 391 300 eeprom_stored_data_t* dataToStore; 392 uint32_t PageError;393 uint32_t Address;394 uint32_t x;395 396 301 printf("EEPROM FULL RESTORE!\n"); 397 302 … … 458 363 459 364 dataToStore->changedData.extraDischargeStrom_mA = defaultEepromData.extraDischargeStrom_mA; 460 dataToStore->changedData.dischargeTotalAh = defaultEepromData.dischargeTotalAh;461 dataToStore->changedData.chargeTotalAh = defaultEepromData.chargeTotalAh;462 dataToStore->changedData.dischargeTotalWh = defaultEepromData.dischargeTotalWh;463 dataToStore->changedData.chargeTotalWh = defaultEepromData.chargeTotalWh;464 365 dataToStore->changedData.cefW = defaultEepromData.cefW; 465 dataToStore->changedData.onTime = defaultEepromData.onTime; 466 467 dataToStore->changedData.mAsCounter = defaultEepromData.mAsCounter; 468 dataToStore->changedData.detectedCapacity = defaultEepromData.detectedCapacity; 469 dataToStore->changedData.detectedEnergy = defaultEepromData.detectedEnergy; 470 dataToStore->changedData.mAs_AutoMode = defaultEepromData.mAs_AutoMode; 471 dataToStore->changedData.mWs_AutoMode = defaultEepromData.mWs_AutoMode; 472 366 367 368 473 369 // Eeprom Status Infos 474 370 dataToStore->eepromState.writeCounter++; … … 567 463 568 464 dataToStore->changedData.extraDischargeStrom_mA = defaultEepromData.extraDischargeStrom_mA; 569 dataToStore->changedData.dischargeTotalAh = defaultEepromData.dischargeTotalAh;570 dataToStore->changedData.chargeTotalAh = defaultEepromData.chargeTotalAh;571 465 dataToStore->changedData.cefW = defaultEepromData.cefW; 572 dataToStore->changedData.onTime = defaultEepromData.onTime; 573 574 // These fields are new 575 dataToStore->changedData.mAsCounter = defaultEepromData.mAsCounter; 576 dataToStore->changedData.detectedCapacity = defaultEepromData.detectedCapacity; 577 dataToStore->changedData.detectedEnergy = defaultEepromData.detectedEnergy; 578 dataToStore->changedData.mAs_AutoMode = defaultEepromData.mAs_AutoMode; 579 dataToStore->changedData.mWs_AutoMode = defaultEepromData.mWs_AutoMode; 580 dataToStore->changedData.dischargeTotalWh = defaultEepromData.dischargeTotalWh; 581 dataToStore->changedData.chargeTotalWh = defaultEepromData.chargeTotalWh; 582 466 467 468 469 583 470 584 471 dataToStore->eepromState.writeCounter = dataToStore->eepromState.writeCounter++; … … 599 486 { 600 487 eeprom_stored_data_t* dataToStore; 601 uint32_t PageError;602 uint32_t Address;603 uint32_t x;604 488 /****************LESE_WERTE_AUS_SYSDATA*********************/ 605 489 printf("EEPROM STORE CONFIG!\n"); … … 669 553 dataToStore->changedData.uBatEmptyCompStopTemp = data->s.parameter.uBatEmptyCompStopTemp; 670 554 dataToStore->changedData.uBatEmptyCompStopVolt = data->s.parameter.uBatEmptyCompStopVolt; 671 672 555 dataToStore->changedData.extraDischargeStrom_mA = data->s.parameter.extraDischargeStrom_mA; 673 dataToStore->changedData.dischargeTotalAh = data->s.values.dischargeTotalAh;674 dataToStore->changedData.chargeTotalAh = data->s.values.chargeTotalAh;675 dataToStore->changedData.dischargeTotalWh = data->s.values.dischargeTotalWh;676 dataToStore->changedData.chargeTotalWh = data->s.values.chargeTotalWh;677 556 dataToStore->changedData.cefW = data->s.parameter.cefW; 678 dataToStore->changedData.onTime = data->s.values.onTime; 679 680 dataToStore->changedData.mAsCounter = data->s.values.mAsCounter; 681 dataToStore->changedData.detectedCapacity = data->s.values.detectedCapacity; 682 dataToStore->changedData.detectedEnergy = data->s.values.detectedEnergy; 683 dataToStore->changedData.mAs_AutoMode = data->s.values.mAs_AutoMode; 684 dataToStore->changedData.mWs_AutoMode = data->s.values.mWs_AutoMode; 685 557 686 558 // Eeprom Status Infos 687 559 dataToStore->eepromState.writeCounter++; … … 781 653 782 654 data->s.parameter.extraDischargeStrom_mA = dataToStore->changedData.extraDischargeStrom_mA; 655 data->s.parameter.cefW = dataToStore->changedData.cefW; 656 657 658 // Geräteinformation 659 data->s.parameter.sn = dataToStore->deviceInfo.SN; 660 661 // prüfe Eeprom Status Infos 662 //dataToStore->eepromState.writeCounter ++ ; 663 if (dataToStore->eepromState.structureSize != sizeof(eeprom_stored_data_t)) return HAL_ERROR; 664 if (dataToStore->eepromState.revisionInfo != 0) return HAL_ERROR; 665 if (dataToStore->eepromState.firstStartId != CONFIG_ID) return HAL_ERROR; 666 667 668 return HAL_OK; 669 } 670 671 /*Entfernte EEPROM Werte 672 783 673 data->s.values.dischargeTotalAh = dataToStore->changedData.dischargeTotalAh; 784 674 data->s.values.chargeTotalAh = dataToStore->changedData.chargeTotalAh; 785 675 data->s.values.dischargeTotalWh = dataToStore->changedData.dischargeTotalWh; 786 676 data->s.values.chargeTotalWh = dataToStore->changedData.chargeTotalWh; 787 data->s.parameter.cefW = dataToStore ->changedData.cefW;788 677 data->s.values.onTime = dataToStore->changedData.onTime; 789 790 678 data->s.values.mAsCounter = dataToStore->changedData.mAsCounter; 791 679 data->s.values.detectedCapacity = dataToStore->changedData.detectedCapacity; … … 793 681 data->s.values.mAs_AutoMode = dataToStore->changedData.mAs_AutoMode; 794 682 data->s.values.mWs_AutoMode = dataToStore->changedData.mWs_AutoMode; 795 796 // Geräteinformation 797 data->s.parameter.sn = dataToStore->deviceInfo.SN; 798 799 // prüfe Eeprom Status Infos 800 //dataToStore->eepromState.writeCounter ++ ; 801 if (dataToStore->eepromState.structureSize != sizeof(eeprom_stored_data_t)) return HAL_ERROR; 802 if (dataToStore->eepromState.revisionInfo != 0) return HAL_ERROR; 803 if (dataToStore->eepromState.firstStartId != CONFIG_ID) return HAL_ERROR; 804 805 return HAL_OK; 806 } 683 */ 684 807 685 808 686 //--- NEW Functions -
trunk/fw_g473rct/SES/src/esr.c
r20 r25 4 4 #include "esr.h" 5 5 #include <stdlib.h> 6 #include <stdio.h> 6 #include "main.h" 7 #include "battery_voltage.h" 8 #include "fast_current.h" 9 7 10 8 11 9 12 int32_t current_buffer[SAMPLE_ARRAY_SIZE]; 10 13 int32_t voltage_buffer[SAMPLE_ARRAY_SIZE]; 11 int32_t current_buffer_fast[SAMPLE_ARRAY_SIZE]; 12 int32_t voltage_buffer_fast[SAMPLE_ARRAY_SIZE]; 14 //int32_t current_buffer_fast[SAMPLE_ARRAY_SIZE]; 15 //int32_t voltage_buffer_fast[SAMPLE_ARRAY_SIZE]; 16 17 extern uint16_t adc12Data[SAMPLE_ARRAY_SIZE][2]; 13 18 14 19 … … 105 110 for (x=0; x < SAMPLE_ARRAY_SIZE; x++) 106 111 { 107 sys_data.s.values.current_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = current_buffer[x];108 sys_data.s.values.voltage_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = voltage_buffer[x];112 sys_data.s.values.current_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = adc12Data[x][0]; 113 sys_data.s.values.voltage_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = adc12Data[x][1]; 109 114 } 110 115 … … 126 131 sys_data.s.values.esrCalcTime = sys_data.s.values.onTime - last_refresh; 127 132 128 for (x=SAMPLE_ARRAY_SIZE-1; x>0; x--)129 {130 current_buffer_fast[x] = current_buffer_fast[x-1];131 voltage_buffer_fast[x] = voltage_buffer_fast[x-1];132 }133 134 // Neue Werte ins array aufnehmen135 current_buffer_fast[0] = sys_data.s.values.fast_current;136 voltage_buffer_fast[0] = sys_data.s.values.shuntVoltage;137 133 138 134 … … 150 146 for (x=0; x < SAMPLE_ARRAY_SIZE; x++) 151 147 { 152 if (a bs(current_buffer_fast[x]) < minI) { minI = abs(current_buffer_fast[x]); minIPos = x; }153 if (a bs(current_buffer_fast[x]) >= maxI) { maxI = abs(current_buffer_fast[x]); maxdIPos = x; }154 if (a bs(voltage_buffer_fast[x]) < minU) { minU = abs(voltage_buffer_fast[x]); minUPos = x; }155 if (a bs(voltage_buffer_fast[x]) > maxU) { maxU = abs(voltage_buffer_fast[x]); maxUPos = x; }148 if (adc12Data[x][0] < minI) { minI = adc12Data[x][0]; minIPos = x; } 149 if (adc12Data[x][0] >= maxI) { maxI = adc12Data[x][0]; maxdIPos = x; } 150 if (adc12Data[x][1] < minU) { minU = adc12Data[x][1]; minUPos = x; } 151 if (adc12Data[x][1] > maxU) { maxU = adc12Data[x][1]; maxUPos = x; } 156 152 } 157 153 … … 160 156 161 157 //Delta berechnen 162 int32_t dI = abs (maxI - minI); 163 int32_t dU = abs (maxU - minU); 158 int32_t dI = maxI - minI; 159 int32_t dU = maxU - minU; 160 161 //Umrechnung in mV / mA 162 dI = dI * ((int64_t) VREF / FAST_CURRENT_SHUNT_RESISTOR / FAST_CURRENT_I_SENSE_GAIN / FAST_CURRENT_ADC_RESOLUTION); 163 dI = dI * (sys_data.s.parameter.batteryCurrentGainCorrectionFaktor / 1000000.0); 164 165 dU = dU * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER / BATTERY_VOLTAGE_ADC_RESOLUTION ; 166 164 167 165 168 //Minimale Belastung Prüfen ob es genügent Änderungen gab … … 168 171 int32_t min_dI; 169 172 min_dI = sys_data.s.parameter.cellCapacity / sys_data.s.parameter.cellRatedDischargeTime; //Nennlaststrom in mA 170 min_dI = min_dI / 4 ; 171 172 int32_t min_dU = 100; 173 174 if( dI < min_dI) 173 min_dI = min_dI / 10 ; 174 175 176 int32_t min_dU = 10; 177 178 if( abs(dI) < min_dI) 175 179 { 176 180 … … 180 184 //printf("dI change!\r\n"); 181 185 182 if ( dU< min_dU) {186 if (abs(dU) < min_dU) { 183 187 return -2; 184 188 } … … 191 195 int32_t dIMaxPos=-1; 192 196 197 198 199 //Finde Position der flanke 193 200 for (x=0; x < (SAMPLE_ARRAY_SIZE-1); x++) 194 201 { 195 dIx = a bs(current_buffer_fast[x+1] - current_buffer_fast[x]);202 dIx = adc12Data[x+1][0] - adc12Data[x][0]; 196 203 if (dIx > dIMax) { dIMax = dIx; dIMaxPos = x; } 197 204 } 198 205 199 200 201 if (dIMaxPos == SAMPLE_ARRAY_SIZE / 2) 202 { 203 //ESR berechnen! 204 sys_data.s.values.esr_fast = ( (double)dU / (double) dI) * 1000; 205 last_refresh = sys_data.s.values.onTime; 206 207 208 for (x=0; x < SAMPLE_ARRAY_SIZE; x++) 209 { 210 sys_data.s.values.current_buffer_fast[(SAMPLE_ARRAY_SIZE-1)-x] = current_buffer_fast[x]; 211 sys_data.s.values.voltage_buffer_fast[(SAMPLE_ARRAY_SIZE-1)-x] = voltage_buffer_fast[x]; 212 } 213 214 215 216 217 } 206 if ((dIMaxPos < 5 ) || (dIMaxPos > (SAMPLE_ARRAY_SIZE-5) )) 207 { 208 return -3; 209 } 210 211 212 //ESR berechnen! 213 sys_data.s.values.esr_fast = ( (double)dU / (double) dI) * 1000; 214 last_refresh = sys_data.s.values.onTime; 215 216 217 for (x=0; x < SAMPLE_ARRAY_SIZE; x++) 218 { 219 sys_data.s.values.current_buffer_fast[x] = (int32_t) adc12Data[x][0] - FAST_CURRENT_ADC_OFFSET ; 220 sys_data.s.values.voltage_buffer_fast[x] = (int32_t) adc12Data[x][1] - BATTERY_VOLTAGE_ADC_OFFSET ; 221 } 222 223 224 225 226 218 227 return 0; 219 228 } -
trunk/fw_g473rct/SES/src/fast_current.c
r24 r25 17 17 18 18 // --- LOKALE DEFINES - bitte hier dokumentieren -------------------------------- 19 20 #define I_SENSE_GAIN 40.021 #define ADC_OFFSET 3276822 #define ADC_RESOLUTION 32768 //65536/2 da im differential mode23 24 25 #if (DEVICETYPE == 500)26 #define SHUNT_RESISTOR 0.00012527 #elif (DEVICETYPE == 250)28 #define SHUNT_RESISTOR 0.00025029 #elif (DEVICETYPE == 125)30 #define SHUNT_RESISTOR 0.00050031 #else32 #error No valid device type33 #endif34 35 19 36 20 … … 55 39 //Umrechung auf Strom 56 40 double temp_current; 57 temp_current = ((int32_t) newVal - ADC_OFFSET) * VREF ;58 temp_current = temp_current / ADC_RESOLUTION;59 temp_current = temp_current / I_SENSE_GAIN ;60 temp_current = temp_current / SHUNT_RESISTOR ;41 temp_current = ((int32_t) newVal - FAST_CURRENT_ADC_OFFSET) * VREF ; 42 temp_current = temp_current / FAST_CURRENT_ADC_RESOLUTION; 43 temp_current = temp_current / FAST_CURRENT_I_SENSE_GAIN ; 44 temp_current = temp_current / FAST_CURRENT_SHUNT_RESISTOR ; 61 45 sys_data.s.values.fast_current = temp_current * (sys_data.s.parameter.batteryCurrentGainCorrectionFaktor / 1000000.0); 62 46 -
trunk/fw_g473rct/SES/src/main.c
r24 r25 44 44 #include "chip_temperature.h" 45 45 #include "shunt_temperature.h" 46 #include "esr.h" 47 #include "ads1260.h" 48 #include "outputs.h" 49 #include "crc.h" 46 50 /* USER CODE END Includes */ 47 51 … … 139 143 MX_USB_PCD_Init(); 140 144 /* USER CODE BEGIN 2 */ 145 MX_CRC_Init(); //Cube is not generating this call ?! 141 146 printf("Test debug io\r\n"); 142 147 SYS_DATA_Init(); … … 207 212 Error_Handler(); 208 213 } 214 215 216 // ADS1260 Initialierung 217 ADS1260_init(); 218 printf("ADS1260 Init\n"); 219 OUTPUTS_Init(); 209 220 210 221 /* USER CODE END 2 */ … … 249 260 sys_data.s.values.lvp_sense = (adc5Data[3] * VREF * 21 ) / 65536.0; 250 261 } 262 263 264 if (newCurrentValue == 1) 265 { 266 ADS1260_ConversionFinished(); 267 ESR_Exec(); 268 269 newCurrentValue = 0; 270 271 } 251 272 252 273 if(sys_data.s.parameter.command != 0) -
trunk/fw_g473rct/SES/src/sysdata.c
r23 r25 37 37 38 38 39 sys_data.s.parameter.fw_revision_major = 2;40 sys_data.s.parameter.fw_revision_minor = 1;41 sys_data.s.parameter.fw_revision_revision = 5;39 sys_data.s.parameter.fw_revision_major = 1; 40 sys_data.s.parameter.fw_revision_minor = 0; 41 sys_data.s.parameter.fw_revision_revision = 0; 42 42 43 43 sys_data.s.values.batteryCurrentMax = INT32_MIN; … … 53 53 sys_data.s.parameter.test[3] = 5; 54 54 55 sys_data.s.values.message[0] = 'a'; 56 sys_data.s.values.message[1] = 'b'; 57 sys_data.s.values.message[18] = 'y'; 58 sys_data.s.values.message[19] = 'z'; 59 55 60 }
Note: See TracChangeset
for help on using the changeset viewer.
