Changeset 10 for trunk/firmware/Core/src
- Timestamp:
- Feb 23, 2025, 1:25:41 PM (5 months ago)
- Location:
- trunk/firmware/Core/src
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/firmware/Core/src/button.c
r9 r10 3 3 #include "main.h" 4 4 #include "buzzer.h" 5 #include "leds.h" 5 6 6 7 #define LONG_PRESS_TIME 5000 … … 31 32 printf("BUTTON: Auto Mode Manual On\n"); 32 33 BUZZER_Alarm_Start(200,1000); 34 LEDS_GN_On(); 33 35 buttonState = BUTTON_MANUAL_ON; 34 36 } … … 41 43 printf("BUTTON: Auto Mode\n"); 42 44 BUZZER_Beep(200); 45 LEDS_GN_Blink_Start(100, 1000); 43 46 buttonState = BUTTON_AUTO; 44 47 } … … 64 67 BUZZER_Alarm_Stop(); //Falls noch im AlarmModus, dann ausschalten 65 68 BUZZER_Beep(200); 69 LEDS_GN_Off(); 66 70 printf("BUTTON: Off Mode\n"); 67 71 buttonState = BUTTON_OFF; … … 84 88 } 85 89 90 void BUTTON_SetModeOff(void) 91 { 92 LEDS_GN_Off(); 93 BUZZER_Alarm_Stop(); //Falls wir im Manual on Mode waren, soll jetzt auch der buzzer wieder ausgehen. 94 buttonState = BUTTON_OFF; 95 } -
trunk/firmware/Core/src/mode_mainswitch.c
r9 r10 1 // Keine LVP und OVP Überwachung aber Fault wird geprüft! 2 // Falls nicht benötigt, nicht anschließen ?! Ist Low active mit PullUp 3 4 5 #include "stdio.h" 1 6 #include "mode_mainswitch.h" 2 7 #include "button.h" 3 8 #include "relais.h" 9 #include "main.h" 10 #include "leds.h" 4 11 5 12 … … 7 14 void MODE_MAINSWITCH_Exec(void) 8 15 { 9 //Prüfen ob eingeschaltet werden muss 10 if (RELAIS_GetState() == 0) 11 { 12 if (BUTTON_GetMode() == BUTTON_MANUAL_ON) 13 { 14 RELAIS_SetPuls(); 15 } 16 else if (BUTTON_GetMode() == BUTTON_AUTO) 17 { 18 RELAIS_SetPuls(); 19 } 16 17 //Prüfe FAULT Eingang 18 int faultInput; 19 static int faultMode = 0; 20 20 21 21 22 23 24 25 if (HAL_GPIO_ReadPin(GPIO_INPUT_FAULT_GPIO_Port, GPIO_INPUT_FAULT_Pin) == GPIO_PIN_RESET) 26 { 27 faultInput = 1; 28 29 if (faultMode == 0) 30 { 31 faultMode = 1; 32 LEDS_RT_Blink_Start(1000, 1000); 33 BUTTON_SetModeOff(); 34 printf("FAULT DETECTED!\n"); 35 } 36 37 if (BUTTON_GetMode() != BUTTON_OFF) 38 { 39 BUTTON_SetModeOff(); 40 } 41 42 if (RELAIS_GetState() == 1) 43 { 44 printf("RESET RELAIS: FAULT DETECTED!\n"); 45 RELAIS_ResetPuls(); 46 47 //Wir wollen nicht, das das Relais automatisch wieder startet, wenn Fault nicht mehr aktiv. Daher schalten wir 48 //Button Mode auf Off 49 50 } 22 51 } 23 52 else 53 { 54 faultInput = 0; 55 } 24 56 25 57 … … 27 59 if (RELAIS_GetState() == 1) 28 60 { 29 if (BUTTON_GetMode() == BUTTON_OFF) 61 if (BUTTON_GetMode() == BUTTON_OFF) 30 62 { 31 63 RELAIS_ResetPuls(); … … 34 66 35 67 36 68 //Prüfen ob eingeschaltet werden kann 69 if ((RELAIS_GetState() == 0) && (faultInput == 0)) 70 { 71 if (BUTTON_GetMode() == BUTTON_MANUAL_ON) 72 { 73 LEDS_RT_Off(); //Falls im LED im Fehlermode, so können wir diese jetzt wieder ausschalten 74 faultMode = 0; 75 RELAIS_SetPuls(); 76 } 77 else if (BUTTON_GetMode() == BUTTON_AUTO) 78 { 79 LEDS_RT_Off(); //Falls im LED im Fehlermode, so können wir diese jetzt wieder ausschalten 80 faultMode=0; 81 RELAIS_SetPuls(); 82 } 83 } 37 84 } -
trunk/firmware/Core/src/mode_secondaryprotection.c
r9 r10 1 //Secondary Protection Modus 2 //Schaltet ab: Wenn LVP und OVP gleichzeitig kommen. --> Kein Auto Reconnect! 3 //Schaltet ab: Wenn Fault kommt --> keine automatisches Reconnect! 4 1 5 #include "mode_secondaryprotection.h" 6 7 8 #include "stdio.h" 9 #include "mode_secondaryprotection.h" 10 #include "button.h" 11 #include "relais.h" 12 #include "main.h" 13 #include "leds.h" 14 15 //Prüfe FAULT Eingang 2 16 3 17 … … 5 19 { 6 20 21 int faultInput = 0; 22 int lvpAndOvpInput = 0; 23 static int faultMode = 0; 24 25 26 //Prüfe Fehler 27 if (HAL_GPIO_ReadPin(GPIO_INPUT_FAULT_GPIO_Port, GPIO_INPUT_FAULT_Pin) == GPIO_PIN_RESET) 28 { 29 faultInput = 1; 30 31 if (faultMode == 0) 32 { 33 faultMode = 1; 34 LEDS_RT_Blink_Start(1000, 1000); 35 printf("FAULT DETECTED!\n"); 36 } 37 38 if (BUTTON_GetMode() != BUTTON_OFF) 39 { 40 BUTTON_SetModeOff(); 41 } 42 43 if (RELAIS_GetState() == 1) 44 { 45 printf("RESET RELAIS: FAULT DETECTED!\n"); 46 RELAIS_ResetPuls(); 47 } 48 } 49 else 50 { 51 faultInput = 0; 52 } 53 54 if ((HAL_GPIO_ReadPin(GPIO_INPUT_LVP_GPIO_Port, GPIO_INPUT_LVP_Pin) == GPIO_PIN_SET) && (HAL_GPIO_ReadPin(GPIO_INPUT_OVP_GPIO_Port, GPIO_INPUT_OVP_Pin) == GPIO_PIN_SET)) 55 { 56 lvpAndOvpInput = 1; 57 58 if (faultMode == 0) 59 { 60 faultMode = 1; 61 LEDS_RT_Blink_Start(500, 1000); 62 printf("FAULT DETECTED!\n"); 63 } 64 65 if (BUTTON_GetMode() != BUTTON_OFF) 66 { 67 BUTTON_SetModeOff(); 68 } 69 70 if (RELAIS_GetState() == 1) 71 { 72 printf("RESET RELAIS: SECONDARY PROTECTION (OVP AND LVP = LOW)!\n"); 73 RELAIS_ResetPuls(); 74 } 75 } 76 else 77 { 78 lvpAndOvpInput = 0; 79 } 80 81 82 83 //Prüfen ob ausgeschaltet werden muss 84 if (RELAIS_GetState() == 1) 85 { 86 if (BUTTON_GetMode() == BUTTON_OFF) 87 { 88 RELAIS_ResetPuls(); 89 } 90 } 91 92 93 //Prüfen ob eingeschaltet werden kann 94 if ((RELAIS_GetState() == 0) && (faultInput == 0) && (lvpAndOvpInput == 0)) 95 { 96 97 if (BUTTON_GetMode() == BUTTON_MANUAL_ON) 98 { 99 LEDS_RT_Off(); //Falls im LED im Fehlermode, so können wir diese jetzt wieder ausschalten 100 faultMode = 0; 101 RELAIS_SetPuls(); 102 103 } 104 else if (BUTTON_GetMode() == BUTTON_AUTO) 105 { 106 LEDS_RT_Off(); //Falls im LED im Fehlermode, so können wir diese jetzt wieder ausschalten 107 faultMode = 0; 108 RELAIS_SetPuls(); 109 } 110 } 7 111 }
Note: See TracChangeset
for help on using the changeset viewer.