Add Autobox monitoring Watchdog
This commit is contained in:
parent
36e57e5671
commit
20b613b661
File diff suppressed because one or more lines are too long
|
@ -13,6 +13,7 @@
|
|||
#include "Current_Monitoring.h"
|
||||
|
||||
|
||||
#define RX_STATUS_HEARTBEAT 0xC7
|
||||
#define RX_STATUS_MSG_ID 0xC8 // new addresses will be given ( 0x C8 , 0xC9 usw)
|
||||
#define TX_STATUS_MSG_ID 0xC9
|
||||
#define CUR_CHANNELS_1_ID 0xCA
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
/*#define HAL_CRYP_MODULE_ENABLED */
|
||||
/*#define HAL_DAC_MODULE_ENABLED */
|
||||
/*#define HAL_I2S_MODULE_ENABLED */
|
||||
/*#define HAL_IWDG_MODULE_ENABLED */
|
||||
#define HAL_IWDG_MODULE_ENABLED
|
||||
/*#define HAL_LCD_MODULE_ENABLED */
|
||||
/*#define HAL_LPTIM_MODULE_ENABLED */
|
||||
/*#define HAL_RNG_MODULE_ENABLED */
|
||||
|
|
|
@ -13,6 +13,9 @@ volatile uint8_t canmsg_received = 0;
|
|||
extern PortExtenderGPIO EN_Ports;
|
||||
extern CurrentMeasurements current_measurements_adc_val;
|
||||
|
||||
extern int inhibit_SDC;
|
||||
extern IWDG_HandleTypeDef hiwdg;
|
||||
|
||||
void can_init(CAN_HandleTypeDef* hcan) {
|
||||
ftcan_init(hcan);
|
||||
ftcan_add_filter(0x00, 0x00); // No Filter
|
||||
|
@ -107,4 +110,7 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t* data) {
|
|||
rxstate.cooling_pump = data[5];
|
||||
rxstate.checksum = data[6];
|
||||
}
|
||||
|
||||
if (id == RX_STATUS_HEARTBEAT)
|
||||
HAL_IWDG_Refresh(&hiwdg);
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ uint8_t timer2_running = 0;
|
|||
TIM_HandleTypeDef* pwmtimer3;
|
||||
TIM_HandleTypeDef* pwmtimer2;
|
||||
|
||||
extern int inhibit_SDC;
|
||||
|
||||
void ChannelControl_init(I2C_HandleTypeDef* hi2c, TIM_HandleTypeDef* timer3,
|
||||
TIM_HandleTypeDef* timer2) {
|
||||
|
||||
|
@ -36,6 +38,8 @@ void ChannelControl_init(I2C_HandleTypeDef* hi2c, TIM_HandleTypeDef* timer3,
|
|||
void ChannelControl_UpdateGPIOs(PortExtenderGPIO UpdatePorts) { // ctrl + left click auf portextender
|
||||
EN_Ports = UpdatePorts;
|
||||
UpdatePorts.porta.alwayson = 1; // Always on stays always on
|
||||
if (inhibit_SDC)
|
||||
UpdatePorts.porta.en8 = 0;
|
||||
PCA9535_setGPIOPortOutput(PC9535_PORTA, UpdatePorts.porta.porta);
|
||||
PCA9535_setGPIOPortOutput(PC9535_PORTB, UpdatePorts.portb.portb);
|
||||
}
|
||||
|
|
|
@ -51,6 +51,8 @@ CAN_HandleTypeDef hcan;
|
|||
|
||||
I2C_HandleTypeDef hi2c1;
|
||||
|
||||
IWDG_HandleTypeDef hiwdg;
|
||||
|
||||
TIM_HandleTypeDef htim2;
|
||||
TIM_HandleTypeDef htim3;
|
||||
TIM_HandleTypeDef htim6;
|
||||
|
@ -73,6 +75,7 @@ static void MX_TIM3_Init(void);
|
|||
static void MX_I2C1_Init(void);
|
||||
static void MX_USART1_UART_Init(void);
|
||||
static void MX_TIM6_Init(void);
|
||||
static void MX_IWDG_Init(void);
|
||||
/* USER CODE BEGIN PFP */
|
||||
|
||||
/* USER CODE END PFP */
|
||||
|
@ -84,6 +87,8 @@ uint16_t adc2_buffer[7]; // data type specific to 16 bit integer with no sign (
|
|||
|
||||
extern rx_status_frame rxstate;
|
||||
extern volatile uint8_t canmsg_received;
|
||||
|
||||
int inhibit_SDC;
|
||||
/* USER CODE END 0 */
|
||||
|
||||
/**
|
||||
|
@ -95,6 +100,9 @@ int main(void)
|
|||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
// Freeze WDG when debugging
|
||||
__HAL_DBGMCU_FREEZE_IWDG();
|
||||
|
||||
/* USER CODE END 1 */
|
||||
|
||||
/* MCU Configuration--------------------------------------------------------*/
|
||||
|
@ -124,7 +132,9 @@ int main(void)
|
|||
MX_I2C1_Init();
|
||||
MX_USART1_UART_Init();
|
||||
MX_TIM6_Init();
|
||||
//MX_IWDG_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
// REMINDER: Comment out the IWDG Init above!!!
|
||||
|
||||
HAL_GPIO_WritePin(STATUS_LED1_GPIO_Port , STATUS_LED1_Pin , GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(GSS_GPIO_GPIO_Port, GSS_GPIO_Pin, GPIO_PIN_SET);
|
||||
|
@ -138,7 +148,19 @@ int main(void)
|
|||
uint32_t lasttick = HAL_GetTick(); // gibt dir zuruck die milisekunden seit start. ( es fangt an und dann milisekunden + 1 usw....)
|
||||
HAL_TIM_Base_Start(&htim2);
|
||||
HAL_TIM_Base_Start(&htim3);
|
||||
// ChannelControl_UpdatePWMs(20 , 0 , 50 ); ( testing code )
|
||||
|
||||
// Prevent closing of SDC (esp. after WDG reset)
|
||||
inhibit_SDC = 1;
|
||||
|
||||
// Wait 1s to prevent bus error state while ABX is starting up
|
||||
// Wait 5s for the discharge of the DC link (so AMS can't restart)
|
||||
HAL_Delay(5000);
|
||||
|
||||
// SDC can now be closed
|
||||
inhibit_SDC = 0;
|
||||
// PDU will reset if it doesn't receive a heartbeat every 120ms
|
||||
MX_IWDG_Init();
|
||||
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Infinite loop */
|
||||
|
@ -182,10 +204,11 @@ void SystemClock_Config(void)
|
|||
/** Initializes the RCC Oscillators according to the specified parameters
|
||||
* in the RCC_OscInitTypeDef structure.
|
||||
*/
|
||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE;
|
||||
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
||||
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
|
||||
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
|
||||
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
|
||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
||||
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL4;
|
||||
|
@ -430,6 +453,35 @@ static void MX_I2C1_Init(void)
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief IWDG Initialization Function
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void MX_IWDG_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN IWDG_Init 0 */
|
||||
|
||||
/* USER CODE END IWDG_Init 0 */
|
||||
|
||||
/* USER CODE BEGIN IWDG_Init 1 */
|
||||
|
||||
/* USER CODE END IWDG_Init 1 */
|
||||
hiwdg.Instance = IWDG;
|
||||
hiwdg.Init.Prescaler = IWDG_PRESCALER_4;
|
||||
hiwdg.Init.Window = 1000;
|
||||
hiwdg.Init.Reload = 1000;
|
||||
if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN IWDG_Init 2 */
|
||||
|
||||
/* USER CODE END IWDG_Init 2 */
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TIM2 Initialization Function
|
||||
* @param None
|
||||
|
|
|
@ -56,22 +56,27 @@ File.Version=6
|
|||
GPIO.groupedBy=Group By Peripherals
|
||||
I2C1.IPParameters=Timing
|
||||
I2C1.Timing=0x00303D5B
|
||||
IWDG.IPParameters=Prescaler,Window,Reload
|
||||
IWDG.Prescaler=IWDG_PRESCALER_4
|
||||
IWDG.Reload=1000
|
||||
IWDG.Window=1000
|
||||
KeepUserPlacement=false
|
||||
Mcu.CPN=STM32F302RBT6
|
||||
Mcu.Family=STM32F3
|
||||
Mcu.IP0=ADC1
|
||||
Mcu.IP1=ADC2
|
||||
Mcu.IP10=TIM6
|
||||
Mcu.IP11=USART1
|
||||
Mcu.IP10=TIM3
|
||||
Mcu.IP11=TIM6
|
||||
Mcu.IP12=USART1
|
||||
Mcu.IP2=CAN
|
||||
Mcu.IP3=DMA
|
||||
Mcu.IP4=I2C1
|
||||
Mcu.IP5=NVIC
|
||||
Mcu.IP6=RCC
|
||||
Mcu.IP7=SYS
|
||||
Mcu.IP8=TIM2
|
||||
Mcu.IP9=TIM3
|
||||
Mcu.IPNb=12
|
||||
Mcu.IP5=IWDG
|
||||
Mcu.IP6=NVIC
|
||||
Mcu.IP7=RCC
|
||||
Mcu.IP8=SYS
|
||||
Mcu.IP9=TIM2
|
||||
Mcu.IPNb=13
|
||||
Mcu.Name=STM32F302R(B-C)Tx
|
||||
Mcu.Package=LQFP64
|
||||
Mcu.Pin0=PF0-OSC_IN
|
||||
|
@ -105,15 +110,16 @@ Mcu.Pin33=PB3
|
|||
Mcu.Pin34=PB4
|
||||
Mcu.Pin35=PB7
|
||||
Mcu.Pin36=PB9
|
||||
Mcu.Pin37=VP_SYS_VS_Systick
|
||||
Mcu.Pin38=VP_TIM6_VS_ClockSourceINT
|
||||
Mcu.Pin37=VP_IWDG_VS_IWDG
|
||||
Mcu.Pin38=VP_SYS_VS_Systick
|
||||
Mcu.Pin39=VP_TIM6_VS_ClockSourceINT
|
||||
Mcu.Pin4=PC2
|
||||
Mcu.Pin5=PC3
|
||||
Mcu.Pin6=PA0
|
||||
Mcu.Pin7=PA1
|
||||
Mcu.Pin8=PA2
|
||||
Mcu.Pin9=PA3
|
||||
Mcu.PinsNb=39
|
||||
Mcu.PinsNb=40
|
||||
Mcu.ThirdPartyNb=0
|
||||
Mcu.UserConstants=
|
||||
Mcu.UserName=STM32F302RBTx
|
||||
|
@ -378,6 +384,8 @@ TIM6.Prescaler=400
|
|||
TIM6.TIM_MasterOutputTrigger=TIM_TRGO_UPDATE
|
||||
USART1.IPParameters=VirtualMode-Multiprocessor_communication
|
||||
USART1.VirtualMode-Multiprocessor_communication=VM_ASYNC
|
||||
VP_IWDG_VS_IWDG.Mode=IWDG_Activate
|
||||
VP_IWDG_VS_IWDG.Signal=IWDG_VS_IWDG
|
||||
VP_SYS_VS_Systick.Mode=SysTick
|
||||
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
|
||||
VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer
|
||||
|
|
|
@ -59,6 +59,7 @@ Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c \
|
|||
Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_gpio.c \
|
||||
Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c \
|
||||
Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c_ex.c \
|
||||
Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_iwdg.c \
|
||||
Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_pwr.c \
|
||||
Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_pwr_ex.c \
|
||||
Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_rcc.c \
|
||||
|
|
Loading…
Reference in New Issue