Commit fa5f01c5 authored by hu's avatar hu

调整电源管理

parent b69dc729
...@@ -67,6 +67,8 @@ ...@@ -67,6 +67,8 @@
static uint8_t PowerGetNMStatus(void); static uint8_t PowerGetNMStatus(void);
extern void SEG_LCD_Window_Switch(uint8_t Sw); extern void SEG_LCD_Window_Switch(uint8_t Sw);
extern void DelayUs(uint32_t time); extern void DelayUs(uint32_t time);
extern void Sys_KL30_Init(void);
extern void Sys_Wakeup_Init(void);
Power_Status_t Power_KL30_Init ( void ) Power_Status_t Power_KL30_Init ( void )
{ {
...@@ -311,7 +313,8 @@ Power_Status_t Power_Stay_ON(void) ...@@ -311,7 +313,8 @@ Power_Status_t Power_Stay_ON(void)
u8PowerSts = m_IGN_ON; u8PowerSts = m_IGN_ON;
} }
} }
if (((u8Condition3 == 1u) || (u8Condition3 >= 7u))) //if (((u8Condition3 == 1u) || (u8Condition3 >= 7u)))
if (SYS_OPR_STAT_HALT)
{ {
u8PowerSts = m_IGN_LIMIT; u8PowerSts = m_IGN_LIMIT;
} }
......
...@@ -2,8 +2,22 @@ ...@@ -2,8 +2,22 @@
#include "System_Monitor.h" #include "System_Monitor.h"
#define Base_Vol 0u typedef struct
{
monitorlib_uint8_t SumCnt;
monitorlib_uint16_t DebounceTimer;
monitorlib_uint32_t ActVoltage;
monitorlib_uint8_t FinalSts;
monitorlib_uint8_t ActSts;
} MonitorStruct;
MonitorStruct SysFun_KL30Monitor;
MonitorStruct SysFun_KL15Monitor;
MonitorStruct SysNM_KL30Monitor;
MonitorStruct SysNM_KL15Monitor;
#define Base_Vol 0u
#define ENTER_LOW_N_RANGE 6500U #define ENTER_LOW_N_RANGE 6500U
#define EXIT_LOW_N_RANGE 7000U #define EXIT_LOW_N_RANGE 7000U
...@@ -20,21 +34,19 @@ ...@@ -20,21 +34,19 @@
#define Top_Vol 0xffffu #define Top_Vol 0xffffu
MonitorStruct SysFun_KL30Monitor; static monitorlib_uint8_t System_Calc_NMRange(monitorlib_uint16_t u16Vol);
MonitorStruct SysFun_KL15Monitor; static monitorlib_uint8_t System_Calc_FunRange(monitorlib_uint16_t u16Vol);
MonitorStruct SysNM_KL30Monitor; static void System_Fast_WakeUp(void);
MonitorStruct SysNM_KL15Monitor; static void System_Fun_Process(void);
static void System_NM_Process(void);
uint8_t SysWakeUpMode = 0u; MonitorExt_st pfunction;
static uint8_t SetVolFlag = 0u;
static uint16_t t_NM_KL30_Debounce; monitorlib_uint8_t SysWakeUpMode = 0u;
static uint16_t t_NM_KL15_Debounce; monitorlib_uint8_t SetVolFlag = 0u;
static uint16_t t_FUN_KL30_Debounce;
static uint16_t t_FUN_KL15_Debounce;
static uint16_t FUNSysVol_Range[10u] = monitorlib_uint16_t FUNSysVol_Range [ 10u ] =
{ {
Base_Vol, Base_Vol,
ENTER_LOW_N_RANGE, ENTER_LOW_N_RANGE,
...@@ -48,7 +60,7 @@ static uint16_t FUNSysVol_Range[10u] = ...@@ -48,7 +60,7 @@ static uint16_t FUNSysVol_Range[10u] =
Top_Vol, Top_Vol,
}; };
static uint16_t NMSysVol_Range[10u] = monitorlib_uint16_t NMSysVol_Range [ 10u ] =
{ {
Base_Vol, Base_Vol,
ENTER_LOW_N_RANGE, ENTER_LOW_N_RANGE,
...@@ -62,17 +74,29 @@ static uint16_t NMSysVol_Range[10u] = ...@@ -62,17 +74,29 @@ static uint16_t NMSysVol_Range[10u] =
Top_Vol, Top_Vol,
}; };
uint8_t Read_KL30_ConvertFinish(void) monitorlib_uint16_t t_FUN_KL30_Debounce;
monitorlib_uint16_t t_FUN_KL15_Debounce;
monitorlib_uint16_t t_NM_KL30_Debounce;
monitorlib_uint16_t t_NM_KL15_Debounce;
monitorlib_uint16_t t_NM_KL30_Debounce_Cancel;
monitorlib_uint16_t t_NM_KL15_Debounce_Cancel;
monitorlib_uint16_t t_FUN_KL30_Debounce_Cancel;
monitorlib_uint16_t t_FUN_KL15_Debounce_Cancel;
monitorlib_uint16_t t_NM_KL30_timer;
monitorlib_uint16_t t_FUN_KL30_timer;
monitorlib_uint8_t Read_KL30_ConvertFinish(void)
{ {
return SysWakeUpMode; return SysWakeUpMode;
} }
static uint8_t System_Calc_FunRange(uint16_t u16Vol) static monitorlib_uint8_t System_Calc_FunRange(monitorlib_uint16_t u16Vol)
{ {
uint8_t i; monitorlib_uint8_t i;
for (i = 0u; i < (sizeof(FUNSysVol_Range) / sizeof(FUNSysVol_Range[0])); i++) for ( i = 0u; i < (sizeof(FUNSysVol_Range) / sizeof(FUNSysVol_Range [ 0 ])); i++ )
{ {
if (u16Vol < FUNSysVol_Range[i]) if ( u16Vol < FUNSysVol_Range [ i ] )
{ {
break; break;
} }
...@@ -80,12 +104,12 @@ static uint8_t System_Calc_FunRange(uint16_t u16Vol) ...@@ -80,12 +104,12 @@ static uint8_t System_Calc_FunRange(uint16_t u16Vol)
return i; return i;
} }
static uint8_t System_Calc_NMRange(uint16_t u16Vol) static monitorlib_uint8_t System_Calc_NMRange(monitorlib_uint16_t u16Vol)
{ {
uint8_t i; monitorlib_uint8_t i;
for (i = 0u; i < (sizeof(NMSysVol_Range) / sizeof(NMSysVol_Range[0])); i++) for ( i = 0u; i < (sizeof(NMSysVol_Range) / sizeof(NMSysVol_Range [ 0 ])); i++ )
{ {
if (u16Vol < NMSysVol_Range[i]) if ( u16Vol < NMSysVol_Range [ i ] )
{ {
break; break;
} }
...@@ -93,38 +117,50 @@ static uint8_t System_Calc_NMRange(uint16_t u16Vol) ...@@ -93,38 +117,50 @@ static uint8_t System_Calc_NMRange(uint16_t u16Vol)
return i; return i;
} }
void Sys_Set_VolRange(const uint16_t FUN_Vol[], const uint16_t NM_Vol[]) void Sys_Set_Pata(const monitorlib_uint16_t FUN_Vol [], MonitorExt_st *pfunc)
{ {
FUNSysVol_Range[0] = FUN_Vol[0]; FUNSysVol_Range [ 0 ] = FUN_Vol [ 0 ];
FUNSysVol_Range[1] = FUN_Vol[1]; FUNSysVol_Range [ 1 ] = FUN_Vol [ 1 ];
FUNSysVol_Range[2] = FUN_Vol[2]; FUNSysVol_Range [ 2 ] = FUN_Vol [ 2 ];
FUNSysVol_Range[3] = FUN_Vol[3]; FUNSysVol_Range [ 3 ] = FUN_Vol [ 3 ];
FUNSysVol_Range[4] = FUN_Vol[4]; FUNSysVol_Range [ 4 ] = FUN_Vol [ 4 ];
FUNSysVol_Range[5] = FUN_Vol[5]; FUNSysVol_Range [ 5 ] = FUN_Vol [ 5 ];
FUNSysVol_Range[6] = FUN_Vol[6]; FUNSysVol_Range [ 6 ] = FUN_Vol [ 6 ];
FUNSysVol_Range[7] = FUN_Vol[7]; FUNSysVol_Range [ 7 ] = FUN_Vol [ 7 ];
FUNSysVol_Range[8] = FUN_Vol[8]; FUNSysVol_Range [ 8 ] = FUN_Vol [ 8 ];
FUNSysVol_Range[9] = FUN_Vol[9]; FUNSysVol_Range [ 9 ] = FUN_Vol [ 9 ];
NMSysVol_Range[0] = NM_Vol[0]; t_FUN_KL30_Debounce = FUN_Vol [ 10 ];
NMSysVol_Range[1] = NM_Vol[1]; t_FUN_KL15_Debounce = FUN_Vol [ 11 ];
NMSysVol_Range[2] = NM_Vol[2];
NMSysVol_Range[3] = NM_Vol[3]; NMSysVol_Range [ 0 ] = FUN_Vol [ 12 ];
NMSysVol_Range[4] = NM_Vol[4]; NMSysVol_Range [ 1 ] = FUN_Vol [ 13 ];
NMSysVol_Range[5] = NM_Vol[5]; NMSysVol_Range [ 2 ] = FUN_Vol [ 14 ];
NMSysVol_Range[6] = NM_Vol[6]; NMSysVol_Range [ 3 ] = FUN_Vol [ 15 ];
NMSysVol_Range[7] = NM_Vol[7]; NMSysVol_Range [ 4 ] = FUN_Vol [ 16 ];
NMSysVol_Range[8] = NM_Vol[8]; NMSysVol_Range [ 5 ] = FUN_Vol [ 17 ];
NMSysVol_Range[9] = NM_Vol[9]; NMSysVol_Range [ 6 ] = FUN_Vol [ 18 ];
SetVolFlag = 0x55u; NMSysVol_Range [ 7 ] = FUN_Vol [ 19 ];
} NMSysVol_Range [ 8 ] = FUN_Vol [ 20 ];
NMSysVol_Range [ 9 ] = FUN_Vol [ 21 ];
t_NM_KL30_Debounce = FUN_Vol [ 22 ];
t_NM_KL15_Debounce = FUN_Vol [ 23 ];
t_NM_KL30_Debounce_Cancel = FUN_Vol [ 24 ];
t_FUN_KL30_Debounce_Cancel = FUN_Vol [ 25 ];
pfunction.SysGet_KL30_Valid = pfunc->SysGet_KL30_Valid;
pfunction.SysGet_KL15_Valid = pfunc->SysGet_KL15_Valid;
pfunction.SysGet_KL30_value_Force = pfunc->SysGet_KL30_value_Force;
pfunction.SysGet_KL15_value_Force = pfunc->SysGet_KL15_value_Force;
pfunction.SysGet_KL30_value = pfunc->SysGet_KL30_value;
pfunction.SysGet_KL15_value = pfunc->SysGet_KL15_value;
pfunction.SysGet_KL15Line = pfunc->SysGet_KL15Line;
pfunction.COM_Delay = pfunc->COM_Delay;
pfunction.SysMonitorLogic = pfunc->SysMonitorLogic;
void Sys_Set_DebounceTimer(uint16_t u16NMKL30, uint16_t u16NMKL15, uint16_t u16FUNKL30, uint16_t u16FUNKL15) SetVolFlag = 0x55u;
{
t_NM_KL30_Debounce = u16NMKL30;
t_NM_KL15_Debounce = u16NMKL15;
t_FUN_KL30_Debounce = u16FUNKL30;
t_FUN_KL15_Debounce = u16FUNKL15;
} }
void System_Monitor_KL30Init(void) void System_Monitor_KL30Init(void)
...@@ -154,48 +190,46 @@ void System_Monitor_KL30Init(void) ...@@ -154,48 +190,46 @@ void System_Monitor_KL30Init(void)
SysNM_KL15Monitor.FinalSts = 0u; SysNM_KL15Monitor.FinalSts = 0u;
SysNM_KL15Monitor.ActSts = 0u; SysNM_KL15Monitor.ActSts = 0u;
if (t_NM_KL30_Debounce == 0U) if ( SetVolFlag != 0x55u )
{ {
t_NM_KL30_Debounce = 1000u; t_NM_KL30_Debounce = 1000u;
}
if (t_NM_KL15_Debounce == 0U)
{
t_NM_KL15_Debounce = 2u; t_NM_KL15_Debounce = 2u;
}
if (t_FUN_KL30_Debounce == 0U)
{
t_FUN_KL30_Debounce = 1000u; t_FUN_KL30_Debounce = 1000u;
}
if (t_FUN_KL15_Debounce == 0U)
{
t_FUN_KL15_Debounce = 2u; t_FUN_KL15_Debounce = 2u;
}
if (SetVolFlag != 0x55u) t_NM_KL30_Debounce_Cancel = 1000U;
{ t_NM_KL15_Debounce_Cancel = 2U;
FUNSysVol_Range[0] = Base_Vol; t_FUN_KL30_Debounce_Cancel = 1000U;
FUNSysVol_Range[1] = ENTER_LOW_N_RANGE; t_FUN_KL15_Debounce_Cancel = 2U;
FUNSysVol_Range[2] = EXIT_LOW_N_RANGE;
FUNSysVol_Range[3] = ENTER_LOW_Y_RANGE; FUNSysVol_Range [ 0 ] = Base_Vol;
FUNSysVol_Range[4] = EXIT_LOW_Y_RANGE; FUNSysVol_Range [ 1 ] = ENTER_LOW_N_RANGE;
FUNSysVol_Range[5] = EXIT_HIGH_Y_RANGE; FUNSysVol_Range [ 2 ] = EXIT_LOW_N_RANGE;
FUNSysVol_Range[6] = ENTER_HIGH_Y_RANGE; FUNSysVol_Range [ 3 ] = ENTER_LOW_Y_RANGE;
FUNSysVol_Range[7] = EXIT_HIGH_N_RANGE; FUNSysVol_Range [ 4 ] = EXIT_LOW_Y_RANGE;
FUNSysVol_Range[8] = ENTER_HIGH_N_RANGE; FUNSysVol_Range [ 5 ] = EXIT_HIGH_Y_RANGE;
FUNSysVol_Range[9] = Top_Vol; FUNSysVol_Range [ 6 ] = ENTER_HIGH_Y_RANGE;
FUNSysVol_Range [ 7 ] = EXIT_HIGH_N_RANGE;
NMSysVol_Range[0] = Base_Vol; FUNSysVol_Range [ 8 ] = ENTER_HIGH_N_RANGE;
NMSysVol_Range[1] = ENTER_LOW_N_RANGE; FUNSysVol_Range [ 9 ] = Top_Vol;
NMSysVol_Range[2] = EXIT_LOW_N_RANGE;
NMSysVol_Range[3] = ENTER_LOW_Y_RANGE; NMSysVol_Range [ 0 ] = Base_Vol;
NMSysVol_Range[4] = EXIT_LOW_Y_RANGE; NMSysVol_Range [ 1 ] = ENTER_LOW_N_RANGE;
NMSysVol_Range[5] = EXIT_HIGH_Y_RANGE; NMSysVol_Range [ 2 ] = EXIT_LOW_N_RANGE;
NMSysVol_Range[6] = ENTER_HIGH_Y_RANGE; NMSysVol_Range [ 3 ] = ENTER_LOW_Y_RANGE;
NMSysVol_Range[7] = EXIT_HIGH_N_RANGE; NMSysVol_Range [ 4 ] = EXIT_LOW_Y_RANGE;
NMSysVol_Range[8] = ENTER_HIGH_N_RANGE; NMSysVol_Range [ 5 ] = EXIT_HIGH_Y_RANGE;
NMSysVol_Range[9] = Top_Vol; NMSysVol_Range [ 6 ] = ENTER_HIGH_Y_RANGE;
NMSysVol_Range [ 7 ] = EXIT_HIGH_N_RANGE;
NMSysVol_Range [ 8 ] = ENTER_HIGH_N_RANGE;
NMSysVol_Range [ 9 ] = Top_Vol;
SetVolFlag = 0x55u; SetVolFlag = 0x55u;
} }
if ( pfunction.COM_Delay != (( void * )0) )
{
pfunction.COM_Delay(260U);
}
System_Fast_WakeUp( );
} }
void System_Monitor_WakeupInit(void) void System_Monitor_WakeupInit(void)
...@@ -225,78 +259,87 @@ void System_Monitor_WakeupInit(void) ...@@ -225,78 +259,87 @@ void System_Monitor_WakeupInit(void)
SysNM_KL15Monitor.FinalSts = 0u; SysNM_KL15Monitor.FinalSts = 0u;
SysNM_KL15Monitor.ActSts = 0u; SysNM_KL15Monitor.ActSts = 0u;
if (t_NM_KL30_Debounce == 0U) if ( SetVolFlag != 0x55u )
{ {
t_NM_KL30_Debounce = 1000u; t_NM_KL30_Debounce = 1000u;
}
if (t_NM_KL15_Debounce == 0U)
{
t_NM_KL15_Debounce = 2u; t_NM_KL15_Debounce = 2u;
}
if (t_FUN_KL30_Debounce == 0U)
{
t_FUN_KL30_Debounce = 1000u; t_FUN_KL30_Debounce = 1000u;
}
if (t_FUN_KL15_Debounce == 0U)
{
t_FUN_KL15_Debounce = 2u; t_FUN_KL15_Debounce = 2u;
}
if (SetVolFlag != 0x55u) t_NM_KL30_Debounce_Cancel = 1000U;
{ t_NM_KL15_Debounce_Cancel = 2U;
FUNSysVol_Range[0] = Base_Vol; t_FUN_KL30_Debounce_Cancel = 1000U;
FUNSysVol_Range[1] = ENTER_LOW_N_RANGE; t_FUN_KL15_Debounce_Cancel = 2U;
FUNSysVol_Range[2] = EXIT_LOW_N_RANGE; FUNSysVol_Range [ 0 ] = Base_Vol;
FUNSysVol_Range[3] = ENTER_LOW_Y_RANGE; FUNSysVol_Range [ 1 ] = ENTER_LOW_N_RANGE;
FUNSysVol_Range[4] = EXIT_LOW_Y_RANGE; FUNSysVol_Range [ 2 ] = EXIT_LOW_N_RANGE;
FUNSysVol_Range[5] = EXIT_HIGH_Y_RANGE; FUNSysVol_Range [ 3 ] = ENTER_LOW_Y_RANGE;
FUNSysVol_Range[6] = ENTER_HIGH_Y_RANGE; FUNSysVol_Range [ 4 ] = EXIT_LOW_Y_RANGE;
FUNSysVol_Range[7] = EXIT_HIGH_N_RANGE; FUNSysVol_Range [ 5 ] = EXIT_HIGH_Y_RANGE;
FUNSysVol_Range[8] = ENTER_HIGH_N_RANGE; FUNSysVol_Range [ 6 ] = ENTER_HIGH_Y_RANGE;
FUNSysVol_Range[9] = Top_Vol; FUNSysVol_Range [ 7 ] = EXIT_HIGH_N_RANGE;
FUNSysVol_Range [ 8 ] = ENTER_HIGH_N_RANGE;
NMSysVol_Range[0] = Base_Vol; FUNSysVol_Range [ 9 ] = Top_Vol;
NMSysVol_Range[1] = ENTER_LOW_N_RANGE;
NMSysVol_Range[2] = EXIT_LOW_N_RANGE; NMSysVol_Range [ 0 ] = Base_Vol;
NMSysVol_Range[3] = ENTER_LOW_Y_RANGE; NMSysVol_Range [ 1 ] = ENTER_LOW_N_RANGE;
NMSysVol_Range[4] = EXIT_LOW_Y_RANGE; NMSysVol_Range [ 2 ] = EXIT_LOW_N_RANGE;
NMSysVol_Range[5] = EXIT_HIGH_Y_RANGE; NMSysVol_Range [ 3 ] = ENTER_LOW_Y_RANGE;
NMSysVol_Range[6] = ENTER_HIGH_Y_RANGE; NMSysVol_Range [ 4 ] = EXIT_LOW_Y_RANGE;
NMSysVol_Range[7] = EXIT_HIGH_N_RANGE; NMSysVol_Range [ 5 ] = EXIT_HIGH_Y_RANGE;
NMSysVol_Range[8] = ENTER_HIGH_N_RANGE; NMSysVol_Range [ 6 ] = ENTER_HIGH_Y_RANGE;
NMSysVol_Range[9] = Top_Vol; NMSysVol_Range [ 7 ] = EXIT_HIGH_N_RANGE;
NMSysVol_Range [ 8 ] = ENTER_HIGH_N_RANGE;
NMSysVol_Range [ 9 ] = Top_Vol;
SetVolFlag = 0x55u; SetVolFlag = 0x55u;
} }
System_Fast_WakeUp( );
} }
void Sys_Status_Update_Service(void) void Sys_Status_Update_Service(void)
{ {
System_Fun_Process(); System_Fun_Process( );
System_NM_Process(); System_NM_Process( );
Sys_LogicProcess(); if ( pfunction.SysMonitorLogic != (( void * )0) )
{
pfunction.SysMonitorLogic( );
}
} }
void System_Fast_WakeUp(void) static void System_Fast_WakeUp(void)
{ {
uint16_t KL30_Voltage = 0U; monitorlib_uint16_t KL30_Voltage;
uint16_t KL15_Voltage = 0U; monitorlib_uint16_t KL15_Voltage;
uint8_t KL30_Valid = 0U; monitorlib_uint16_t Voltage;
uint8_t KL15_Valid = 0U; monitorlib_uint8_t NormalKL30Cnt = 0U;
uint16_t Voltage = 0U; monitorlib_uint8_t abnormalKL30Cnt = 0U;
uint8_t NormalKL30Cnt = 0U; monitorlib_uint8_t AttemptCnt = 0U;
uint8_t abnormalKL30Cnt = 0U;
uint8_t AttemptCnt = 0U;
AttemptCnt = 0u; AttemptCnt = 0u;
KL30_Voltage = Sys_Force_Read_KL30_Voltage(); while ( SysNM_KL30Monitor.FinalSts == 0u )
KL15_Voltage = Sys_Force_Read_KL15_Voltage();
while (SysNM_KL30Monitor.FinalSts == 0u)
{ {
if ( pfunction.COM_Delay != (( void * )0) )
{ {
/*KL30 KL15电压采集*/ pfunction.COM_Delay(2U);
KL30_Voltage = Sys_Force_Read_KL30_Voltage(); }
KL15_Voltage = Sys_Force_Read_KL15_Voltage(); /*KL30 KL15 voltage */
if (KL30_Voltage > KL15_Voltage) if ( pfunction.SysGet_KL30_value_Force != ( void * )0 )
{
KL30_Voltage = pfunction.SysGet_KL30_value_Force( );
}
else
{
KL30_Voltage = 0u;
}
if ( pfunction.SysGet_KL15_value_Force != ( void * )0 )
{
KL15_Voltage = pfunction.SysGet_KL15_value_Force( );
}
else
{
KL15_Voltage = 0u;
}
if ( KL30_Voltage > KL15_Voltage )
{ {
Voltage = KL30_Voltage; Voltage = KL30_Voltage;
} }
...@@ -305,7 +348,7 @@ void System_Fast_WakeUp(void) ...@@ -305,7 +348,7 @@ void System_Fast_WakeUp(void)
Voltage = KL15_Voltage; Voltage = KL15_Voltage;
} }
if ((Voltage <= FUNSysVol_Range[1]) || (Voltage >= FUNSysVol_Range[8])) if ( (Voltage <= NMSysVol_Range [ 2 ]) || (Voltage >= NMSysVol_Range [ 7 ]) )
{ {
NormalKL30Cnt = 0U; NormalKL30Cnt = 0U;
abnormalKL30Cnt++; abnormalKL30Cnt++;
...@@ -315,73 +358,119 @@ void System_Fast_WakeUp(void) ...@@ -315,73 +358,119 @@ void System_Fast_WakeUp(void)
NormalKL30Cnt++; NormalKL30Cnt++;
abnormalKL30Cnt = 0U; abnormalKL30Cnt = 0U;
} }
AttemptCnt++;
/*消抖次数设置*/ if ( AttemptCnt >= 10u )
if (NormalKL30Cnt >= 5U) {
break;
}
if ( NormalKL30Cnt >= 5U )
{ {
SysNM_KL30Monitor.FinalSts = 5u; SysNM_KL30Monitor.FinalSts = 5u;
} }
if (abnormalKL30Cnt >= 5U) if ( abnormalKL30Cnt >= 5U )
{ {
/*设置成HALT模式*/
SysNM_KL30Monitor.FinalSts = 9u; SysNM_KL30Monitor.FinalSts = 9u;
} }
} }
Sys_BlockDelay(20U); /*1*50us*/
AttemptCnt++; if ( (SysNM_KL30Monitor.FinalSts != 0u) )
if (AttemptCnt >= 100u)
{ {
break;
SysWakeUpMode = 0x55U;
if ( pfunction.SysGet_KL15Line != (( void * )0) )
{
SysNM_KL15Monitor.FinalSts = pfunction.SysGet_KL15Line( );
SysNM_KL15Monitor.ActSts = pfunction.SysGet_KL15Line( );
} }
else
{
SysNM_KL15Monitor.FinalSts = 0u;
SysNM_KL15Monitor.ActSts = 0u;
} }
/*KL15 KL30采集结束,切换模式*/
if ((SysNM_KL30Monitor.FinalSts != 0u)) if ( pfunction.SysMonitorLogic != ( void * )0 )
{ {
/*切换模式*/ pfunction.SysMonitorLogic( );
SysWakeUpMode = 0x55U; }
SysNM_KL15Monitor.FinalSts = System_LINE_KL15();
SysNM_KL15Monitor.ActSts = System_LINE_KL15();
SysFun_KL30Monitor.FinalSts = SysNM_KL30Monitor.FinalSts;
SysFun_KL15Monitor.FinalSts = SysNM_KL15Monitor.ActSts;
/*发送唤醒状态*/
Sys_LogicProcess();
} }
} }
static void System_NM_Process(void) static void System_NM_Process(void)
{ {
uint8_t m8; monitorlib_uint8_t m8;
static uint16_t DebpounceTimer; static monitorlib_uint16_t DebpounceTimer;
uint16_t Voltage; monitorlib_uint16_t Voltage;
uint8_t VoltageKL30Valid; monitorlib_uint8_t VoltageKL30Valid;
uint8_t VoltageKL15Valid; monitorlib_uint8_t VoltageKL15Valid;
uint16_t Voltage_KL15; monitorlib_uint16_t Voltage_KL15;
uint16_t Voltage_KL30; monitorlib_uint16_t Voltage_KL30;
if (SysNM_KL15Monitor.ActSts != SysNM_KL15Monitor.FinalSts) if ( pfunction.SysGet_KL15Line != (( void * )0) )
{
if ( SysNM_KL15Monitor.ActSts == pfunction.SysGet_KL15Line( ) )
{
if ( SysNM_KL15Monitor.DebounceTimer < t_NM_KL15_Debounce )
{ {
SysNM_KL15Monitor.DebounceTimer++; SysNM_KL15Monitor.DebounceTimer++;
if (SysNM_KL15Monitor.DebounceTimer >= t_NM_KL15_Debounce) }
else
{
SysNM_KL15Monitor.FinalSts = SysNM_KL15Monitor.ActSts;
}
}
else
{ {
SysNM_KL15Monitor.FinalSts = System_LINE_KL15();
SysNM_KL15Monitor.DebounceTimer = 0u; SysNM_KL15Monitor.DebounceTimer = 0u;
SysNM_KL15Monitor.ActSts = pfunction.SysGet_KL15Line( );
} }
} }
else else
{ {
SysNM_KL15Monitor.FinalSts = 0u;
SysNM_KL15Monitor.ActSts = 0u;
SysNM_KL15Monitor.DebounceTimer = 0u; SysNM_KL15Monitor.DebounceTimer = 0u;
SysNM_KL15Monitor.ActSts = System_LINE_KL15();
} }
VoltageKL30Valid = Sys_Read_KL30_Valid(); if ( pfunction.SysGet_KL30_Valid != ( void * )0 )
VoltageKL15Valid = Sys_Read_KL15_Valid(); {
VoltageKL30Valid = pfunction.SysGet_KL30_Valid( );
}
else
{
VoltageKL30Valid = 0u;
}
if ( pfunction.SysGet_KL15_Valid != ( void * )0 )
{
VoltageKL15Valid = pfunction.SysGet_KL15_Valid( );
}
else
{
VoltageKL15Valid = 0u;
}
if ( (VoltageKL30Valid == 1U) && (VoltageKL15Valid == 1U) )
{
if ( pfunction.SysGet_KL15_value != (( void * )0) )
{
Voltage_KL15 = pfunction.SysGet_KL15_value( );
}
else
{
Voltage_KL15 = 0u;
}
if ((VoltageKL30Valid == 1U) && (VoltageKL15Valid == 1U)) if ( pfunction.SysGet_KL15_value != (( void * )0) )
{ {
Voltage_KL15 = Sys_Read_KL15_Voltage(); Voltage_KL30 = pfunction.SysGet_KL30_value( );
Voltage_KL30 = Sys_Read_KL30_Voltage(); }
if (Voltage_KL30 > Voltage_KL15) else
{
Voltage_KL30 = 0u;
}
if ( Voltage_KL30 > Voltage_KL15 )
{ {
Voltage = Voltage_KL30; Voltage = Voltage_KL30;
} }
...@@ -389,11 +478,11 @@ static void System_NM_Process(void) ...@@ -389,11 +478,11 @@ static void System_NM_Process(void)
{ {
Voltage = Voltage_KL15; Voltage = Voltage_KL15;
} }
if (SysNM_KL30Monitor.SumCnt < 50u) if ( SysNM_KL30Monitor.SumCnt < 50u )
{ {
SysNM_KL30Monitor.ActVoltage += Voltage; SysNM_KL30Monitor.ActVoltage += Voltage;
SysNM_KL30Monitor.SumCnt += 1u; SysNM_KL30Monitor.SumCnt += 1u;
Voltage = (uint16_t)(SysNM_KL30Monitor.ActVoltage / SysNM_KL30Monitor.SumCnt); Voltage = ( monitorlib_uint16_t )(SysNM_KL30Monitor.ActVoltage / SysNM_KL30Monitor.SumCnt);
} }
else else
{ {
...@@ -401,54 +490,66 @@ static void System_NM_Process(void) ...@@ -401,54 +490,66 @@ static void System_NM_Process(void)
SysNM_KL30Monitor.ActVoltage = 0u; SysNM_KL30Monitor.ActVoltage = 0u;
SysNM_KL30Monitor.ActVoltage += Voltage; SysNM_KL30Monitor.ActVoltage += Voltage;
SysNM_KL30Monitor.SumCnt += 1u; SysNM_KL30Monitor.SumCnt += 1u;
Voltage = (uint16_t)(SysNM_KL30Monitor.ActVoltage / SysNM_KL30Monitor.SumCnt); Voltage = ( monitorlib_uint16_t )(SysNM_KL30Monitor.ActVoltage / SysNM_KL30Monitor.SumCnt);
} }
m8 = System_Calc_NMRange(Voltage); m8 = System_Calc_NMRange(Voltage);
if (SysNM_KL30Monitor.ActSts == m8) if ( SysNM_KL30Monitor.ActSts == m8 )
{ {
SysNM_KL30Monitor.DebounceTimer++; switch ( SysNM_KL30Monitor.FinalSts )
{
case 0:
case 1:
case 9:
t_NM_KL30_timer = t_NM_KL30_Debounce_Cancel;
break;
/*计时累计时间1000*2ms*/ default:
if (SysNM_KL30Monitor.DebounceTimer >= t_NM_KL30_Debounce) t_NM_KL30_timer = t_NM_KL30_Debounce;
break;
}
if ( SysNM_KL30Monitor.DebounceTimer < t_NM_KL30_timer ) /*40202-8*/
{
SysNM_KL30Monitor.DebounceTimer++;
}
else
{ {
SysNM_KL30Monitor.DebounceTimer = 0U;
DebpounceTimer = 0u; DebpounceTimer = 0u;
if (SysNM_KL30Monitor.FinalSts == 9u) /* 高压 */ if ( SysNM_KL30Monitor.FinalSts == 9u ) /* 高压 */
{ {
if ((m8 == 9u) || (m8 == 8u)) if ( (m8 == 9u) || (m8 == 8u) )
{ {
SysNM_KL30Monitor.FinalSts = 9u; SysNM_KL30Monitor.FinalSts = 9u; /** 维持不变 **/
} }
else else
{ {
SysNM_KL30Monitor.FinalSts = m8; SysNM_KL30Monitor.FinalSts = m8; /**退出*/
} }
} }
if (SysNM_KL30Monitor.FinalSts == 1u) /* 低压 */ if ( SysNM_KL30Monitor.FinalSts == 1u ) /* 低压 */
{ {
if ((m8 == 1u) || (m8 == 2u)) if ( (m8 == 1u) || (m8 == 2u) )
{ {
SysNM_KL30Monitor.FinalSts = 1u; SysNM_KL30Monitor.FinalSts = 1u; /** 维持不变 */
} }
else else
{ {
SysNM_KL30Monitor.FinalSts = m8; SysNM_KL30Monitor.FinalSts = m8; /**退出*/
} }
} }
/*非高低压*/ /* 非高低压 */
if ((SysNM_KL30Monitor.FinalSts != 1u) && (SysNM_KL30Monitor.FinalSts != 9u)) if ( (SysNM_KL30Monitor.FinalSts != 1u) && (SysNM_KL30Monitor.FinalSts != 9u) )
{ {
SysNM_KL30Monitor.FinalSts = m8; SysNM_KL30Monitor.FinalSts = m8; /** 进入*/
} }
} }
} }
else else
{ {
/*计时时间清除*/ /* 计时时间清除 */
SysNM_KL30Monitor.DebounceTimer = 0U; SysNM_KL30Monitor.DebounceTimer = 0U;
DebpounceTimer++; DebpounceTimer++;
if (DebpounceTimer >= 5u) if ( DebpounceTimer >= 5u )
{ {
DebpounceTimer = 0u; DebpounceTimer = 0u;
SysNM_KL30Monitor.ActSts = m8; SysNM_KL30Monitor.ActSts = m8;
...@@ -459,37 +560,80 @@ static void System_NM_Process(void) ...@@ -459,37 +560,80 @@ static void System_NM_Process(void)
static void System_Fun_Process(void) static void System_Fun_Process(void)
{ {
uint8_t m8; monitorlib_uint8_t m8;
uint8_t VoltageKL30Valid; monitorlib_uint8_t VoltageKL30Valid;
uint8_t VoltageKL15Valid; monitorlib_uint8_t VoltageKL15Valid;
uint16_t Voltage; monitorlib_uint16_t Voltage;
uint16_t Voltage_KL15; monitorlib_uint16_t Voltage_KL15;
uint16_t Voltage_KL30; monitorlib_uint16_t Voltage_KL30;
static uint16_t DebpounceTimer; static monitorlib_uint16_t DebpounceTimer;
if (SysFun_KL15Monitor.ActSts != SysFun_KL15Monitor.FinalSts) if ( pfunction.SysGet_KL15Line != (( void * )0) )
{
if ( SysFun_KL15Monitor.ActSts == pfunction.SysGet_KL15Line( ) )
{
if ( SysFun_KL15Monitor.DebounceTimer < t_FUN_KL15_Debounce )
{ {
SysFun_KL15Monitor.DebounceTimer++; SysFun_KL15Monitor.DebounceTimer++;
if (SysFun_KL15Monitor.DebounceTimer >= t_FUN_KL15_Debounce) }
else
{
SysFun_KL15Monitor.FinalSts = SysFun_KL15Monitor.ActSts;
}
}
else
{ {
SysFun_KL15Monitor.FinalSts = System_LINE_KL15();
SysFun_KL15Monitor.DebounceTimer = 0u; SysFun_KL15Monitor.DebounceTimer = 0u;
SysFun_KL15Monitor.ActSts = pfunction.SysGet_KL15Line( );
} }
} }
else else
{ {
SysFun_KL15Monitor.DebounceTimer = 0u; SysFun_KL15Monitor.DebounceTimer = 0u;
SysFun_KL15Monitor.ActSts = System_LINE_KL15(); SysFun_KL15Monitor.FinalSts = 0u;
SysFun_KL15Monitor.ActSts = 0u;
}
if ( pfunction.SysGet_KL30_Valid != (( void * )0) )
{
VoltageKL30Valid = pfunction.SysGet_KL30_Valid( );
}
else
{
VoltageKL30Valid = 0u;
}
if ( pfunction.SysGet_KL15_Valid != (( void * )0) )
{
VoltageKL15Valid = pfunction.SysGet_KL15_Valid( );
}
else
{
VoltageKL15Valid = 0u;
} }
VoltageKL30Valid = Sys_Read_KL30_Valid();
VoltageKL15Valid = Sys_Read_KL15_Valid();
if ((VoltageKL30Valid == 1U) && (VoltageKL15Valid == 1U)) if ( (VoltageKL30Valid == 1U) && (VoltageKL15Valid == 1U) )
{
if ( pfunction.SysGet_KL15_value != (( void * )0) )
{ {
Voltage_KL15 = Sys_Read_KL15_Voltage(); Voltage_KL15 = pfunction.SysGet_KL15_value( );
Voltage_KL30 = Sys_Read_KL30_Voltage(); }
if (Voltage_KL30 > Voltage_KL15) else
{
Voltage_KL15 = 0u;
}
if ( pfunction.SysGet_KL30_value != (( void * )0) )
{
Voltage_KL30 = pfunction.SysGet_KL30_value( );
}
else
{
Voltage_KL30 = 0u;
}
if ( Voltage_KL30 > Voltage_KL15 )
{ {
Voltage = Voltage_KL30; Voltage = Voltage_KL30;
} }
...@@ -497,11 +641,11 @@ static void System_Fun_Process(void) ...@@ -497,11 +641,11 @@ static void System_Fun_Process(void)
{ {
Voltage = Voltage_KL15; Voltage = Voltage_KL15;
} }
if (SysFun_KL30Monitor.SumCnt < 50u) if ( SysFun_KL30Monitor.SumCnt < 50u )
{ {
SysFun_KL30Monitor.ActVoltage += Voltage; SysFun_KL30Monitor.ActVoltage += Voltage;
SysFun_KL30Monitor.SumCnt += 1u; SysFun_KL30Monitor.SumCnt += 1u;
Voltage = (uint16_t)(SysFun_KL30Monitor.ActVoltage / SysFun_KL30Monitor.SumCnt); Voltage = ( monitorlib_uint16_t )(SysFun_KL30Monitor.ActVoltage / SysFun_KL30Monitor.SumCnt);
} }
else else
{ {
...@@ -509,23 +653,38 @@ static void System_Fun_Process(void) ...@@ -509,23 +653,38 @@ static void System_Fun_Process(void)
SysFun_KL30Monitor.ActVoltage = 0u; SysFun_KL30Monitor.ActVoltage = 0u;
SysFun_KL30Monitor.ActVoltage += Voltage; SysFun_KL30Monitor.ActVoltage += Voltage;
SysFun_KL30Monitor.SumCnt += 1u; SysFun_KL30Monitor.SumCnt += 1u;
Voltage = (uint16_t)(SysFun_KL30Monitor.ActVoltage / SysFun_KL30Monitor.SumCnt); Voltage = ( monitorlib_uint16_t )(SysFun_KL30Monitor.ActVoltage / SysFun_KL30Monitor.SumCnt);
} }
m8 = System_Calc_FunRange(Voltage); m8 = System_Calc_FunRange(Voltage);
if (SysFun_KL30Monitor.ActSts == m8) if ( SysFun_KL30Monitor.ActSts == m8 )
{ {
SysFun_KL30Monitor.DebounceTimer++;
DebpounceTimer = 0u; DebpounceTimer = 0u;
/*计时累计时间1000*2ms*/ switch ( SysFun_KL30Monitor.FinalSts )
if (SysFun_KL30Monitor.DebounceTimer >= t_FUN_KL30_Debounce) /*40202-8*/ {
{ case 0:
SysFun_KL30Monitor.DebounceTimer = 0U; case 1:
case 3:
case 7:
case 9:
t_FUN_KL30_timer = t_FUN_KL30_Debounce_Cancel;
break;
if (SysFun_KL30Monitor.FinalSts >= 7u) /* 高压 */ default:
t_FUN_KL30_timer = t_FUN_KL30_Debounce;
break;
}
/* 计时累计时间1000*2ms */
if ( SysFun_KL30Monitor.DebounceTimer < t_FUN_KL30_timer ) /*40202-8*/
{ {
if ((m8 == 9u) || (m8 == 8u) || (m8 == 7u)) SysFun_KL30Monitor.DebounceTimer++;
}
else
{
if ( SysFun_KL30Monitor.FinalSts > 7u ) /* 高压 */
{
if ( (m8 == 9u) || (m8 == 8u) || (m8 == 7u) )
{ {
SysFun_KL30Monitor.FinalSts = 9u; SysFun_KL30Monitor.FinalSts = 9u;
SysFun_KL15Monitor.FinalSts = 0u; SysFun_KL15Monitor.FinalSts = 0u;
...@@ -535,9 +694,9 @@ static void System_Fun_Process(void) ...@@ -535,9 +694,9 @@ static void System_Fun_Process(void)
SysFun_KL30Monitor.FinalSts = m8; SysFun_KL30Monitor.FinalSts = m8;
} }
} }
if (SysFun_KL30Monitor.FinalSts == 1u) /* 低压 */ if ( SysFun_KL30Monitor.FinalSts == 1u ) /* 低压 */
{ {
if ((m8 == 1u) || (m8 == 2u)) if ( (m8 == 1u) || (m8 == 2u) )
{ {
SysFun_KL30Monitor.FinalSts = 1u; SysFun_KL30Monitor.FinalSts = 1u;
SysFun_KL15Monitor.FinalSts = 0u; SysFun_KL15Monitor.FinalSts = 0u;
...@@ -547,8 +706,8 @@ static void System_Fun_Process(void) ...@@ -547,8 +706,8 @@ static void System_Fun_Process(void)
SysFun_KL30Monitor.FinalSts = m8; SysFun_KL30Monitor.FinalSts = m8;
} }
} }
/*非高低压*/ /* 非高低压 */
if ((SysFun_KL30Monitor.FinalSts != 1u) && (SysFun_KL30Monitor.FinalSts < 7u)) if ( (SysFun_KL30Monitor.FinalSts != 1u) && (SysFun_KL30Monitor.FinalSts <= 7u) )
{ {
SysFun_KL30Monitor.FinalSts = m8; SysFun_KL30Monitor.FinalSts = m8;
} }
...@@ -556,10 +715,10 @@ static void System_Fun_Process(void) ...@@ -556,10 +715,10 @@ static void System_Fun_Process(void)
} }
else else
{ {
/*计时时间清除*/ /* 计时时间清除 */
SysFun_KL30Monitor.DebounceTimer = 0U; SysFun_KL30Monitor.DebounceTimer = 0U;
DebpounceTimer++; DebpounceTimer++;
if (DebpounceTimer >= 5u) if ( DebpounceTimer >= 5u )
{ {
DebpounceTimer = 0u; DebpounceTimer = 0u;
SysFun_KL30Monitor.ActSts = m8; SysFun_KL30Monitor.ActSts = m8;
...@@ -574,20 +733,24 @@ static void System_Fun_Process(void) ...@@ -574,20 +733,24 @@ static void System_Fun_Process(void)
}*/ }*/
} }
uint8_t System_NM_KL30_Status_Get(void) monitorlib_uint8_t System_NM_KL30_Status_Get(void)
{ {
return SysNM_KL30Monitor.FinalSts; return SysNM_KL30Monitor.FinalSts;
} }
uint8_t System_NM_KL15_Status_Get(void) monitorlib_uint8_t System_NM_KL15_Status_Get(void)
{ {
return SysNM_KL15Monitor.FinalSts; return SysNM_KL15Monitor.FinalSts;
} }
uint8_t System_FUN_KL30_Status_Get(void) monitorlib_uint8_t System_FUN_KL30_Status_Get(void)
{ {
return SysFun_KL30Monitor.FinalSts; return SysFun_KL30Monitor.FinalSts;
} }
uint8_t System_FUN_KL15_Status_Get(void) monitorlib_uint8_t System_FUN_KL15_Status_Get(void)
{ {
return SysFun_KL15Monitor.FinalSts; return SysFun_KL15Monitor.FinalSts;
} }
monitorlib_uint16_t Get_Sysmonitor_Version(void)
{
return 0x0002u;
}
#ifndef SYSTEM_MONITOR_H #ifndef SYSTEM__MONITOR__H
#define SYSTEM_MONITOR_H #define SYSTEM__MONITOR__H
#include "System_Monitor.h" /* #define Platform_16Bit
#include "TYW_stdint.h" #define Platform_32Bit*/
#ifdef Platform_16Bit
#define monitorlib_uint8_t unsigned char
#define monitorlib_uint16_t unsigned int
#define monitorlib_uint32_t unsigned long
typedef struct #else
{
uint8_t SumCnt;
uint16_t DebounceTimer;
uint32_t ActVoltage;
uint8_t FinalSts;
uint8_t ActSts;
} MonitorStruct;
#define monitorlib_uint8_t unsigned char
#define monitorlib_uint16_t unsigned short
#define monitorlib_uint32_t unsigned int
#define monitorlib_uint64_t unsigned long long
#endif
/* /*
0 ----1st-------6500 不可运行 1 0 ----1st-------6500 不可运行 1
...@@ -38,69 +40,58 @@ typedef struct ...@@ -38,69 +40,58 @@ typedef struct
6.5-18.5 CAN 可运行区间 6.5-18.5 CAN 可运行区间
*/ */
typedef monitorlib_uint8_t (*Get_Voltage_Vaild)(void);
typedef monitorlib_uint16_t (*Get_Voltage_Value)(void);
typedef monitorlib_uint8_t (*Get_LineInStatus)(void);
typedef void (*COMMON_Delay)(monitorlib_uint32_t mMs);
typedef void (*pfunLogic)(void);
typedef struct
{
/*电源运行状态*/ Get_Voltage_Vaild SysGet_KL30_Valid;
#define SYS_OPR_STAT_RUN ((System_FUN_KL30_Status_Get() > 1u)&&(System_FUN_KL30_Status_Get() < 7u )) Get_Voltage_Vaild SysGet_KL15_Valid;
#define SYS_OPR_STAT_HALT ((System_FUN_KL30_Status_Get() == 1u) || (System_FUN_KL30_Status_Get() >= 7u)) Get_Voltage_Value SysGet_KL30_value_Force;
Get_Voltage_Value SysGet_KL15_value_Force;
#define SYS_OPR_STAT_LIM_LVP (System_FUN_KL30_Status_Get() == 1U) Get_Voltage_Value SysGet_KL30_value;
#define SYS_OPR_STAT_LIM_OVP (System_FUN_KL30_Status_Get() >= 7u) Get_Voltage_Value SysGet_KL15_value;
Get_LineInStatus SysGet_KL15Line;
/*仪表工作状态*/ COMMON_Delay COM_Delay;
#define SYS_OPR_STAT_IGN_ON (System_FUN_KL15_Status_Get() == 1U) pfunLogic SysMonitorLogic;
#define SYS_OPR_STAT_IGN_OFF (System_FUN_KL15_Status_Get() == 0U) } MonitorExt_st;
/* SYS RUN Status */
/*网络管理电源工作状态*/ #define SYS_OPR_STAT_RUN ((System_FUN_KL30_Status_Get( ) > 1u) && (System_FUN_KL30_Status_Get( ) < 7u))
#define SYS_OPR_STAT_IGN_ON_NM (System_NM_KL15_Status_Get() == 1U) #define SYS_OPR_STAT_HALT ((System_FUN_KL30_Status_Get( ) == 3u) || (System_FUN_KL30_Status_Get( ) > 7u))
#define SYS_OPR_STAT_IGN_OFF_NM (System_NM_KL15_Status_Get() == 0U)
#define SYS_OPR_STAT_LIM_LVP (System_FUN_KL30_Status_Get( ) == 1U)
/*网络管理电源运行状态*/ #define SYS_OPR_STAT_LIM_OVP (System_FUN_KL30_Status_Get( ) > 7u)
#define SYS_OPR_STAT_RUN_NM ((System_NM_KL30_Status_Get() > 1u) && (System_NM_KL30_Status_Get() < 9u ))
#define SYS_OPR_STAT_HALT_NM ((System_NM_KL30_Status_Get() == 9u) || (System_NM_KL30_Status_Get() == 1u)) /*fun status*/
#define SYS_OPR_STAT_IGN_ON (System_FUN_KL15_Status_Get( ) == 1U)
#define SYS_OPR_STAT_IGN_OFF (System_FUN_KL15_Status_Get( ) == 0U)
static uint8_t System_Calc_FunRange(uint16_t u16Vol);
static uint8_t System_Calc_NMRange(uint16_t u16Vol); /*nm run status*/
#define SYS_OPR_STAT_IGN_ON_NM (System_NM_KL15_Status_Get( ) == 1U)
uint8_t Read_KL30_ConvertFinish(void); #define SYS_OPR_STAT_IGN_OFF_NM (System_NM_KL15_Status_Get( ) == 0U)
static void System_Fun_Process(void); /*nm status*/
static void System_NM_Process(void); #define SYS_OPR_STAT_RUN_NM ((System_NM_KL30_Status_Get( ) > 1u) && (System_NM_KL30_Status_Get( ) < 9u))
void Sys_LogicProcess(void); #define SYS_OPR_STAT_HALT_NM ((System_NM_KL30_Status_Get( ) == 9u) || (System_NM_KL30_Status_Get( ) == 1u))
void Sys_Status_Update_Service ( void );
monitorlib_uint8_t Read_KL30_ConvertFinish(void);
uint16_t Sys_Read_KL30_Voltage(void); monitorlib_uint16_t Get_Sysmonitor_Version(void);
uint16_t Sys_Read_KL15_Voltage(void);
uint8_t Sys_Read_KL30_Valid(void); void Sys_Status_Update_Service(void);
uint8_t Sys_Read_KL15_Valid(void); void Sys_Set_Pata(const monitorlib_uint16_t FUN_Vol [], MonitorExt_st *pfunc);
uint16_t Sys_Force_Read_KL30_Voltage(void);
uint16_t Sys_Force_Read_KL15_Voltage(void);
uint8_t System_FUN_KL30_Status_Get(void);
uint8_t System_FUN_KL15_Status_Get(void);
uint8_t System_NM_KL15_Status_Get(void);
uint8_t System_NM_KL30_Status_Get(void);
uint8_t System_LINE_KL15(void);
void Sys_Set_DebounceTimer(uint16_t u16NMKL30, uint16_t u16NMKL15, uint16_t u16FUNKL30, uint16_t u16FUNKL15);
/*void Sys_Set_VolRange(uint16_t FUN_Vol[], uint16_t NM_Vol[]);*/
void Sys_Set_VolRange(const uint16_t FUN_Vol[], const uint16_t NM_Vol[]);
void System_Monitor_KL30Init(void); void System_Monitor_KL30Init(void);
void System_Monitor_WakeupInit(void); void System_Monitor_WakeupInit(void);
void System_Fast_WakeUp(void); void System_XHY_CheckWakeup(void);
void Sys_KL30_Init (void); monitorlib_uint8_t System_FUN_KL30_Status_Get(void);
void Sys_WakeUp_Init (void); monitorlib_uint8_t System_FUN_KL15_Status_Get(void);
void Sys_BlockDelay(uint32_t u32Ms); monitorlib_uint8_t System_NM_KL15_Status_Get(void);
monitorlib_uint8_t System_NM_KL30_Status_Get(void);
void Sys_Rolling(void);
void Sys_RollingClear(void);
uint32_t Sys_Get_ms_Rolling_Counter(void);
monitorlib_uint8_t System_LINE_KL15(void);
void Sys_WakeUp_Init(void);
#endif #endif
#include "GenDelay.h"
#include "System_Monitor.h"
#include "RTE_ADC.h"
#include "GPIO.h" #include "GPIO.h"
#include "dr7f701441.dvf.h" #include "ADC.h"
#include "Watchdog.h" #include "System_Monitor.h"
#include "COM_CAN.h" #include "Analog_Signals.h"
#define u16Base_Vol 0u #define u16Base_Vol 0u // 0
#define u16ENTER_LOW_N_RANGE 6500U // 1
#define u16ENTER_LOW_N_RANGE 6500U #define u16EXIT_LOW_N_RANGE 7000U // 2
#define u16EXIT_LOW_N_RANGE 7000U #define u16ENTER_LOW_Y_RANGE 19500U // 3
#define u16EXIT_LOW_Y_RANGE 20000U // 4
#define u16ENTER_LOW_Y_RANGE 9000U #define u16EXIT_HIGH_Y_RANGE 32000U // 5
#define u16EXIT_LOW_Y_RANGE 9500U #define u16ENTER_HIGH_Y_RANGE 32500U // 6
#define u16EXIT_HIGH_N_RANGE 33000U // 7
#define u16EXIT_HIGH_Y_RANGE 30000U #define u16ENTER_HIGH_N_RANGE 33500U // 8
#define u16ENTER_HIGH_Y_RANGE 32000U
#define u16EXIT_HIGH_N_RANGE 31000U
#define u16ENTER_HIGH_N_RANGE 33000U
#define u16Top_Vol 0xffffu #define u16Top_Vol 0xffffu
uint32_t u32SysRollingCounter; #pragma alignvar(8)
static const monitorlib_uint16_t SysFun_Range [ 26u ] = {
static const uint16_t SysFun_Range[10u] =
{
u16Base_Vol, u16Base_Vol,
u16ENTER_LOW_N_RANGE, u16ENTER_LOW_N_RANGE,
...@@ -42,10 +32,8 @@ static const uint16_t SysFun_Range[10u] = ...@@ -42,10 +32,8 @@ static const uint16_t SysFun_Range[10u] =
u16ENTER_HIGH_N_RANGE, u16ENTER_HIGH_N_RANGE,
u16Top_Vol, u16Top_Vol,
}; 30000u, /**进入保护的时间*/
10u,
static const uint16_t SysNM_Range[10u] =
{
u16Base_Vol, u16Base_Vol,
u16ENTER_LOW_N_RANGE, u16ENTER_LOW_N_RANGE,
...@@ -61,122 +49,106 @@ static const uint16_t SysNM_Range[10u] = ...@@ -61,122 +49,106 @@ static const uint16_t SysNM_Range[10u] =
u16ENTER_HIGH_N_RANGE, u16ENTER_HIGH_N_RANGE,
u16Top_Vol, u16Top_Vol,
10000u,
10u,
10u, /**退出保护的时间*/
10u, /**退出保护的时间*/
}; };
uint16_t Sys_Force_Read_KL30_Voltage(void) monitorlib_uint16_t Sys_Read_KL30_Voltage_F(void)
{ {
uint16_t u16Voltage; monitorlib_uint16_t u16Voltage;
u16Voltage = (uint16_t)RTE_ForceRead_KL30_Voltage(); u16Voltage = ADC_Conv_Single_Channel(ADC_CH_KL30_VOLTAGE);
return u16Voltage; return u16Voltage;
} }
uint16_t Sys_Force_Read_KL15_Voltage(void) monitorlib_uint16_t Sys_Read_KL15_Voltage_F(void)
{ {
uint16_t u16Voltage; monitorlib_uint16_t u16Voltage;
u16Voltage = (uint16_t)RTE_ForceRead_KL15_Voltage(); u16Voltage = ADC_Conv_Single_Channel(ADC_CH_KL30_VOLTAGE);
return u16Voltage; return u16Voltage;
} }
uint16_t Sys_Read_KL30_Voltage(void) monitorlib_uint16_t Sys_Read_KL30_Voltage(void)
{ {
uint16_t u16Voltage; monitorlib_uint16_t u16Voltage;
u16Voltage = (uint16_t)RTE_Read_KL30_Voltage(); u16Voltage = ADC_Read_Signal(ADC_CH_KL30_VOLTAGE);
return u16Voltage; return u16Voltage;
} }
uint16_t Sys_Read_KL15_Voltage(void) monitorlib_uint16_t Sys_Read_KL15_Voltage(void)
{ {
uint16_t u16Voltage; monitorlib_uint16_t u16Voltage;
u16Voltage = (uint16_t)RTE_Read_KL15_Voltage(); u16Voltage = ADC_Read_Signal(ADC_CH_KL30_VOLTAGE);
return u16Voltage; return u16Voltage;
} }
monitorlib_uint8_t Sys_Read_KL30_Valid(void)
uint8_t Sys_Read_KL30_Valid(void)
{ {
uint8_t u8Valid; monitorlib_uint8_t u8Valid;
u8Valid = RTE_Read_KL30_Valid(); u8Valid = ADC_Read_Signal_Valid(ADC_CH_KL30_VOLTAGE);
return u8Valid; return u8Valid;
} }
uint8_t Sys_Read_KL15_Valid(void) monitorlib_uint8_t Sys_Read_KL15_Valid(void)
{ {
uint8_t u8Valid; monitorlib_uint8_t u8Valid;
u8Valid = RTE_Read_KL15_Valid(); u8Valid = ADC_Read_Signal_Valid(ADC_CH_KL30_VOLTAGE);
return u8Valid; return u8Valid;
} }
uint8_t System_LINE_KL15(void) monitorlib_uint8_t System_LINE_KL15(void)
{
uint8_t u8KL15;
u8KL15 = ADC_KL15_IN; //15��Ӳ��
return u8KL15;
}
void Sys_KL30_Init ( void)
{
Sys_Set_DebounceTimer(1000u, 2u, 1000u, 80u);
Sys_Set_VolRange(SysFun_Range, SysNM_Range);
System_Monitor_KL30Init();
System_Fast_WakeUp();
}
void Sys_WakeUp_Init ( void)
{
Sys_Set_DebounceTimer(1000u, 2u, 1000u, 80u);
Sys_Set_VolRange(SysFun_Range, SysNM_Range);
System_Monitor_WakeupInit();
System_Fast_WakeUp();
}
/*����������ִ�������*/
void Sys_LogicProcess(void)
{ {
COM_NM_ACT(); monitorlib_uint8_t u8KL15;
}
if ( ADC_KL15_IN == 1u )
void Sys_Rolling(void)
{
if (u32SysRollingCounter != 65535ul)
{ {
u32SysRollingCounter++; u8KL15 = 1u;
} }
else else
{ {
u32SysRollingCounter = 0; u8KL15 = 0u;
} }
return u8KL15;
} }
void Sys_RollingClear(void) void Common_BlockDelay(monitorlib_uint32_t u32Ms)
{ {
u32SysRollingCounter = 0; Gen_TimeDelay(u32Ms * 1000u, 50u);
} }
void Sys_LogicProcess(void)
uint32_t Sys_Get_ms_Rolling_Counter(void)
{ {
return u32SysRollingCounter;
} }
void Sys_BlockDelay(uint32_t u32Ms) void Sys_KL30_Init(void)
{ {
uint32_t RocBackup, Counter; MonitorExt_st m_st;
Sys_RollingClear(); m_st.COM_Delay = Common_BlockDelay;
RocBackup = Sys_Get_ms_Rolling_Counter(); m_st.SysGet_KL15Line = System_LINE_KL15;
do m_st.SysGet_KL15_Valid = Sys_Read_KL15_Valid;
{ m_st.SysGet_KL30_Valid = Sys_Read_KL30_Valid;
WDT_Clear(); m_st.SysGet_KL15_value = Sys_Read_KL15_Voltage;
Counter = Sys_Get_ms_Rolling_Counter(); m_st.SysGet_KL30_value = Sys_Read_KL30_Voltage;
if ( Counter >= RocBackup ) m_st.SysGet_KL15_value_Force = Sys_Read_KL15_Voltage_F;
{ m_st.SysGet_KL30_value_Force = Sys_Read_KL30_Voltage_F;
Counter -= RocBackup; m_st.SysMonitorLogic = Sys_LogicProcess;
} Sys_Set_Pata(SysFun_Range, &m_st);
else System_Monitor_KL30Init( );
{ }
Counter = 65535U - RocBackup + Counter + 1U;
} void Sys_WakeUp_Init(void)
} {
while ( Counter < u32Ms ); MonitorExt_st m_st;
m_st.COM_Delay = Common_BlockDelay;
m_st.SysGet_KL15Line = System_LINE_KL15;
m_st.SysGet_KL15_Valid = Sys_Read_KL15_Valid;
m_st.SysGet_KL30_Valid = Sys_Read_KL30_Valid;
m_st.SysGet_KL15_value = Sys_Read_KL15_Voltage;
m_st.SysGet_KL30_value = Sys_Read_KL30_Voltage;
m_st.SysGet_KL15_value_Force = Sys_Read_KL15_Voltage_F;
m_st.SysGet_KL30_value_Force = Sys_Read_KL30_Voltage_F;
m_st.SysMonitorLogic = Sys_LogicProcess;
Sys_Set_Pata(SysFun_Range, &m_st);
System_Monitor_WakeupInit( );
} }
...@@ -673,31 +673,31 @@ uint16_t Common_ReadRollingCounter(void) ...@@ -673,31 +673,31 @@ uint16_t Common_ReadRollingCounter(void)
return SysRollingCounter; return SysRollingCounter;
} }
void Common_BlockDelay(uint16_t m_MS) //void Common_BlockDelay(uint16_t m_MS)
{ //{
uint16_t RocBackup; // uint16_t RocBackup;
uint16_t Counter; // uint16_t Counter;
uint16_t DIMCounter; // uint16_t DIMCounter;
//
DIMCounter = m_MS * 20u; // DIMCounter = m_MS * 20u;
Common_RollingCounterClear(); // Common_RollingCounterClear();
RocBackup = Common_ReadRollingCounter(); // RocBackup = Common_ReadRollingCounter();
do // do
{ // {
Counter = Common_ReadRollingCounter(); // Counter = Common_ReadRollingCounter();
//
if (Counter >= RocBackup) // if (Counter >= RocBackup)
{ // {
Counter -= RocBackup; // Counter -= RocBackup;
} // }
else // else
{ // {
Counter = 65535u - RocBackup + Counter + 1u; // Counter = 65535u - RocBackup + Counter + 1u;
} // }
//
} // }
while (Counter < DIMCounter); // while (Counter < DIMCounter);
} //}
uint32_t Common_GetIgnOnTime(void) uint32_t Common_GetIgnOnTime(void)
{ {
......
...@@ -30,7 +30,7 @@ uint32_t Common_GetIgnOffTime(void); /*ms*/ ...@@ -30,7 +30,7 @@ uint32_t Common_GetIgnOffTime(void); /*ms*/
void Common_RollingCounterAdd(void); void Common_RollingCounterAdd(void);
void Common_RollingCounterClear(void); void Common_RollingCounterClear(void);
void Common_BlockDelay(uint16_t m_MS); //void Common_BlockDelay(uint16_t m_MS);
uint16_t Common_ReadRollingCounter(void); uint16_t Common_ReadRollingCounter(void);
void Set_Can18FF5510_FirstRecv_Event(void); void Set_Can18FF5510_FirstRecv_Event(void);
......
...@@ -116,7 +116,7 @@ SECTIONS ...@@ -116,7 +116,7 @@ SECTIONS
.tdata align(4) MAX_SIZE(0x0400) :>. /* initialized and zero-initialized data in TDA area */ .tdata align(4) MAX_SIZE(0x0400) :>. /* initialized and zero-initialized data in TDA area */
.ramfunc align(4) :>. /* program code in RAM area */ .ramfunc align(4) :>. /* program code in RAM area */
.stack align(4) pad(0xC000) :>. /* definition of stack size */ .stack align(4) pad(0x4000) :>. /* definition of stack size */
/* Renesas FDL data sections */ /* Renesas FDL data sections */
......
...@@ -226,8 +226,8 @@ void Sys_Sleep_Init(void) ...@@ -226,8 +226,8 @@ void Sys_Sleep_Init(void)
* \attention * \attention
* \retval None * \retval None
******************************************************************************/ ******************************************************************************/
void Sys_Wakeup_Init(void) //void Sys_Wakeup_Init(void)
{ //{
//
} //}
...@@ -28,7 +28,7 @@ extern { ...@@ -28,7 +28,7 @@ extern {
extern void Sys_Startup_Pre_Init(void); extern void Sys_Startup_Pre_Init(void);
extern void Sys_Startup_Init(void); extern void Sys_Startup_Init(void);
extern void Sys_Sleep_Init(void); extern void Sys_Sleep_Init(void);
extern void Sys_Wakeup_Init(void); //extern void Sys_Wakeup_Init(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -323,7 +323,7 @@ void Sys_Exact_50us_Tasks(void) ...@@ -323,7 +323,7 @@ void Sys_Exact_50us_Tasks(void)
{ {
static uint32_t PerCounter = 0u; static uint32_t PerCounter = 0u;
GenDelay_Tick(); GenDelay_Tick();
Sys_Rolling(); //Sys_Rolling();
COM_NM_Process(); COM_NM_Process();
COM_TX_Process(); COM_TX_Process();
DoCAN_Timer_Update(50); DoCAN_Timer_Update(50);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment