#ifndef SOURCE_MAIN_H_ #define SOURCE_MAIN_H_ typedef signed char int8; typedef unsigned char Uint8; #include #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_ */