first commit
This commit is contained in:
@@ -0,0 +1,220 @@
|
||||
#ifndef SOURCE_MAIN_H_
|
||||
#define SOURCE_MAIN_H_
|
||||
|
||||
typedef signed char int8;
|
||||
typedef unsigned char Uint8;
|
||||
|
||||
#include <string.h>
|
||||
#include "DSP28x_Project.h"
|
||||
#include "DSP2833x_Device.h"
|
||||
#include "DSP2833x_EPwm_defines.h"
|
||||
#include "DSP2833x_I2c_defines.h"
|
||||
#include "State.h"
|
||||
#include "Oper.h"
|
||||
#include "Display.h"
|
||||
#include "Comm.h"
|
||||
|
||||
// Key Input Port (Lo Active)
|
||||
#define GPIO_KEY_UP() (!GpioDataRegs.GPBDAT.bit.GPIO39)
|
||||
#define GPIO_KEY_DOWN() (!GpioDataRegs.GPADAT.bit.GPIO31)
|
||||
#define GPIO_KEY_ENTER() (!GpioDataRegs.GPADAT.bit.GPIO30)
|
||||
#define GPIO_KEY_MENU() (!GpioDataRegs.GPADAT.bit.GPIO29)
|
||||
#define GPIO_KEY_POWER() (!GpioDataRegs.GPCDAT.bit.GPIO67)
|
||||
#define GPIO_KEY_START() (!GpioDataRegs.GPCDAT.bit.GPIO66)
|
||||
#define GPIO_KEY_EMERGENCY() (!GpioDataRegs.GPCDAT.bit.GPIO64)
|
||||
|
||||
// 전류센서 CS가 활성되었을 때 FUSE 핀이 high면 그 쪽 라인은 문제 발생된 것임(ips 칩 또는 fuse)
|
||||
#define GPIO_ENGINE_HEATER_FUSE() (GpioDataRegs.GPADAT.bit.GPIO6)
|
||||
#define GPIO_GLOW_PLUG_FUSE() (GpioDataRegs.GPADAT.bit.GPIO5)
|
||||
#define GPIO_SOLENOID_FUSE() (GpioDataRegs.GPADAT.bit.GPIO7)
|
||||
#define GPIO_FUEL_PUMP_FUSE() (GpioDataRegs.GPADAT.bit.GPIO2)
|
||||
#define GPIO_COOLANT_PUMP_FUSE() (GpioDataRegs.GPADAT.bit.GPIO1)
|
||||
#define GPIO_FAN1_FUSE() (GpioDataRegs.GPADAT.bit.GPIO3)
|
||||
#define GPIO_FAN2_FUSE() (GpioDataRegs.GPADAT.bit.GPIO4)
|
||||
|
||||
#define GPIO_ECU_ON_OFF() (GpioDataRegs.GPADAT.bit.GPIO8)
|
||||
#define GPIO_FUEL_PUMP() (GpioDataRegs.GPADAT.bit.GPIO9)
|
||||
#define GPIO_GLOW_PLUG() (GpioDataRegs.GPADAT.bit.GPIO10)
|
||||
#define GPIO_SOLENOID() (GpioDataRegs.GPADAT.bit.GPIO11)
|
||||
#define GPIO_ENGINE_HEATER() (GpioDataRegs.GPADAT.bit.GPIO24)
|
||||
#define GPIO_USER_MODE_1() (!GpioDataRegs.GPCDAT.bit.GPIO81)
|
||||
#define GPIO_USER_MODE_2() (!GpioDataRegs.GPCDAT.bit.GPIO82)
|
||||
#define GPIO_USER_MODE_3() (!GpioDataRegs.GPCDAT.bit.GPIO83)
|
||||
|
||||
#define GPIO_ENGINE_HEATER_CS_READ() (GpioDataRegs.GPBDAT.bit.GPIO49)
|
||||
#define GPIO_GLOW_PLUG_CS_READ() (GpioDataRegs.GPADAT.bit.GPIO27)
|
||||
#define GPIO_SOLENOID_CS_READ() (GpioDataRegs.GPBDAT.bit.GPIO48)
|
||||
#define GPIO_FUEL_PUMP_CS_READ() (GpioDataRegs.GPADAT.bit.GPIO26)
|
||||
#define GPIO_COOLANT_PUMP_CS_READ() (GpioDataRegs.GPBDAT.bit.GPIO52)
|
||||
#define GPIO_FAN1_CS_READ() (GpioDataRegs.GPBDAT.bit.GPIO50)
|
||||
#define GPIO_FAN2_CS_READ() (GpioDataRegs.GPBDAT.bit.GPIO51)
|
||||
|
||||
// ChipSelect Port
|
||||
#define GPIO_ENGINE_HEATER_CS(x) ((x) ? (GpioDataRegs.GPBSET.bit.GPIO49 = 1) : (GpioDataRegs.GPBCLEAR.bit.GPIO49 = 1));
|
||||
#define GPIO_GLOW_PLUG_CS(x) ((x) ? (GpioDataRegs.GPASET.bit.GPIO27 = 1) : (GpioDataRegs.GPACLEAR.bit.GPIO27 = 1));
|
||||
#define GPIO_SOLENOID_CS(x) ((x) ? (GpioDataRegs.GPBSET.bit.GPIO48 = 1) : (GpioDataRegs.GPBCLEAR.bit.GPIO48 = 1));
|
||||
#define GPIO_FUEL_PUMP_CS(x) ((x) ? (GpioDataRegs.GPASET.bit.GPIO26 = 1) : (GpioDataRegs.GPACLEAR.bit.GPIO26 = 1));
|
||||
#define GPIO_COOLANT_PUMP_CS(x) ((x) ? (GpioDataRegs.GPBSET.bit.GPIO52 = 1) : (GpioDataRegs.GPBCLEAR.bit.GPIO52 = 1));
|
||||
#define GPIO_FAN1_CS(x) ((x) ? (GpioDataRegs.GPBSET.bit.GPIO50 = 1) : (GpioDataRegs.GPBCLEAR.bit.GPIO50 = 1));
|
||||
#define GPIO_FAN2_CS(x) ((x) ? (GpioDataRegs.GPBSET.bit.GPIO51 = 1) : (GpioDataRegs.GPBCLEAR.bit.GPIO51 = 1));
|
||||
|
||||
// Pannel LED Port
|
||||
#define GPIO_CPU_LED_STOP(x) ((x) ? (GpioDataRegs.GPASET.bit.GPIO12 = 1) : (GpioDataRegs.GPACLEAR.bit.GPIO12 = 1));
|
||||
#define GPIO_CPU_LED_FAULT(x) ((x) ? (GpioDataRegs.GPASET.bit.GPIO14 = 1) : (GpioDataRegs.GPACLEAR.bit.GPIO14 = 1));
|
||||
#define GPIO_CPU_LED_OPERATION(x) ((x) ? (GpioDataRegs.GPASET.bit.GPIO13 = 1) : (GpioDataRegs.GPACLEAR.bit.GPIO13 = 1));
|
||||
|
||||
#define GPIO_OLED_RESET(x) ((x) ? (GpioDataRegs.GPBSET.bit.GPIO37 = 1) : (GpioDataRegs.GPBCLEAR.bit.GPIO37 = 1));
|
||||
|
||||
#define GPIO_FAULT_CMD(x) ((x) ? (GpioDataRegs.GPBSET.bit.GPIO55 = 1) : (GpioDataRegs.GPBCLEAR.bit.GPIO55 = 1));
|
||||
#define GPIO_EMERGENCY_CMD(x) ((x) ? (GpioDataRegs.GPBSET.bit.GPIO56 = 1) : (GpioDataRegs.GPBCLEAR.bit.GPIO56 = 1));
|
||||
#define GPIO_STOP_CMD(x) ((x) ? (GpioDataRegs.GPBSET.bit.GPIO57 = 1) : (GpioDataRegs.GPBCLEAR.bit.GPIO57 = 1));
|
||||
#define GPIO_START_CMD(x) ((x) ? (GpioDataRegs.GPBSET.bit.GPIO58 = 1) : (GpioDataRegs.GPBCLEAR.bit.GPIO58 = 1));
|
||||
|
||||
#define GPIO_POWER_HOLD(x) ((x) ? (GpioDataRegs.GPCSET.bit.GPIO65 = 1) : (GpioDataRegs.GPCCLEAR.bit.GPIO65 = 1));
|
||||
#define GPIO_CPU_LED_COM_FAULT_N(x) ((x) ? (GpioDataRegs.GPCSET.bit.GPIO68 = 1) : (GpioDataRegs.GPCCLEAR.bit.GPIO68 = 1));
|
||||
#define GPIO_CPU_LED_COM_RUN_N(x) ((x) ? (GpioDataRegs.GPCSET.bit.GPIO69 = 1) : (GpioDataRegs.GPCCLEAR.bit.GPIO69 = 1));
|
||||
#define GPIO_CPU_LED_COM_STA_N(x) ((x) ? (GpioDataRegs.GPCSET.bit.GPIO70 = 1) : (GpioDataRegs.GPCCLEAR.bit.GPIO70 = 1));
|
||||
|
||||
/* Comment Description
|
||||
* [!] : 변경시 주의
|
||||
* [?] : 결정이 필요
|
||||
* [*] : 주의보다 더 엄중
|
||||
*/
|
||||
|
||||
/* Firmware 버전 (Semantic Versioning) */
|
||||
#define FIRMWARE_VERSION_MAJOR (0) // 하위버전과 호환 되지 않는 변화가 생길 때 증가, 대대적인 변화가 있을 때
|
||||
#define FIRMWARE_VERSION_MINOR (0) // 하위버전과 호환 되면서 새로운 기능이 생길 때 증가, 기존 기능이 변경되거나 사용 방법이 변경 될 때
|
||||
#define FIRMWARE_VERSION_PATCH (5) // 하위버전과 호환 되면서 버그 수정, 기능적으로 변경된것을 알아차리지 못할 정도의 소소한 변경이 있을 때
|
||||
|
||||
/* 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 확인 및 맵핑
|
||||
*/
|
||||
|
||||
#define DEBUG_MENU_PASSWORD {0,0,0,0}
|
||||
|
||||
#define ENABLED (1)
|
||||
#define DISABLED (!ENABLED)
|
||||
|
||||
/*
|
||||
Timer Clock Per 100us
|
||||
*/
|
||||
#define SYSTEM_10MIN_TIME (6000000UL)
|
||||
#define TIME_01MS (10U)
|
||||
#define TIME_10MS (100U)
|
||||
#define TIME_20MS (200U)
|
||||
#define TIME_50MS (500U)
|
||||
#define TIME_100MS (1000U)
|
||||
#define TIME_500MS (5000U)
|
||||
#define TIME_1SEC (10000U)
|
||||
|
||||
// 전류센서 0A 기준값 450(0.33V), 허용 오차 +/- 150
|
||||
#define SENSOR_OFFSET_REF 450
|
||||
#define SENSOR_TOLERANCE 150
|
||||
#define SENSOR_MIN_LIMIT (SENSOR_OFFSET_REF - SENSOR_TOLERANCE) // 300
|
||||
#define SENSOR_MAX_LIMIT (SENSOR_OFFSET_REF + SENSOR_TOLERANCE) // 600
|
||||
|
||||
#define TIME_OVER (1U)
|
||||
|
||||
#define ABS(x) ((x) < 0 ? -(x) : (x))
|
||||
|
||||
enum
|
||||
{
|
||||
TIMER_01MS = 0,
|
||||
TIMER_10MS,
|
||||
TIMER_20MS,
|
||||
TIMER_50MS,
|
||||
TIMER_100MS,
|
||||
TIMER_500MS,
|
||||
TIMER_1SEC,
|
||||
TIMER_MAX
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
SOFTTIMER_TIME_OVER = 0,
|
||||
SOFTTIMER_RUNNING,
|
||||
SOFTTIMER_PAUSE,
|
||||
SOFTTIMER_DONT_EXIST
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
SOFTTIMER_WAIT_INIT = 0,
|
||||
SOFTTIMER_WAIT_POPUP,
|
||||
SOFTTIMER_WAIT_APU_STOP,
|
||||
SOFTTIMER_WAIT_SHUTDOWN,
|
||||
SOFTTIMER_WAIT_MAX
|
||||
};
|
||||
|
||||
typedef struct ClassSoftTimer
|
||||
{
|
||||
Uint32 ulSetValue;
|
||||
Uint32 ulDecreaseValue;
|
||||
int16 iTimer;
|
||||
int16 iStart;
|
||||
} CSoftTimer;
|
||||
|
||||
typedef struct ClassWaitTimer
|
||||
{
|
||||
Uint32 ulCountSoftClock;
|
||||
Uint16 uiSoftCountTarget;
|
||||
} CWaitTimer;
|
||||
|
||||
typedef struct ClassPowerOnCheckValue
|
||||
{
|
||||
Uint16 EngineHeaterSensor : 1;
|
||||
Uint16 GlowPlugSensor : 1;
|
||||
Uint16 SolenoidSensor : 1;
|
||||
Uint16 FuelPumpSensor : 1;
|
||||
Uint16 CoolantPumpSensor : 1;
|
||||
Uint16 Fan1Sensor : 1;
|
||||
Uint16 Fan2Sensor : 1;
|
||||
} CPowerOnCheckValue;
|
||||
|
||||
typedef struct ClassGeneralOperValue
|
||||
{
|
||||
Uint16 uiPassword[4];
|
||||
Uint16 uiAlarmOccured;
|
||||
Uint16 uiApuState;
|
||||
Uint16 uiAlarmReset;
|
||||
Uint16 uiMaintenence;
|
||||
Uint32 ulTotalOperationHour;
|
||||
struct
|
||||
{
|
||||
Uint16 PlayCmd : 4;
|
||||
Uint16 rsvd_padding : 4;
|
||||
} GcuCommand;
|
||||
struct
|
||||
{
|
||||
Uint16 EngineStart : 1;
|
||||
Uint16 EngineStop : 1;
|
||||
Uint16 rsvd : 2;
|
||||
Uint16 RpmSetPoint : 2;
|
||||
Uint16 Override : 1;
|
||||
Uint16 Emergency : 1;
|
||||
} EcuCommand;
|
||||
struct
|
||||
{
|
||||
Uint16 CarComputer : 1;
|
||||
Uint16 Gcu : 1;
|
||||
Uint16 Ecu : 1;
|
||||
} Conection;
|
||||
struct
|
||||
{
|
||||
Uint16 ManualCranking : 1;
|
||||
Uint16 LampTest : 1;
|
||||
Uint16 KeyTest : 1;
|
||||
} Maintenence;
|
||||
} CGeneralOperValue;
|
||||
|
||||
Uint16 CSoftWaitCountProcedure(Uint16 ucIndex, Uint32 ulWaitTime);
|
||||
void CActiveChipSelect(Uint16 Active);
|
||||
|
||||
extern CGeneralOperValue GeneralOperValue;
|
||||
extern CPowerOnCheckValue PowerOnCheckValue;
|
||||
|
||||
#endif /* SOURCE_MAIN_H_ */
|
||||
Reference in New Issue
Block a user