Index: trunk/firmware_cube/Core/Src/main.c
===================================================================
--- trunk/firmware_cube/Core/Src/main.c	(revision 8)
+++ trunk/firmware_cube/Core/Src/main.c	(revision 9)
@@ -22,4 +22,11 @@
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
+#include "stdio.h"
+#include "button.h"
+#include "buzzer.h"
+#include "relais.h"
+#include "modeswitch.h"
+#include "mode_mainswitch.h"
+#include "mode_secondaryprotection.h"
 
 /* USER CODE END Includes */
@@ -32,5 +39,5 @@
 /* Private define ------------------------------------------------------------*/
 /* USER CODE BEGIN PD */
-
+int oldTimeMSTick;
 /* USER CODE END PD */
 
@@ -88,5 +95,27 @@
   MX_GPIO_Init();
   /* USER CODE BEGIN 2 */
-
+  //Selbsttest
+  HAL_GPIO_WritePin(GPIO_OUTPUT_BUZZER_GPIO_Port, GPIO_OUTPUT_BUZZER_Pin, GPIO_PIN_SET);
+  HAL_GPIO_WritePin(GPIO_OUTPUT_LED_ERROR_GPIO_Port, GPIO_OUTPUT_LED_ERROR_Pin, GPIO_PIN_SET);
+  HAL_GPIO_WritePin(GPIO_OUTPUT_LED_ON_GPIO_Port, GPIO_OUTPUT_LED_ON_Pin, GPIO_PIN_SET);
+  HAL_Delay(1000);
+  HAL_GPIO_WritePin(GPIO_OUTPUT_BUZZER_GPIO_Port, GPIO_OUTPUT_BUZZER_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIO_OUTPUT_LED_ERROR_GPIO_Port, GPIO_OUTPUT_LED_ERROR_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIO_OUTPUT_LED_ON_GPIO_Port, GPIO_OUTPUT_LED_ON_Pin, GPIO_PIN_RESET);
+
+  //--- RELAIS ZURÜCKSETZEN, damit es definitiv aus ist ---
+  //Sicherstellen das nicht noch die Set Spule aktiv geschaltet ist
+  HAL_GPIO_WritePin(GPIO_OUTPUT_RELAIS_SET_GPIO_Port, GPIO_OUTPUT_RELAIS_SET_Pin, GPIO_PIN_RESET);
+
+  //Puls starten
+  HAL_GPIO_WritePin(GPIO_OUTPUT_RELAIS_RESET_GPIO_Port, GPIO_OUTPUT_RELAIS_RESET_Pin, GPIO_PIN_SET);
+  HAL_Delay(50);
+  HAL_GPIO_WritePin(GPIO_OUTPUT_RELAIS_RESET_GPIO_Port, GPIO_OUTPUT_RELAIS_RESET_Pin, GPIO_PIN_RESET);
+  //--- RELAIS ZURÜCKSETZEN ENDE ----
+
+
+
+  MODESWITCH_ReadMode();
+  
   /* USER CODE END 2 */
 
@@ -98,4 +127,27 @@
 
     /* USER CODE BEGIN 3 */
+    if (oldTimeMSTick != HAL_GetTick())
+    {
+      BUTTON_Exec();
+      BUZZER_Exec();
+      RELAIS_Exec();
+      oldTimeMSTick = HAL_GetTick();
+    }
+
+
+    switch (MODESWITCH_GetMode())
+    {
+      case MODE_MAINSWITCH:
+        MODE_MAINSWITCH_Exec();
+      break;
+
+      case MODE_MAINSWITCH_SECONDARYPROTECTION:
+        MODE_SECONDARYPROTECTION_Exec();
+      break;
+
+      default:
+      printf("mode not yet implemented\n");
+
+    }
   }
   /* USER CODE END 3 */
