Index: trunk/fw_g473rct/SES/src/ads1260.c
===================================================================
--- trunk/fw_g473rct/SES/src/ads1260.c	(revision 24)
+++ trunk/fw_g473rct/SES/src/ads1260.c	(revision 25)
@@ -61,5 +61,5 @@
 
 #define DEFAULT_ADS1260_TRANSMIT_TIMEOUT            (10)
-#define DEFAULT_ADS1260_TRANSMIT_RECEIVE_TIMEOUT    (10)
+#define DEFAULT_ADS1260_TRANSMIT_RECEIVE_TIMEOUT    (1000)
 #define ADS1260_SELF_OFFSET_CALIBRATION_TIMEOUT     (2000)    // > 16 * sampletime muss eingestellt werden
 #define ADS1260_SYSTEM_OFFSET_CALIBRATION_TIMEOUT   (2000)
@@ -776,6 +776,6 @@
 
   /* 4*/ //while(HAL_GPIO_ReadPin(ADC_DATA_READY_GPIO_Port, ADC_DATA_READY_Pin) == GPIO_PIN_RESET);
-         HAL_NVIC_SetPriority(EXTI2_IRQn, 2, 0);
-         HAL_NVIC_EnableIRQ(EXTI2_IRQn);
+         //HAL_NVIC_SetPriority(EXTI2_IRQn, 2, 0);
+         //HAL_NVIC_EnableIRQ(EXTI2_IRQn);
 
   /* 5*/ ADS_1260_SetExternalReference(&hspi3);
@@ -1005,5 +1005,5 @@
         //HAL_GPIO_WritePin(ADC_SPI1_NSS_GPIO_Port, ADC_SPI1_NSS_Pin, GPIO_PIN_SET);
 
-        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))
+        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))		
         {
             if ((Dout[4] & (1U << MODE3_STATENB)) && (Dout[4] & (1U << MODE3_CRCENB)))
Index: trunk/fw_g473rct/SES/src/battery_voltage.c
===================================================================
--- trunk/fw_g473rct/SES/src/battery_voltage.c	(revision 24)
+++ trunk/fw_g473rct/SES/src/battery_voltage.c	(revision 25)
@@ -20,7 +20,4 @@
 
 
-#define BATTERY_VOLTAGE_VOLTAGE_DIVIDER       6.0
-#define ADC_RESOLUTION						  32768.0 //65536/2 da im differential mode
-#define ADC_OFFSET							  32768.0
 
 //	--- LOKALE TYPE DEFS - bitte hier dokumentieren-------------------------------
@@ -54,5 +51,5 @@
 
   //Umrechung auf Eingangsspannung am Gerät mit Teiler
-  sys_data.s.values.batteryVoltage = ((avgVal-ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) / ADC_RESOLUTION;
+  sys_data.s.values.batteryVoltage = ((avgVal-BATTERY_VOLTAGE_ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) / BATTERY_VOLTAGE_ADC_RESOLUTION;
 
   
@@ -76,5 +73,5 @@
   //Berechnung schnelle Wert ohne Glättung:
   //Umrechung auf Eingangsspannung am Gerät mit Teiler
-  sys_data.s.values.fast_voltage = ((newVal-ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) / ADC_RESOLUTION;
+  sys_data.s.values.fast_voltage = ((newVal-BATTERY_VOLTAGE_ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) / BATTERY_VOLTAGE_ADC_RESOLUTION;
 
 
Index: trunk/fw_g473rct/SES/src/eeprom.c
===================================================================
--- trunk/fw_g473rct/SES/src/eeprom.c	(revision 24)
+++ trunk/fw_g473rct/SES/src/eeprom.c	(revision 25)
@@ -94,95 +94,11 @@
   int16_t	  uBatEmptyCompStopTemp;					// We stop calculating uBatEmpty compensations when cell temperature is lower than this value
   uint16_t	  uBatEmptyCompStopVolt;					// uBatEmpty Voltage at temperatures lower than lvpCompStopTemp
-
   int16_t	  extraDischargeStrom_mA;					// For example, current that consumes LiPro itself
-  uint32_t	  dischargeTotalAh;
-  uint32_t	  chargeTotalAh;
-  uint32_t	  dischargeTotalWh;							// 154-155	[mAs]
-  uint32_t	  chargeTotalWh;							// 156-157	[mAs]
-
   uint16_t	  cefW;
-  uint32_t	  onTime;
+
 
 } eeprom_data_t;
 
-typedef struct
-{
-  // Schnittstellenparameter
-  uint32_t	  baudrate;
-  uint16_t	  parityMode;
-  uint16_t	  stopBits;
-  uint16_t	  slave_adress;
-  uint16_t	  ibn_day;
-  uint16_t	  ibn_month;
-  uint16_t	  ibn_year;
-  uint16_t	  user_id;
-
-  // Offset und Gain
-  int16_t	  batteryCurrentOffsetRefTemperatureShunt;
-  int16_t	  batteryCurrentOffsetRefTemperatureChip;
-  int16_t	  batteryCurrentGainRefTempShunt;
-  int16_t	  batteryCurrentGainRefTempChip;
-  int16_t	  batteryCurrentOffsetTemperatureCalibrationTemperature;
-  int16_t	  batteryCurrentGainTemperatureCalibrationShuntTemperature;
-  int16_t	  batteryCurrentGainTemperatureCalibrationChipTemperature;
-  int32_t	  batteryCurrentOffsetRefshuntVoltage;
-  int32_t	  batteryCurrentOffsetCommonModeCalibrationVoltage;
-  int32_t	  batteryCurrentOffsetCommonModeCompensationFactor;
-  int32_t	  batteryCurrentOffsetTemperatureCompensationFactor;
-  int32_t	  batteryCurrentGainRefCurrent;
-  int32_t	  batteryCurrentGainTemperatureCompensationShuntFactor;
-  int32_t	  batteryCurrentGainTemperatureCompensationChipFactor;
-
-  int32_t	  currentOffset;
-  uint32_t	  currentGain;
-
-  int64_t	  mAsCounter;
-  int32_t	  detectedCapacity;
-  int32_t	  detectedEnergy;
-  int32_t	  mAh_AutoMode;
-  int32_t	  mWh_AutoMode;
-
-  // battery parameter
-  uint16_t	  cef;
-  uint16_t	  peukert;
-  uint32_t	  cellCapacity;
-  uint32_t	  cellEnergy;
-  uint16_t	  iBatFull;
-  uint16_t	  tBatFull;
-  uint16_t	  uBatFull;
-  uint16_t	  uBatEmpty;
-  uint8_t	  socCalcMode;
-  uint16_t	  cellRatedDischargeTime;
-
-  // Schaltausgänge
-  uint16_t	  lvpStart;									// Spannung ab der die LOW Voltage Protection aktiv wird in mV
-  uint16_t	  lvpStop;									// Spannung ab der die LOW Voltage Protection wieder inaktiv wird
-  uint16_t	  ovpStart;									// Spannung ab der die OVER Voltage Protection aktiv wird in mV
-  uint16_t	  ovpStop;									// Spannung ab der die OVER Voltage Protection wieder inaktiv wird
-  int16_t	  loadCurrentLimit;							// maximaler Laststrom in A wenn der Strom größer ist als der eingestelle Wert dann wird die Laststrom Protection aktiv
-  int16_t	  chargeCurrentLimit;						// maximaler Ladestrom in A wenn der Strom größer ist als der eingestelle Wert dann wird die Ladestrom Protection aktiv
-  int16_t	  chargeStopHighTemperatureStart;			// Abschalttemperatur Ladung wegen zu hoher Temperatur
-  int16_t	  chargeStopHighTemperatureStop;			// Wiedereinschalttemperatur
-  int16_t	  chargeStopLowTemperatureStart;			// Abschalttemperatur Ladung wegen zu niedriger Temperatur
-  int16_t	  chargeStopLowTemperatureStop;				// Wiedereinschalttemperatur
-  int16_t	  dischargeStopHighTemperatureStart;		// Abschalttemperatur Entladung wegen zu hoher Temperatur
-  int16_t	  dischargeStopHighTemperatureStop;			// Wiedereinschalttemperatur
-  int16_t	  dischargeStopLowTemperatureStart;			// Abschalttemperatur EntLadung wegen zu niedriger Temperatur
-  int16_t	  dischargeStopLowTemperatureStop;			// Wiedereinschalttemperatur
-
-  int16_t	  uBatEmptyCompStartTemp;					// We start calculating uBatEmpty compensations only when cell temperature is lower than this value
-  int16_t	  uBatEmptyCompStopTemp;					// We stop calculating uBatEmpty compensations when cell temperature is lower than this value
-  uint16_t	  uBatEmptyCompStopVolt;					// uBatEmpty Voltage at temperatures lower than lvpCompStopTemp
-
-  int16_t	  extraDischargeStrom_mA;					// For example, current that consumes LiPro itself
-  uint32_t	  dischargeTotalAh;
-  uint32_t	  chargeTotalAh;
-  uint32_t	  dischargeTotalWh;							// 154-155	[mAs]
-  uint32_t	  chargeTotalWh;							// 156-157	[mAs]
-
-  uint16_t	  cefW;
-  uint32_t	  onTime;
-
-}eeprom_old_data_t;
+
 
 // Substitute for #if sizeof(some_type) == sizeof(another_type) functionality
@@ -248,5 +164,5 @@
 
 // muss modulo 8 noch hinzufügen wg 8 byte alignement
-static uint64_t eepromData[(SIZE_OF_DATA_TO_STORE / 8) + 1];
+static uint8_t eepromData[SIZE_OF_DATA_TO_STORE];
 
 
@@ -336,11 +252,6 @@
 
 	/* extraDischargeStrom_mA	*/											7,				// mA, current that LiPro consumes itself
-	/* dischargeTotalAh			*/											0,				// Ah for negative current counter
-	/* chargeTotalAh			*/											0,				// Ah for total charge counter
-	/* dischargeTotalWh			*/											0,
-	/* chargeTotalWh			*/											0,
-
 	/* cefW		*/															90,				// 90% cef for Wh calculations
-	/* onTime	*/															0
+	
 
 };
@@ -359,6 +270,4 @@
 startType_t EEPROM_isFirstStart(void)
 {
-  // sizeof eeprom_new_data_t must not be equal to size of eeprom_old_data_t
-  BUILD_BUG_ON(sizeof(eeprom_data_t) == sizeof(eeprom_old_data_t));
 
   uint8_t firstStartCatcher;
@@ -390,8 +299,4 @@
 {
   eeprom_stored_data_t* dataToStore;
-  uint32_t PageError;
-  uint32_t Address;
-  uint32_t x;
-
   printf("EEPROM FULL RESTORE!\n");
 
@@ -458,17 +363,8 @@
 
   dataToStore->changedData.extraDischargeStrom_mA									= defaultEepromData.extraDischargeStrom_mA;
-  dataToStore->changedData.dischargeTotalAh											= defaultEepromData.dischargeTotalAh;
-  dataToStore->changedData.chargeTotalAh											= defaultEepromData.chargeTotalAh;
-  dataToStore->changedData.dischargeTotalWh											= defaultEepromData.dischargeTotalWh;
-  dataToStore->changedData.chargeTotalWh											= defaultEepromData.chargeTotalWh;
   dataToStore->changedData.cefW														= defaultEepromData.cefW;
-  dataToStore->changedData.onTime													= defaultEepromData.onTime;
-
-  dataToStore->changedData.mAsCounter												= defaultEepromData.mAsCounter;
-  dataToStore->changedData.detectedCapacity											= defaultEepromData.detectedCapacity;
-  dataToStore->changedData.detectedEnergy											= defaultEepromData.detectedEnergy;
-  dataToStore->changedData.mAs_AutoMode												= defaultEepromData.mAs_AutoMode;
-  dataToStore->changedData.mWs_AutoMode												= defaultEepromData.mWs_AutoMode;
-
+  
+
+  
   // Eeprom Status Infos
   dataToStore->eepromState.writeCounter++;
@@ -567,18 +463,9 @@
 
   dataToStore->changedData.extraDischargeStrom_mA									= defaultEepromData.extraDischargeStrom_mA;
-  dataToStore->changedData.dischargeTotalAh											= defaultEepromData.dischargeTotalAh;
-  dataToStore->changedData.chargeTotalAh											= defaultEepromData.chargeTotalAh;
   dataToStore->changedData.cefW														= defaultEepromData.cefW;
-  dataToStore->changedData.onTime													= defaultEepromData.onTime;
-
-  // These fields are new
-  dataToStore->changedData.mAsCounter												= defaultEepromData.mAsCounter;
-  dataToStore->changedData.detectedCapacity											= defaultEepromData.detectedCapacity;
-  dataToStore->changedData.detectedEnergy											= defaultEepromData.detectedEnergy;
-  dataToStore->changedData.mAs_AutoMode												= defaultEepromData.mAs_AutoMode;
-  dataToStore->changedData.mWs_AutoMode												= defaultEepromData.mWs_AutoMode;
-  dataToStore->changedData.dischargeTotalWh											= defaultEepromData.dischargeTotalWh;
-  dataToStore->changedData.chargeTotalWh											= defaultEepromData.chargeTotalWh;
-
+ 
+
+
+ 
 
   dataToStore->eepromState.writeCounter	  = dataToStore->eepromState.writeCounter++;
@@ -599,7 +486,4 @@
 {
   eeprom_stored_data_t* dataToStore;
-  uint32_t PageError;
-  uint32_t Address;
-  uint32_t x;
   /****************LESE_WERTE_AUS_SYSDATA*********************/
   printf("EEPROM STORE CONFIG!\n");
@@ -669,19 +553,7 @@
   dataToStore->changedData.uBatEmptyCompStopTemp = data->s.parameter.uBatEmptyCompStopTemp;
   dataToStore->changedData.uBatEmptyCompStopVolt = data->s.parameter.uBatEmptyCompStopVolt;
-
   dataToStore->changedData.extraDischargeStrom_mA = data->s.parameter.extraDischargeStrom_mA;
-  dataToStore->changedData.dischargeTotalAh = data->s.values.dischargeTotalAh;
-  dataToStore->changedData.chargeTotalAh = data->s.values.chargeTotalAh;
-  dataToStore->changedData.dischargeTotalWh = data->s.values.dischargeTotalWh;
-  dataToStore->changedData.chargeTotalWh = data->s.values.chargeTotalWh;
   dataToStore->changedData.cefW = data->s.parameter.cefW;
-  dataToStore->changedData.onTime = data->s.values.onTime;
-
-  dataToStore->changedData.mAsCounter = data->s.values.mAsCounter;
-  dataToStore->changedData.detectedCapacity = data->s.values.detectedCapacity;
-  dataToStore->changedData.detectedEnergy = data->s.values.detectedEnergy;
-  dataToStore->changedData.mAs_AutoMode = data->s.values.mAs_AutoMode;
-  dataToStore->changedData.mWs_AutoMode = data->s.values.mWs_AutoMode;
-
+ 
   // Eeprom Status Infos
   dataToStore->eepromState.writeCounter++;
@@ -781,11 +653,27 @@
 
   data->s.parameter.extraDischargeStrom_mA										= dataToStore->changedData.extraDischargeStrom_mA;
+  data->s.parameter.cefW														= dataToStore->changedData.cefW;
+
+
+  //  Geräteinformation
+  data->s.parameter.sn															= dataToStore->deviceInfo.SN;
+
+  // prüfe Eeprom Status Infos
+  //dataToStore->eepromState.writeCounter ++ ;
+  if (dataToStore->eepromState.structureSize != sizeof(eeprom_stored_data_t)) return HAL_ERROR;
+  if (dataToStore->eepromState.revisionInfo != 0) return HAL_ERROR;
+  if (dataToStore->eepromState.firstStartId != CONFIG_ID) return HAL_ERROR;
+
+
+  return HAL_OK;
+}
+
+/*Entfernte EEPROM Werte
+
   data->s.values.dischargeTotalAh												= dataToStore->changedData.dischargeTotalAh;
   data->s.values.chargeTotalAh													= dataToStore->changedData.chargeTotalAh;
   data->s.values.dischargeTotalWh												= dataToStore->changedData.dischargeTotalWh;
   data->s.values.chargeTotalWh													= dataToStore->changedData.chargeTotalWh;
-  data->s.parameter.cefW														= dataToStore ->changedData.cefW;
   data->s.values.onTime															= dataToStore->changedData.onTime;
-
   data->s.values.mAsCounter														= dataToStore->changedData.mAsCounter;
   data->s.values.detectedCapacity												= dataToStore->changedData.detectedCapacity;
@@ -793,16 +681,6 @@
   data->s.values.mAs_AutoMode													= dataToStore->changedData.mAs_AutoMode;
   data->s.values.mWs_AutoMode													= dataToStore->changedData.mWs_AutoMode;
-
-  //  Geräteinformation
-  data->s.parameter.sn															= dataToStore->deviceInfo.SN;
-
-  // prüfe Eeprom Status Infos
-  //dataToStore->eepromState.writeCounter ++ ;
-  if (dataToStore->eepromState.structureSize != sizeof(eeprom_stored_data_t)) return HAL_ERROR;
-  if (dataToStore->eepromState.revisionInfo != 0) return HAL_ERROR;
-  if (dataToStore->eepromState.firstStartId != CONFIG_ID) return HAL_ERROR;
-
-  return HAL_OK;
-}
+*/
+
 
 //--- NEW Functions
Index: trunk/fw_g473rct/SES/src/esr.c
===================================================================
--- trunk/fw_g473rct/SES/src/esr.c	(revision 24)
+++ trunk/fw_g473rct/SES/src/esr.c	(revision 25)
@@ -4,11 +4,16 @@
 #include "esr.h"
 #include <stdlib.h>
-#include <stdio.h>
+#include "main.h"
+#include "battery_voltage.h"
+#include "fast_current.h"
+
 
 
 int32_t current_buffer[SAMPLE_ARRAY_SIZE];  
 int32_t voltage_buffer[SAMPLE_ARRAY_SIZE];
-int32_t current_buffer_fast[SAMPLE_ARRAY_SIZE];  
-int32_t voltage_buffer_fast[SAMPLE_ARRAY_SIZE];
+//int32_t current_buffer_fast[SAMPLE_ARRAY_SIZE];  
+//int32_t voltage_buffer_fast[SAMPLE_ARRAY_SIZE];
+
+extern uint16_t adc12Data[SAMPLE_ARRAY_SIZE][2];
 
 
@@ -105,6 +110,6 @@
     for (x=0; x < SAMPLE_ARRAY_SIZE; x++)
     {
-      sys_data.s.values.current_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = current_buffer[x];
-      sys_data.s.values.voltage_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = voltage_buffer[x];
+      sys_data.s.values.current_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = adc12Data[x][0];
+      sys_data.s.values.voltage_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = adc12Data[x][1];
     }
 
@@ -126,13 +131,4 @@
   sys_data.s.values.esrCalcTime = sys_data.s.values.onTime - last_refresh;
 
-  for (x=SAMPLE_ARRAY_SIZE-1; x>0; x--)
-  {
-    current_buffer_fast[x] = current_buffer_fast[x-1];
-    voltage_buffer_fast[x] = voltage_buffer_fast[x-1];
-  }
-
-  // Neue Werte ins array aufnehmen
-  current_buffer_fast[0] = sys_data.s.values.fast_current;
-  voltage_buffer_fast[0] = sys_data.s.values.shuntVoltage;
 
 
@@ -150,8 +146,8 @@
   for (x=0; x < SAMPLE_ARRAY_SIZE; x++)
   {
-     if (abs(current_buffer_fast[x]) < minI)  { minI = abs(current_buffer_fast[x]); minIPos  = x; }
-     if (abs(current_buffer_fast[x]) >= maxI) { maxI = abs(current_buffer_fast[x]); maxdIPos = x; }  
-     if (abs(voltage_buffer_fast[x]) < minU)  { minU = abs(voltage_buffer_fast[x]); minUPos = x; }
-     if (abs(voltage_buffer_fast[x]) > maxU)  { maxU = abs(voltage_buffer_fast[x]); maxUPos = x; }
+     if (adc12Data[x][0] < minI)  { minI = adc12Data[x][0]; minIPos  = x; }
+     if (adc12Data[x][0] >= maxI) { maxI = adc12Data[x][0]; maxdIPos = x; }  
+     if (adc12Data[x][1] < minU)  { minU = adc12Data[x][1]; minUPos = x; }
+     if (adc12Data[x][1] > maxU)  { maxU = adc12Data[x][1]; maxUPos = x; }
   }
 
@@ -160,6 +156,13 @@
 
   //Delta berechnen
-  int32_t dI = abs (maxI - minI);
-  int32_t dU = abs (maxU - minU);
+  int32_t dI = maxI - minI;
+  int32_t dU = maxU - minU;
+
+  //Umrechnung in mV / mA
+  dI = dI * ((int64_t) VREF / FAST_CURRENT_SHUNT_RESISTOR /  FAST_CURRENT_I_SENSE_GAIN /  FAST_CURRENT_ADC_RESOLUTION);
+  dI = dI * (sys_data.s.parameter.batteryCurrentGainCorrectionFaktor / 1000000.0);
+
+  dU = dU  * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER / BATTERY_VOLTAGE_ADC_RESOLUTION ;
+  
 
   //Minimale Belastung Prüfen ob es genügent Änderungen gab
@@ -168,9 +171,10 @@
   int32_t min_dI;
   min_dI = sys_data.s.parameter.cellCapacity /  sys_data.s.parameter.cellRatedDischargeTime; //Nennlaststrom  in mA
-  min_dI = min_dI / 4 ;
-
-  int32_t min_dU = 100;
-  
-  if( dI < min_dI)
+  min_dI = min_dI / 10 ;
+ 
+
+  int32_t min_dU = 10;
+  
+  if( abs(dI) < min_dI)
   {
   
@@ -180,5 +184,5 @@
   //printf("dI change!\r\n");
 
-  if (dU < min_dU) {
+  if (abs(dU) < min_dU) {
     return -2;
   }
@@ -191,29 +195,34 @@
   int32_t dIMaxPos=-1;
  
+
+
+  //Finde Position der flanke
   for (x=0; x < (SAMPLE_ARRAY_SIZE-1); x++)
   {
-    dIx = abs(current_buffer_fast[x+1] - current_buffer_fast[x]); 
+    dIx = adc12Data[x+1][0] - adc12Data[x][0]; 
     if (dIx > dIMax) { dIMax = dIx; dIMaxPos = x; } 
   }
 
-
-
-  if (dIMaxPos == SAMPLE_ARRAY_SIZE / 2)
-  {
-    //ESR berechnen!
-    sys_data.s.values.esr_fast = ( (double)dU / (double) dI) * 1000;
-    last_refresh = sys_data.s.values.onTime;
-      
-
-    for (x=0; x < SAMPLE_ARRAY_SIZE; x++)
-    {
-      sys_data.s.values.current_buffer_fast[(SAMPLE_ARRAY_SIZE-1)-x] = current_buffer_fast[x];
-      sys_data.s.values.voltage_buffer_fast[(SAMPLE_ARRAY_SIZE-1)-x] = voltage_buffer_fast[x];
-    }
-
-
-
-
-  }
+  if ((dIMaxPos < 5 ) || (dIMaxPos > (SAMPLE_ARRAY_SIZE-5) ))
+  {
+	return -3;
+  }
+
+
+  //ESR berechnen!
+  sys_data.s.values.esr_fast = ( (double)dU / (double) dI) * 1000;
+  last_refresh = sys_data.s.values.onTime;
+	
+
+  for (x=0; x < SAMPLE_ARRAY_SIZE; x++)
+  {
+	sys_data.s.values.current_buffer_fast[x] = (int32_t) adc12Data[x][0] - FAST_CURRENT_ADC_OFFSET  ;
+	sys_data.s.values.voltage_buffer_fast[x] = (int32_t) adc12Data[x][1] - BATTERY_VOLTAGE_ADC_OFFSET ;
+  }
+
+
+
+
+  
   return 0;    
 }
Index: trunk/fw_g473rct/SES/src/fast_current.c
===================================================================
--- trunk/fw_g473rct/SES/src/fast_current.c	(revision 24)
+++ trunk/fw_g473rct/SES/src/fast_current.c	(revision 25)
@@ -17,20 +17,4 @@
 
 //	--- LOKALE DEFINES - bitte hier dokumentieren --------------------------------
-
-#define I_SENSE_GAIN    40.0
-#define ADC_OFFSET							  32768
-#define ADC_RESOLUTION						  32768 //65536/2 da im differential mode
-
-
-  #if (DEVICETYPE == 500)
-    #define SHUNT_RESISTOR	0.000125	
-  #elif (DEVICETYPE == 250)
-    #define SHUNT_RESISTOR	0.000250	
-  #elif (DEVICETYPE == 125)
-    #define SHUNT_RESISTOR	0.000500	
-  #else
-  #error No valid device type
-  #endif
-  		
 
 
@@ -55,8 +39,8 @@
   //Umrechung auf Strom
   double temp_current;
-  temp_current = ((int32_t) newVal - ADC_OFFSET) * VREF ;
-  temp_current = temp_current / ADC_RESOLUTION;
-  temp_current = temp_current / I_SENSE_GAIN ;
-  temp_current = temp_current / SHUNT_RESISTOR ;
+  temp_current = ((int32_t) newVal - FAST_CURRENT_ADC_OFFSET) * VREF ;
+  temp_current = temp_current / FAST_CURRENT_ADC_RESOLUTION;
+  temp_current = temp_current / FAST_CURRENT_I_SENSE_GAIN ;
+  temp_current = temp_current / FAST_CURRENT_SHUNT_RESISTOR ;
   sys_data.s.values.fast_current = temp_current * (sys_data.s.parameter.batteryCurrentGainCorrectionFaktor / 1000000.0);
  
Index: trunk/fw_g473rct/SES/src/main.c
===================================================================
--- trunk/fw_g473rct/SES/src/main.c	(revision 24)
+++ trunk/fw_g473rct/SES/src/main.c	(revision 25)
@@ -44,4 +44,8 @@
 #include "chip_temperature.h"
 #include "shunt_temperature.h"
+#include "esr.h"
+#include "ads1260.h"
+#include "outputs.h"
+#include "crc.h"
 /* USER CODE END Includes */
 
@@ -139,4 +143,5 @@
   MX_USB_PCD_Init();
   /* USER CODE BEGIN 2 */
+  MX_CRC_Init(); //Cube is not generating this call ?!
   printf("Test debug io\r\n");
   SYS_DATA_Init();
@@ -207,4 +212,10 @@
      Error_Handler();
   }
+
+
+  // ADS1260 Initialierung
+  ADS1260_init();
+  printf("ADS1260 Init\n");
+  OUTPUTS_Init();
 
   /* USER CODE END 2 */
@@ -249,4 +260,14 @@
       sys_data.s.values.lvp_sense =  (adc5Data[3] * VREF * 21 ) / 65536.0;
 	}
+
+
+	if (newCurrentValue == 1)
+    {
+      ADS1260_ConversionFinished(); 
+      ESR_Exec();
+
+      newCurrentValue = 0;
+
+    }
 
 	if(sys_data.s.parameter.command != 0)
Index: trunk/fw_g473rct/SES/src/ref_voltage.c
===================================================================
--- trunk/fw_g473rct/SES/src/ref_voltage.c	(revision 25)
+++ trunk/fw_g473rct/SES/src/ref_voltage.c	(revision 25)
@@ -0,0 +1,47 @@
+/******************************************************************************
+*
+* @file    intBatt_voltage.c
+* @author  ECS, Falko Jahn
+* @version V1.0.0
+* @date    2020-05-01
+* @brief       
+*
+******************************************************************************/
+
+//	--- INCLUDES -----------------------------------------------------------------
+#include "main.h"
+#include "sysdata.h"
+#include "int_bat_voltage.h"
+//	--- EXTERNE VARIABLEN -------------------------------------------------------- 
+
+//	--- LOKALE DEFINES - bitte hier dokumentieren --------------------------------
+
+//	--- LOKALE TYPE DEFS - bitte hier dokumentieren-------------------------------
+
+//	--- DEFINITIONEN GLOBALER VARIABLEN - Bitte in Header dokumentieren ----------
+
+//	--- LOKALE VARIABLEN - bitte hier dokumentieren ------------------------------
+
+//	--- LOKALE FUNKTIONS PROTOTYPEN ---------------------------------------------- 
+/*
+* @brief
+* @param	kein
+* @retval	kein
+*/
+
+//	--- LOKALE FUNKTIONEN - bitte hier dokumentieren -----------------------------
+
+
+
+//	--- GLOBALE FUNKTIONEN - bitte in Header dokumentieren------------------------
+void INT_BAT_VOLTAGE_Exec(uint32_t newval)
+{
+
+  // Messung Externe Spannung basierend auf 3,3V Versorgungsspannung
+  // Nur für Debug Zwecke
+  sys_data.s.values.voltageVref = 3300;
+  
+
+  sys_data.s.values.realVdd =   (newval * 3300) / 65536;
+}
+/*************************** End of file ****************************/
Index: trunk/fw_g473rct/SES/src/sysdata.c
===================================================================
--- trunk/fw_g473rct/SES/src/sysdata.c	(revision 24)
+++ trunk/fw_g473rct/SES/src/sysdata.c	(revision 25)
@@ -37,7 +37,7 @@
 
 
-	sys_data.s.parameter.fw_revision_major     = 2;
-	sys_data.s.parameter.fw_revision_minor     = 1;
-	sys_data.s.parameter.fw_revision_revision  = 5;
+	sys_data.s.parameter.fw_revision_major     = 1;
+	sys_data.s.parameter.fw_revision_minor     = 0;
+	sys_data.s.parameter.fw_revision_revision  = 0;
 
 	sys_data.s.values.batteryCurrentMax = INT32_MIN;
@@ -53,3 +53,8 @@
 	sys_data.s.parameter.test[3] = 5;
 
+	sys_data.s.values.message[0] =  'a';
+	sys_data.s.values.message[1] =  'b';
+	sys_data.s.values.message[18] = 'y';
+	sys_data.s.values.message[19] = 'z';
+
 }
