Ignore:
Timestamp:
Nov 1, 2025, 5:29:27 PM (45 hours ago)
Author:
f.jahn
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/fw_g473rct/Core/Src/main.c

    r35 r38  
    2424#include "fdcan.h"
    2525#include "i2c.h"
     26#include "iwdg.h"
    2627#include "rtc.h"
    2728#include "spi.h"
     
    6263/* Private define ------------------------------------------------------------*/
    6364/* USER CODE BEGIN PD */
    64 
     65#define MAX_OVERCURRENT_RETRYS  3
    6566/* USER CODE END PD */
    6667
     
    157158  MX_CRC_Init();
    158159  MX_RTC_Init();
     160  MX_IWDG_Init();
    159161  /* USER CODE BEGIN 2 */
    160162  printf("Test debug io\r\n");
     
    165167
    166168  startType_t startType = EEPROM_isFirstStart();
    167 
     169 
    168170  switch(startType)
    169171  {
     
    173175          case FIRST_START_ERROR:                                               EEPROM_fullRestore(&sys_data);            break;
    174176  }
     177  HAL_IWDG_Refresh(&hiwdg);
    175178
    176179  if(HAL_GPIO_ReadPin(GPIO_INPUT_BTN_MODE_GPIO_Port, GPIO_INPUT_BTN_MODE_Pin) == GPIO_PIN_RESET)
     
    183186    }
    184187  }
    185 
     188  HAL_IWDG_Refresh(&hiwdg);
    186189  LoadBackupRegister();
    187190
     
    189192    // Modbus Initialisierung
    190193  mbInit(&modbusData, sys_data.s.parameter.baudrate, sys_data.s.parameter.parityMode, sys_data.s.parameter.stopBit, &huart2);
    191 
     194  HAL_IWDG_Refresh(&hiwdg);
    192195    // STM32G0 Chiptemperatur Kalibrierung
    193196  CHIP_TEMPERATURE_Calibration();
     
    198201  HAL_ADCEx_Calibration_Start(&hadc4, ADC_DIFFERENTIAL_ENDED);
    199202  HAL_ADCEx_Calibration_Start(&hadc5, ADC_SINGLE_ENDED);
    200 
     203  HAL_IWDG_Refresh(&hiwdg);
    201204
    202205  //SET_BIT(hadc2.Instance->CFGR, ADC_CFGR_DMAEN); //Enable DMA transfer for ADC slave (ADC12_CCR.MDMA = 0b00 -> MDMA mode disabled)
     
    232235
    233236  // ADS1260 Initialierung
     237  HAL_IWDG_Refresh(&hiwdg);
    234238  ADS1260_init();
     239  HAL_IWDG_Refresh(&hiwdg);
    235240  printf("ADS1260 Init\n");
    236241  OUTPUTS_Init();
     
    241246    HAL_GPIO_WritePin(LED_ERROR_GPIO_Port, LED_ERROR_Pin, GPIO_PIN_SET);
    242247    HAL_Delay(350);
     248        HAL_IWDG_Refresh(&hiwdg);
    243249    HAL_GPIO_WritePin(LED_ERROR_GPIO_Port, LED_ERROR_Pin, GPIO_PIN_RESET);
    244250    HAL_Delay(350);
     251        HAL_IWDG_Refresh(&hiwdg);
    245252  }
    246253
     
    255262
    256263    /* USER CODE BEGIN 3 */
    257 if (newADC12Data == 1)
     264        HAL_IWDG_Refresh(&hiwdg);
     265        if (newADC12Data == 1)
    258266    {
    259267          //Mit ADC_DIV2,Sample time 12,5Cycklen, ADC Clock 50Mhz, Oversampling 256
     
    306314    }
    307315
    308          // Zeitbasis ms Systick;
     316       
     317       
     318        // Zeitbasis ms Systick;
    309319    newTime = HAL_GetTick();
    310     timeDiff = newTime - oldTime;
    311     oldTime = newTime;
    312 
    313     if ((mode_button_disable_time > 0) && (timeDiff > 0))
    314     {
    315       mode_button_disable_time--;
    316     }
    317 
    318     // Zeitbasis Sekunde ber RTC
     320   
     321        if (newTime != oldTime) {
     322         
     323          oldTime = newTime;
     324     
     325          if (mode_button_disable_time > 0)
     326      {
     327        mode_button_disable_time--;
     328      }
     329
     330        }
     331   
     332
     333        if (sys_data.s.values.overcurrentRetryCounter > MAX_OVERCURRENT_RETRYS)
     334        {
     335          printf("SHORT_CIRCUIT_PROTECTION\n");
     336          sys_data.s.values.lvpState = OUTPUTS_LVP_SHORT_PROTECTION;
     337          HAL_GPIO_WritePin(DISCHARGE_ENABLE_GPIO_Port, DISCHARGE_ENABLE_Pin, OUTPUTS_DISCHARGE_NOT_ALLOWED);
     338
     339          sys_data.s.values.lvpState = OUTPUTS_OVP_SHORT_PROTECTION;
     340          HAL_GPIO_WritePin(CHARGE_ENABLE_GPIO_Port, CHARGE_ENABLE_Pin, OUTPUTS_CHARGE_NOT_ALLOWED);
     341
     342
     343
     344        }
     345
     346    // Zeitbasis Sekunde über RTC
    319347    // muss immer sowohl das Zeit- als auch das Datumsregister lesen
    320348    // da beide Shadowregister sind sonst wird die Zeit nicht mehr geupdatet
     
    375403          case COMMAND_RESTORE_LAST_SAVED_VALUES:             EEPROM_readConfig(&sys_data);                                                                                               break;
    376404          case COMMAND_STORE_WITH_SERIAL_NUMBER:              EEPROM_storeConfig(&sys_data,1);                                                                                    break;        // Seriennummer schreiben
    377           case COMMAND_RESTART:                               NVIC_SystemReset();                                                                                                                 break;
     405          case COMMAND_RESTART:                               while(1);                                                                                                                                   break;
    378406          case COMMAND_BATTERY_CURRENT_OFFSET_CAL:           
    379407                                ADS_1260_BatteryCurrentOffsetCalibrationStart(&sys_data);
     
    465493  * in the RCC_OscInitTypeDef structure.
    466494  */
    467   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSE
    468                               |RCC_OSCILLATORTYPE_LSE;
     495  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_LSI
     496                              |RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
    469497  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    470498  RCC_OscInitStruct.LSEState = RCC_LSE_ON;
     499  RCC_OscInitStruct.LSIState = RCC_LSI_ON;
    471500  RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
    472501  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
     
    768797  return  result;
    769798}
     799
     800
    770801/* USER CODE END 4 */
    771802
Note: See TracChangeset for help on using the changeset viewer.