Index: trunk/fw_g473rct/Core/Src/main.c
===================================================================
--- trunk/fw_g473rct/Core/Src/main.c	(revision 77)
+++ trunk/fw_g473rct/Core/Src/main.c	(revision 78)
@@ -71,7 +71,7 @@
 
 #define MAX_OVERCURRENT_RETRYS	3
-#ifdef DEBUG
+
 #define MX_IWDG_Init DoNothing
-#endif
+
 //#define USBPD_DPM_Run DoNothing
 
@@ -192,5 +192,5 @@
   MX_CRC_Init();
   MX_RTC_Init();
-  //MX_IWDG_Init();
+  MX_IWDG_Init();
   MX_TIM3_Init();
   #ifndef NO_USB_SUPPORT 
@@ -216,6 +216,4 @@
 	  case FIRST_START_ERROR:						EEPROM_fullRestore(&sys_data);		  break;
   }
-  
-  HAL_IWDG_Refresh(&hiwdg);
 
   // Set Slave Address via user button
@@ -236,5 +234,8 @@
     }
   }*/
-  HAL_IWDG_Refresh(&hiwdg);
+
+  #undef MX_IWDG_Init
+  MX_IWDG_Init();
+
   LoadBackupRegister();
   
@@ -253,5 +254,4 @@
   if (HAL_ADCEx_Calibration_Start(&hadc4, ADC_DIFFERENTIAL_ENDED) != HAL_OK) Error_Handler();
   if (HAL_ADCEx_Calibration_Start(&hadc5, ADC_SINGLE_ENDED) != HAL_OK) Error_Handler();
-
 
 
@@ -630,5 +630,5 @@
 #endif
 
-	// Buzzer signalize that we are now in Slave Address Setting mode 
+	// Buzzer signalizes that we are now in Slave Address Setting mode 
 	startTime = HAL_GetTick();
 	while (HAL_GetTick() - startTime < 300U)
@@ -639,9 +639,21 @@
 	HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, BUZZER_OFF);
 
-	// We need to wait till button release(10s)
+	// We need to wait till button release(15s)
 	startTime = HAL_GetTick();
 	while (BTN_PRESSED == HAL_GPIO_ReadPin(GPIO_INPUT_BTN_MODE_GPIO_Port, GPIO_INPUT_BTN_MODE_Pin))
-	{
-		if (HAL_GetTick() - startTime >= 60U * 1000U) return 0;
+	{	// if we hold a user button pressed for a 15s, when we perform Factory Reset
+		if (HAL_GetTick() - startTime >= 15U * 1000U)
+		{
+			// Buzzer signalizes that we are now in Factory Reset mode 
+			startTime = HAL_GetTick();
+			while (HAL_GetTick() - startTime < 1000U)
+			{
+				HAL_GPIO_TogglePin(BUZZER_GPIO_Port, BUZZER_Pin);
+				HAL_Delay(50U);
+			}
+			HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, BUZZER_OFF);
+			EEPROM_factoryRestore(&sys_data, 1);
+			return 0;
+		}
 		HAL_Delay(10U);
 	}
Index: trunk/fw_g473rct/SES/src/eeprom.c
===================================================================
--- trunk/fw_g473rct/SES/src/eeprom.c	(revision 77)
+++ trunk/fw_g473rct/SES/src/eeprom.c	(revision 78)
@@ -412,5 +412,4 @@
   eepromData.changedData.shuntVoltageFastOffset										= data->s.parameter.shuntVoltageFastOffset;
   
-  
   eepromData.changedData.batteryCurrentGainRefTempShunt								= data->s.parameter.batteryCurrentGainRefTempShunt;
   eepromData.changedData.batteryCurrentGainRefTempChip								= data->s.parameter.batteryCurrentGainRefTempChip;
@@ -472,5 +471,5 @@
  
 
-  eepromData.eepromState.writeCounter		= eepromData.eepromState.writeCounter++;
+  eepromData.eepromState.writeCounter++;
   eepromData.eepromState.structureSize		= sizeof(eeprom_stored_data_t);
   eepromData.eepromState.revisionInfo		= 0;
@@ -480,5 +479,5 @@
   eepromData.deviceInfo.SN					= data->s.parameter.sn;
 
-  EEPROM_Write(0,0, (uint8_t*)&eepromData, sizeof(eeprom_stored_data_t));
+  EEPROM_Write(0, 0, (uint8_t*)&eepromData, sizeof(eeprom_stored_data_t));
 
   return EEPROM_readConfig(data);
