Changeset 10 for trunk/firmware/Core/src


Ignore:
Timestamp:
Feb 23, 2025, 1:25:41 PM (5 months ago)
Author:
f.jahn
Message:

LED Modul hinzugefügt

Location:
trunk/firmware/Core/src
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/firmware/Core/src/button.c

    r9 r10  
    33#include "main.h"
    44#include "buzzer.h"
     5#include "leds.h"
    56
    67#define LONG_PRESS_TIME 5000
     
    3132      printf("BUTTON: Auto Mode Manual On\n");
    3233      BUZZER_Alarm_Start(200,1000);
     34      LEDS_GN_On();
    3335      buttonState = BUTTON_MANUAL_ON;
    3436    }
     
    4143      printf("BUTTON: Auto Mode\n");
    4244      BUZZER_Beep(200);
     45      LEDS_GN_Blink_Start(100, 1000);
    4346      buttonState = BUTTON_AUTO;
    4447    }
     
    6467        BUZZER_Alarm_Stop(); //Falls noch im AlarmModus, dann ausschalten
    6568        BUZZER_Beep(200);
     69        LEDS_GN_Off();
    6670        printf("BUTTON: Off Mode\n");
    6771        buttonState = BUTTON_OFF;
     
    8488}
    8589
     90void 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"
    16#include "mode_mainswitch.h"
    27#include "button.h"
    38#include "relais.h"
     9#include "main.h"
     10#include "leds.h"
    411
    512
     
    714void MODE_MAINSWITCH_Exec(void)
    815{
    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;
    2020
    2121
     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    }     
    2251  }
    23 
     52  else
     53  {
     54    faultInput = 0;
     55  }
    2456
    2557
     
    2759  if (RELAIS_GetState() == 1)
    2860  {
    29     if (BUTTON_GetMode() == BUTTON_OFF)
     61    if (BUTTON_GetMode() == BUTTON_OFF)      
    3062    {
    3163      RELAIS_ResetPuls();
     
    3466
    3567
    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  }
    3784}
  • 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
    15#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
    216
    317
     
    519{
    620
     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  }
    7111}
Note: See TracChangeset for help on using the changeset viewer.