Files
Cognitive_Agent/firmware/t2g/Seat_Controller_demo/App/main_cm0plus.c
T

87 lines
2.3 KiB
C
Executable File

/***************************************************************************//**
* \file main_cm0plus.c
*
* CYT4BFBCJE rev_d CM0+ entry point for the four-motor seat movement ECU.
*******************************************************************************/
#include "cy_project.h"
#include "cy_device_headers.h"
#include "motor_control.h"
#include "safety_manager.h"
#include "seat_move_application.h"
#include "seat_move_config.h"
#include "bsp_seat_backrest_heater.h"
#include "bsp_seat_fan.h"
#include "seat_controller_thermal.h"
volatile uint32_t g_seatMoveResetReason = 0u;
volatile uint32_t g_seatMoveInitResult = MOTOR_API_FAILURE;
static void SeatMove_HoldSafeOff(void)
{
for(;;)
{
Motor_ForceSafeOff();
SeatControllerThermal_ForceSafeOff();
SafetyManager_KickWatchdog();
Cy_SysTick_DelayInUs(SEAT_MOVE_TASK_PERIOD_US);
}
}
int main(void)
{
(void)BspSeatBackrestHeater_ForceOff();
(void)BspSeatFan_ForceOff();
SystemInit();
/* DRVOFF is asserted and IN1..IN4 are GPIO-low before any motor clock,
* SPI transaction or CAN command can enable a bridge. */
Motor_ForceSafeOff();
if(!BspSeatBackrestHeater_ForceOff() || !BspSeatFan_ForceOff())
{
SeatMove_HoldSafeOff();
}
g_seatMoveResetReason = Cy_SysReset_GetResetReason();
Cy_SysReset_ClearAllResetReasons();
SafetyManager_Init(g_seatMoveResetReason);
if(SafetyManager_IsInhibited())
{
SeatMove_HoldSafeOff();
}
__enable_irq();
g_seatMoveInitResult = Motor_Init();
if(g_seatMoveInitResult != MOTOR_API_SUCCESS)
{
SafetyManager_LatchFault(SAFETY_FAULT_DRIVER);
SeatMove_HoldSafeOff();
}
Motor_SetWatchdogServiceEnabled(true);
if(!SeatControllerThermal_Init())
{
SafetyManager_LatchFault(SAFETY_FAULT_DRIVER);
SeatMove_HoldSafeOff();
}
if(!SeatMoveApplication_Init())
{
SeatMove_HoldSafeOff();
}
for(;;)
{
SeatMoveApplication_Service();
SeatControllerThermal_Service1ms();
if(SafetyManager_IsInhibited())
{
Motor_ForceSafeOff();
SeatControllerThermal_ForceSafeOff();
}
SafetyManager_KickWatchdog();
Cy_SysTick_DelayInUs(SEAT_MOVE_TASK_PERIOD_US);
}
}
/* [] END OF FILE */