first commit
This commit is contained in:
@@ -0,0 +1,252 @@
|
||||
#ifndef SOURCE_MAIN_H_
|
||||
#define SOURCE_MAIN_H_
|
||||
|
||||
#include <String.h>
|
||||
#include "DSP28x_Project.h"
|
||||
#include "DSP2833x_Device.h"
|
||||
#include "State.h"
|
||||
#include "Oper.h"
|
||||
#include "Display.h"
|
||||
#include "Comm.h"
|
||||
|
||||
#define AUX_TEST
|
||||
|
||||
#define true (1U)
|
||||
#define false (0U)
|
||||
|
||||
// Key Input Port (Lo Active)
|
||||
#define GPIO_KEY_UP() (GpioDataRegs.GPBDAT.bit.GPIO39) // LOW Active
|
||||
#define GPIO_KEY_DOWN() (GpioDataRegs.GPADAT.bit.GPIO31) // LOW Active
|
||||
#define GPIO_KEY_ENTER() (GpioDataRegs.GPADAT.bit.GPIO30) // LOW Active
|
||||
#define GPIO_KEY_MENU() (GpioDataRegs.GPADAT.bit.GPIO29) // LOW Active
|
||||
#define GPIO_KEY_POWER() (GpioDataRegs.GPCDAT.bit.GPIO67) // LOW Active
|
||||
#define GPIO_KEY_START() (GpioDataRegs.GPCDAT.bit.GPIO66) // LOW Active
|
||||
#define GPIO_KEY_EMERGENCY() (GpioDataRegs.GPCDAT.bit.GPIO64) // LOW Active
|
||||
#define GPIO_KEY_REMOTE_START() (GpioDataRegs.GPBDAT.bit.GPIO58) // LOW Active
|
||||
#define GPIO_KEY_REMOTE_STOP() (GpioDataRegs.GPBDAT.bit.GPIO57) // LOW Active
|
||||
#define GPIO_KEY_REMOTE_EMERGENCY() (GpioDataRegs.GPBDAT.bit.GPIO56) // LOW Active
|
||||
|
||||
// Read ChipSelect State
|
||||
#define ENGINE_HEATER_OUT() (GpioDataRegs.GPBDAT.bit.GPIO49) // HIGH is Active
|
||||
#define GLOW_PLUG_OUT() (GpioDataRegs.GPADAT.bit.GPIO27) // HIGH is Active
|
||||
#define SOLENOID_OUT() (GpioDataRegs.GPBDAT.bit.GPIO48) // HIGH is Active
|
||||
#define FUEL_PUMP_OUT() (GpioDataRegs.GPADAT.bit.GPIO26) // HIGH is Active
|
||||
#define COOLANT_PUMP_OUT() (GpioDataRegs.GPBDAT.bit.GPIO52) // HIGH is Active
|
||||
#define FAN1_OUT() (GpioDataRegs.GPBDAT.bit.GPIO50) // HIGH is Active
|
||||
#define FAN2_OUT() (GpioDataRegs.GPBDAT.bit.GPIO51) // HIGH is Active
|
||||
|
||||
// Active Read From ECU
|
||||
#define GPIO_ENGINE_HEATER_ACTIVE() (GpioDataRegs.GPADAT.bit.GPIO24) // LOW is Active
|
||||
#define GPIO_GLOW_PLUG_ACTIVE() (GpioDataRegs.GPADAT.bit.GPIO10) // LOW is Active
|
||||
#define GPIO_SOLENOID_ACTIVE() (GpioDataRegs.GPADAT.bit.GPIO11) // LOW is Active
|
||||
#define GPIO_FUEL_PUMP_ACTIVE() (GpioDataRegs.GPADAT.bit.GPIO9) // LOW is Active
|
||||
|
||||
// Fail-Safe Enable(ECU HW Emergency)
|
||||
#define GPIO_FAIL_SAFE_READ() (GpioDataRegs.GPADAT.bit.GPIO25) // LOW is Active
|
||||
|
||||
// Auxiliary Read all
|
||||
#define STATUS_BIT_HEATER (0)
|
||||
#define STATUS_BIT_GLOW (1)
|
||||
#define STATUS_BIT_SOLENOID (2)
|
||||
#define STATUS_BIT_FUEL (3)
|
||||
#define STATUS_BIT_COOLANT (4)
|
||||
#define STATUS_BIT_FAN1 (5)
|
||||
#define STATUS_BIT_FAN2 (6)
|
||||
|
||||
#define GET_ALL_AUX_STATUS() \
|
||||
( \
|
||||
(GpioDataRegs.GPBDAT.bit.GPIO49 << STATUS_BIT_HEATER) | \
|
||||
(GpioDataRegs.GPADAT.bit.GPIO27 << STATUS_BIT_GLOW) | \
|
||||
(GpioDataRegs.GPBDAT.bit.GPIO48 << STATUS_BIT_SOLENOID) | \
|
||||
(GpioDataRegs.GPADAT.bit.GPIO26 << STATUS_BIT_FUEL) | \
|
||||
(GpioDataRegs.GPBDAT.bit.GPIO52 << STATUS_BIT_COOLANT) | \
|
||||
(GpioDataRegs.GPBDAT.bit.GPIO50 << STATUS_BIT_FAN1) | \
|
||||
(GpioDataRegs.GPBDAT.bit.GPIO51 << STATUS_BIT_FAN2) \
|
||||
)
|
||||
|
||||
/* Comment Description
|
||||
* [!] : 변경시 주의
|
||||
* [?] : 결정이 필요
|
||||
* [*] : 주의보다 더 엄중
|
||||
*/
|
||||
|
||||
/* Firmware 버전 (Semantic Versioning) */
|
||||
#define FIRMWARE_VERSION_MAJOR (0) // 하위버전과 호환 되지 않는 변화가 생길 때 증가, 대대적인 변화가 있을 때
|
||||
#define FIRMWARE_VERSION_MINOR (1) // 하위버전과 호환 되면서 새로운 기능이 생길 때 증가, 기존 기능이 변경되거나 사용 방법이 변경 될 때
|
||||
#define FIRMWARE_VERSION_PATCH (9) // 하위버전과 호환 되면서 버그 수정, 기능적으로 변경된것을 알아차리지 못할 정도의 소소한 변경이 있을 때
|
||||
|
||||
/* Version History
|
||||
* [0.0.1] : DCU 프로젝트 생성
|
||||
* [0.0.2] : DCU 펌웨어 탑재 성공
|
||||
* [0.0.3] : OLED XINTF(BUS) 방식 드라이브단 구현
|
||||
* [0.0.4] : OLED 표시 화면 구현
|
||||
* [0.0.5] : CAN-B 확인 및 맵핑
|
||||
* [0.0.6] : 시동 시퀀스 구현 및 정비 화면 수정
|
||||
* [0.1.6] : Suter 보조엔진 시동 완료 시점
|
||||
* [0.1.7] : 발전상태 전환 조건 추가 26-02-23
|
||||
* [0.1.8] : 장치 운용시간 로직 추가(Eeprom 사용), define USE_EEPROM 26-03-16 <삭제>
|
||||
* [0.1.9] : IPS 회로 변경으로 전압센싱 추가 및 고장 알람 비트 추가, CAN-A 채널 송신 데이터 추가 26-03-26
|
||||
*/
|
||||
|
||||
#define MAINTENECE_PASSKEY {0,0,0,0}
|
||||
|
||||
#define ENABLED (1)
|
||||
#define DISABLED (!ENABLED)
|
||||
|
||||
/*
|
||||
* Bit mask
|
||||
*/
|
||||
#define MASK_LOW_NIBBLE (0x0FU)
|
||||
#define MASK_HIGH_NIBBLE (0xF0U)
|
||||
#define MASK_BYTE (0xFFU)
|
||||
#define MASK_WORD (0xFFFFU)
|
||||
#define MASK_6BIT (0x3FU)
|
||||
#define MASK_26BIT (0x3FFFFFFUL)
|
||||
|
||||
/*
|
||||
Timer Clock Per 100us
|
||||
*/
|
||||
#define SYSTEM_10MIN_TIME (6000000UL)
|
||||
#define TIME_01MS (10UL)
|
||||
#define TIME_10MS (100UL)
|
||||
#define TIME_20MS (200UL)
|
||||
#define TIME_50MS (500UL)
|
||||
#define TIME_100MS (1000UL)
|
||||
#define TIME_500MS (5000UL)
|
||||
#define TIME_1SEC (10000UL)
|
||||
#define TIME_5SEC (50000UL)
|
||||
#define TIME_10SEC (100000UL)
|
||||
#define TIME_60SEC (600000UL)
|
||||
|
||||
// 전압/전류센서 AdcRefValue 기준값 전압:2300, 전류:2250
|
||||
#define SENSOR_LOW_LIMIT (2000) // 단선
|
||||
#define SENSOR_HIGH_LIMIT (4000) // 단락
|
||||
|
||||
#define TIME_OVER (1U)
|
||||
|
||||
enum
|
||||
{
|
||||
TIMER_01MS = 0U,
|
||||
TIMER_10MS,
|
||||
TIMER_20MS,
|
||||
TIMER_50MS,
|
||||
TIMER_100MS,
|
||||
TIMER_500MS,
|
||||
TIMER_1SEC,
|
||||
TIMER_MAX
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
SOFTTIMER_TIME_OVER = 0U,
|
||||
SOFTTIMER_RUNNING,
|
||||
SOFTTIMER_PAUSE,
|
||||
SOFTTIMER_DONT_EXIST
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
SOFTTIMER_WAIT_INIT = 0U,
|
||||
SOFTTIMER_WAIT_ALARM_RESET,
|
||||
SOFTTIMER_WAIT_ENG_COOLDOWN,
|
||||
SOFTTIMER_WAIT_PREHEAT,
|
||||
SOFTTIMER_WAIT_CRANKING,
|
||||
SOFTTIMER_WAIT_RETRY_CRANKING,
|
||||
SOFTTIMER_WAIT_OPERATION,
|
||||
SOFTTIMER_WAIT_SHUTDOWN,
|
||||
SOFTTIMER_WAIT_AFTER_COOLDOWN,
|
||||
SOFTTIMER_WAIT_MAX
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IDX_CS_ENG_HEATER = 0,
|
||||
IDX_CS_GLOW_PLUG,
|
||||
IDX_CS_SOLENOID,
|
||||
IDX_CS_FUEL_PUMP,
|
||||
IDX_CS_COOLANT_PUMP,
|
||||
IDX_CS_FAN1,
|
||||
IDX_CS_FAN2,
|
||||
IDX_CS_MAX
|
||||
} E_AUX_CS_IDX;
|
||||
|
||||
typedef struct ClassSoftTimer
|
||||
{
|
||||
Uint32 ulSetValue;
|
||||
Uint32 ulDecreaseValue;
|
||||
int16 iTimer;
|
||||
int16 iStart;
|
||||
} CSoftTimer;
|
||||
|
||||
typedef struct ClassWaitTimer
|
||||
{
|
||||
Uint32 ulCountSoftClock;
|
||||
Uint16 uiSoftCountTarget;
|
||||
} CWaitTimer;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IDX_SENSOR_ENGINE_HEATER = 0U, // 0
|
||||
IDX_SENSOR_GLOW_PLUG, // 1
|
||||
IDX_SENSOR_SOLENOID, // 2
|
||||
IDX_SENSOR_FUEL_PUMP, // 3
|
||||
IDX_SENSOR_COOLANT_PUMP, // 4
|
||||
IDX_SENSOR_FAN1, // 5
|
||||
IDX_SENSOR_FAN2, // 6
|
||||
IDX_SENSOR_MAX // 7
|
||||
} E_IDX_SENSOR;
|
||||
|
||||
typedef struct ClassGeneralOperValue
|
||||
{
|
||||
Uint16 uiFaultOccured;
|
||||
Uint16 uiDynamicRPM;
|
||||
Uint16 uiPassword[4];
|
||||
Uint16 uiSelfTestCheck;
|
||||
Uint16 uiSelfTestPass;
|
||||
Uint16 uiEmergency;
|
||||
Uint16 uiApuStart;
|
||||
Uint16 uiApuState;
|
||||
Uint16 uiAlarmReset;
|
||||
Uint16 uiMaintenance;
|
||||
Uint16 uiRetryCrankingCount;
|
||||
Uint16 uiWriteEepromDataStart;
|
||||
Uint32 ulTotalOperationHour;
|
||||
struct
|
||||
{
|
||||
Uint16 PlayCmd;
|
||||
} GcuCommand;
|
||||
struct
|
||||
{
|
||||
Uint16 EngineStart;
|
||||
Uint16 EngineStop;
|
||||
Uint16 RpmSetPoint;
|
||||
Uint16 ActiveOverride;
|
||||
Uint16 EmergencyStop;
|
||||
} EcuCommand;
|
||||
struct
|
||||
{
|
||||
Uint16 CarComputer;
|
||||
Uint16 Gcu;
|
||||
Uint16 Ecu;
|
||||
} Conection;
|
||||
struct
|
||||
{
|
||||
Uint16 ManualCranking;
|
||||
Uint16 LampTest;
|
||||
Uint16 KeyTest;
|
||||
} Maintenance;
|
||||
} CGeneralOperValue;
|
||||
|
||||
extern CGeneralOperValue GeneralOperValue;
|
||||
extern Uint16 PowerOnCheckSensor[IDX_SENSOR_MAX];
|
||||
|
||||
Uint16 CSoftWaitCountProcedure(Uint16 uiIndex, Uint32 ulWaitTime);
|
||||
void COffChipSelect(void);
|
||||
void CSoftWaitCountClear(Uint16 Index);
|
||||
Uint32 CGetSoftClock(void);
|
||||
void CUpdateFault(Uint32 *pData, Uint16 uiIdx, Uint16 uiCond);
|
||||
void DELAY_USEC(Uint32 ulMicroSeconds);
|
||||
Uint16 CIsBitSet(Uint32 ulData, Uint16 uiIdx);
|
||||
void CSetAuxCtrlPin(E_AUX_CS_IDX eIdx, Uint16 uiState);
|
||||
|
||||
#endif /* SOURCE_MAIN_H_ */
|
||||
Reference in New Issue
Block a user