Selaa lähdekoodia

老代码适配整型板!!!

liyi 1 vuosi sitten
vanhempi
commit
1cf1079b90

+ 17 - 15
truing_control/PDU_AC_OLD/App/IO/key_io.c

@@ -17,10 +17,10 @@
 #endif
 
 #if SUPPORT_SELF_LOCK
-		#define KEY_IO_1         GPIO_PIN_1
+		#define KEY_IO_1         GPIO_PIN_14
 		#define KEY_IO_2         GPIO_PIN_2
-		#define KEY_IO_3         GPIO_PIN_6
-		#define KEY_IO_4				 GPIO_PIN_7
+		#define KEY_IO_3         GPIO_PIN_0
+		#define KEY_IO_4				 GPIO_PIN_1
 #endif
 
 
@@ -37,10 +37,12 @@ void key_io_init(void * value)
 		gpio_mode_set(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_14);
 		gpio_mode_set(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_2);
 #else
-		gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_1);
-		gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_2);
-		gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_3);
-		gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_4);
+	rcu_periph_clock_enable(RCU_GPIOB);
+	rcu_periph_clock_enable(RCU_GPIOA);
+		gpio_mode_set(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_1);
+		gpio_mode_set(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_2);
+		gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_3);
+		gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_4);
 #endif
 	
 
@@ -91,10 +93,10 @@ bool get_key_io_1()
 	bool ret = false;
 	uint32_t count = 10;
 
-	if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_1)) == RESET)
+	if((status = gpio_input_bit_get(GPIOC,KEY_IO_1)) == RESET)
 	{
 		while(count--);
-		if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_1)) == RESET)
+		if((status = gpio_input_bit_get(GPIOC,KEY_IO_1)) == RESET)
 		{
 			ret = true;
 		}
@@ -108,10 +110,10 @@ bool get_key_io_2()
 	bool ret = false;
 	uint32_t count = 10;
 
-	if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_2)) == RESET)
+	if((status = gpio_input_bit_get(GPIOB,KEY_IO_2)) == RESET)
 	{
 		while(count--);
-		if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_2)) == RESET)
+		if((status = gpio_input_bit_get(GPIOB,KEY_IO_2)) == RESET)
 		{
 			ret = true;
 		}
@@ -126,10 +128,10 @@ bool get_key_io_3()
 	bool ret = false;
 	uint32_t count = 10;
 
-	if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_3)) == RESET)
+	if((status = gpio_input_bit_get(GPIOA,KEY_IO_3)) == RESET)
 	{
 		while(count--);
-		if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_3)) == RESET)
+		if((status = gpio_input_bit_get(GPIOA,KEY_IO_3)) == RESET)
 		{
 			ret = true;
 		}
@@ -144,10 +146,10 @@ bool get_key_io_4()
 	bool ret = false;
 	uint32_t count = 10;
 
-	if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_4)) == RESET)
+	if((status = gpio_input_bit_get(GPIOA,KEY_IO_4)) == RESET)
 	{
 		while(count--);
-		if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_4)) == RESET)
+		if((status = gpio_input_bit_get(GPIOA,KEY_IO_4)) == RESET)
 		{
 			ret = true;
 		}

+ 110 - 180
truing_control/PDU_AC_OLD/App/Main/Main.c

@@ -284,62 +284,6 @@ static  void  Proc100msTask(void)
   if(Get100msFlag())  //判断100ms标志状态
   { 
 		
-#if SUPPORT_TWIN_FIRE
-		uint32_t voltage = 0;
-		uint32_t current = 0;
-		uint32_t power = 0;
-		uint32_t consumer = 0;
-		uint32_t fac = 0;
-		uint32_t freq = 0;
-		uint32_t data_v = 0;
-		uint32_t data_i = 0;
-		if((Start_Read_Flag)&&(channel==0x00))		//只有读完数据之后且现在轮询到通道0才会继续更新电压和频率值
-		{
-			Start_Read_Flag = 0;
-		}
-		select_channel(channel);
-		Calculate_HLW8110_MeterData();
-		
-		data_v = (F_AC_V*EE_ACDC_Coef_ReadReg[channel].ACDC_V_k)+(EE_ACDC_Coef_ReadReg[channel].ACDC_V_b/1000);
-		data_i = (F_AC_I*EE_ACDC_Coef_ReadReg[channel].ACDC_I_k)+(EE_ACDC_Coef_ReadReg[channel].ACDC_I_b/1000);
-		voltage = data_v;
-		current = data_i;
-		power = F_AC_P*1000;
-	  freq = F_AC_LINE_Freq*1000;
-	  Hlw8110_Restore[channel] += F_AC_E;
-		fac = F_AC_PF*1000;
-	
-	
-		select_channel(channel + 4);
-		Calculate_HLW8110_MeterData();
-		
-		
-		data_v = (F_AC_V*EE_ACDC_Coef_ReadReg[channel].ACDC_V_k)+(EE_ACDC_Coef_ReadReg[channel].ACDC_V_b/1000);
-		data_i = (F_AC_I*EE_ACDC_Coef_ReadReg[channel].ACDC_I_k)+(EE_ACDC_Coef_ReadReg[channel].ACDC_I_b/1000);
-
-		voltage = data_v > voltage ? data_v : voltage;
-		current += data_i;
-		power += (F_AC_P*1000);
-		Hlw8110_Restore[channel] += F_AC_E;
-		consumer = Hlw8110_Restore[channel]*1000 + read_Total_Consumer[channel];
-		fac = fac > (F_AC_PF*1000) ? fac : (F_AC_PF*1000);
-		if(voltage <=1000)
-		{
-			current = 0;
-			freq = 0;
-			fac = 0;
-			power = 0;
-		}
-		
-		AC_Ele_ReadReg[channel].AC_V = voltage*(1.732);
-		AC_Ele_ReadReg[channel].AC_I = current;
-		AC_Ele_ReadReg[channel].AC_LINE_Freq = freq;
-		AC_Ele_ReadReg[channel].AC_P = power;
-		AC_Ele_ReadReg[channel].AC_PF =fac;
-		AC_Ele_ReadReg[channel].AC_E = consumer;
-		
-		
-#else
 		select_channel(channel);
 		Calculate_HLW8110_MeterData();
 		//AC_Ele_ReadReg[0].AC_V=(F_AC_V*EE_ACDC_Coef_ReadReg[0].ACDC_V_k)+(EE_ACDC_Coef_ReadReg[0].ACDC_V_b/1000);
@@ -370,7 +314,7 @@ static  void  Proc100msTask(void)
 		Hlw8110_Restore[channel] += F_AC_E;
 		AC_Ele_ReadReg[channel].AC_E=(Hlw8110_Restore[channel]*1000 + read_Total_Consumer[channel]);																																									 //电能
 		AC_Ele_ReadReg[channel].AC_PF=F_AC_PF*1000;						//功率因素
-#endif	
+		
 	//	AC_Ele_ReadReg_All.AC_V = AC_Ele_ReadReg[0].AC_V;
 	//	AC_Ele_ReadReg_All.AC_I += AC_Ele_ReadReg[channel].AC_I;		//all current
 	//	AC_Ele_ReadReg_All.AC_P += AC_Ele_ReadReg[channel].AC_P;
@@ -402,6 +346,20 @@ static  void  Proc100msTask(void)
     Clr100msFlag();   //清除100ms标志
   }
 }
+
+
+void set_channel_status(uint8_t channel,uint8_t status)
+{
+	
+	if(status)
+	{	
+		EE_ACDC_State_ReadReg[channel].ACDC_Cha_On_Off_State 			= true;	
+	}else
+	{
+		EE_ACDC_State_ReadReg[channel].ACDC_Cha_On_Off_State 			= false;	
+	}
+}
+
 /*********************************************************************************************************
 * 函数名称:InitHardware
 * 函数功能:所有的硬件相关的模块初始化函数都放在此函数中
@@ -422,7 +380,7 @@ static  void  InitHardware(void)
 		No_Load[i] = StaticCur; 
 	InitSysTick();       //初始化SysTick模块
 	Init74Lvc();				 //初始化74lvc573锁存器
-//	if(gpio_input_bit_get(GPIOA,LOCK_CHECK))	//更新程序后没有及时的拔掉下载器则置标志位,不用等到程序进入主循环LED闪烁左右判断依据
+	if(gpio_input_bit_get(GPIOA,LOCK_CHECK))	//更新程序后没有及时的拔掉下载器则置标志位,不用等到程序进入主循环LED闪烁左右判断依据
 		Jlink_Sta_Flag = 1;
   InitLED();           //初始化LED模块
 	InitKey();           //初始化Key模块
@@ -474,18 +432,26 @@ static  void  InitHardware(void)
 		if(key_1  == false)
 		{
 			handle_k_1_status = 0;
+			EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State = false;
+			set_channel_status(0,0);
 		}
 		if(key_2  == false)
 		{
 			handle_k_2_status = 0;
+			EE_ACDC_State_ReadReg[1].ACDC_Cha_On_Off_State = false;
+			set_channel_status(1,0);
 		}
 		if(key_3  == false)
 		{
 			handle_k_3_status = 0;
+			EE_ACDC_State_ReadReg[2].ACDC_Cha_On_Off_State = false;
+			set_channel_status(2,0);
 		}
 		if(key_4  == false)
 		{
 			handle_k_4_status = 0;
+			EE_ACDC_State_ReadReg[3].ACDC_Cha_On_Off_State = false;
+			set_channel_status(3,0);
 		}
 #endif
 	while(1)
@@ -516,17 +482,6 @@ static  void  InitHardware(void)
 
 
 
-void set_channel_status(uint8_t channel,uint8_t status)
-{
-	
-	if(status)
-	{	
-		EE_ACDC_State_ReadReg[channel].ACDC_Cha_On_Off_State 			= true;	
-	}else
-	{
-		EE_ACDC_State_ReadReg[channel].ACDC_Cha_On_Off_State 			= false;	
-	}
-}
 
 
 void switch_recode()
@@ -534,32 +489,32 @@ void switch_recode()
 	
 #if SUPPORT_DETECTION
 #if SUPPORT_SWITCH_REMENBER
-#if ((RelaySlaveChaNum == 6) || ((RelaySlaveChaNum == 8) && SUPPORT_2_DETECTION))
+	#if (SUPPORT_2_DETECTION)
 		if((detection_value & 1) == 0)
 			{
 					if(handle_detection[0] == 1)
 					{
-						for(uint8_t k = 0; k < (RelaySlaveChaNum/2);k++)
+						uint8_t channel = (RelaySlaveChaNum % 2) ? (RelaySlaveChaNum/2 +1) : (RelaySlaveChaNum / 2);
+						for(uint8_t k = 0; k < channel;k++)
 							handle_status[k] = EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State;
+											EE_ACDC_State_ReadReg[0].ACDC_ALLCha_Off_State=true;
+						for(uint8_t k = 0; k < channel;k++)
+							EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State=false;
+						for(uint8_t k = 0; k < channel;k++)
+							RelayState_ch(k);
+						handle_detection[0] = 0;
 					}
-					handle_detection[0] = 0;
-					EE_ACDC_State_ReadReg[0].ACDC_ALLCha_Off_State=true;
-					for(uint8_t k = 0; k < (RelaySlaveChaNum/2);k++)
-						EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State=false;
-					for(uint8_t k = 0; k < (RelaySlaveChaNum/2);k++)
-						RelayState_ch(k);
 			}else
 			{
 				if(handle_detection[0] == 0)
 				{
 					handle_detection[0] = 1;
-					for(uint8_t k = 0; k < (RelaySlaveChaNum/2);k++)
+					uint8_t channel = (RelaySlaveChaNum % 2) ? (RelaySlaveChaNum/2 +1) : (RelaySlaveChaNum / 2);
+					for(uint8_t k = 0; k < channel;k++)
 						EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State=handle_status[k];
-						EE_ACDC_State_ReadReg[0].ACDC_ALLCha_On_State=true;
-							input_1_en = 1;
-							input_1_ms_count = 0;
-
-							
+					EE_ACDC_State_ReadReg[0].ACDC_ALLCha_On_State=true;
+					input_1_en = 1;
+					input_1_ms_count = 0;			
 				}
 			}
 			
@@ -567,22 +522,24 @@ void switch_recode()
 			{
 				if(handle_detection[1] == 1)
 				{
-					for(uint8_t k = (RelaySlaveChaNum/2); k < RelaySlaveChaNum;k++)
+					uint8_t channel = (RelaySlaveChaNum % 2) ? (RelaySlaveChaNum/2 +1) : (RelaySlaveChaNum /2);
+					for(uint8_t k = channel; k < RelaySlaveChaNum;k++)
 						handle_status[k] = EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State;
+					EE_ACDC_State_ReadReg[0].ACDC_ALLCha_Off_State=true;
+					
+					for(uint8_t k = channel; k < RelaySlaveChaNum;k++)
+						EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State=false;
+					for(uint8_t k = channel; k < RelaySlaveChaNum;k++)
+						RelayState_ch(k);
+					handle_detection[1] = 0;
 				}
-				EE_ACDC_State_ReadReg[0].ACDC_ALLCha_Off_State=true;
-				handle_detection[1] = 0;
-				for(uint8_t k = (RelaySlaveChaNum/2); k < RelaySlaveChaNum;k++)
-					EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State=false;
-				
-				for(uint8_t k = (RelaySlaveChaNum/2); k < RelaySlaveChaNum;k++)
-					RelayState_ch(k);
 			}else
 			{
 				if(handle_detection[1] == 0)
 				{
 					handle_detection[1] = 1;
-					for(uint8_t k = (RelaySlaveChaNum/2); k < RelaySlaveChaNum;k++)
+					uint8_t channel = (RelaySlaveChaNum % 2) ? (RelaySlaveChaNum/2 +1) : (RelaySlaveChaNum / 2);
+					for(uint8_t k = channel; k < RelaySlaveChaNum;k++)
 						EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State=handle_status[k];
 					EE_ACDC_State_ReadReg[0].ACDC_ALLCha_On_State=true;
 							input_2_en = 1;
@@ -590,36 +547,7 @@ void switch_recode()
 
 				}
 			}
-
-#elif (SUPPORT_TWIN_FIRE)
-		if((detection_value & 0x3) != 0x3)
-		{
-				if(handle_detection[0] == 1)
-				{
-					for(int i = 0;i < RelaySlaveChaNum;i++)
-						handle_status[i] = EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State;
-				}
-				handle_detection[0] = 0;
-				EE_ACDC_State_ReadReg[0].ACDC_ALLCha_Off_State=true;
-				for(int i = 0;i < RelaySlaveChaNum;i++)
-					EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State = false;
-				RelayState();
-		}else
-		{
-			if(handle_detection[0] == 0)
-			{
-				handle_detection[0] = 1;
-				for(int i = 0;i < RelaySlaveChaNum;i++)
-					EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State=handle_status[i];
-				EE_ACDC_State_ReadReg[0].ACDC_ALLCha_On_State=true;
-				All_On_Flag = 1;																										//全开标志置1
-				All_Off_Flag = 0;	
-				Delay_Ms_2 = 0;
-				timer_enable(TIMER14);
-				//RelayState();
-			}
-		}
-#else
+	#else
 		if(detection_value == 0)
 		{
 				if(handle_detection[0] == 1)
@@ -649,42 +577,33 @@ void switch_recode()
 		}
 	#endif
 #else
-#if (RelaySlaveChaNum == 6 || ((RelaySlaveChaNum == 8) && SUPPORT_2_DETECTION))
-		if((detection_value & 1) == 0)
-		{
-				for(int i = 0; i < (RelaySlaveChaNum)/2;i++)
-				{
-					set_channel_status(i,0);
-				}
-				RelayState();
-		}
-		if((detection_value & 2) == 0)
-		{
-				for(int i = (RelaySlaveChaNum)/2; i < RelaySlaveChaNum;i++)
-				{
-					set_channel_status(i,0);
-				}
-				RelayState();
-		}
-#elif (SUPPORT_TWIN_FIRE)
-		if((detection_value & 0x3) != 0x3)
-		{
-				for(int i = 0; i < (RelaySlaveChaNum)/2;i++)
+	#if SUPPORT_2_DETECTION
+			if((detection_value & 1) == 0)
+			{
+					for(int i = 0; i < (RelaySlaveChaNum)/2;i++)
+					{
+						set_channel_status(i,0);
+					}
+					RelayState();
+			}
+			if((detection_value & 2) == 0)
+			{
+					for(int i = (RelaySlaveChaNum)/2; i < RelaySlaveChaNum;i++)
+					{
+						set_channel_status(i,0);
+					}
+					RelayState();
+			}
+	#else
+			if(detection_value == 0)
+			{
+				for(int i = 0; i < RelaySlaveChaNum;i++)
 				{
 					set_channel_status(i,0);
 				}
 				RelayState();
-		}		
-#else
-		if(detection_value == 0)
-		{
-			for(int i = 0; i < RelaySlaveChaNum;i++)
-			{
-				set_channel_status(i,0);
 			}
-			RelayState();
-		}
-#endif	
+	#endif	
 #endif
 #endif
 	
@@ -960,14 +879,17 @@ void sub_control()
 	}else
 	{
 #if (RelaySlaveChaNum >= 1)
-		if(key_1  == false)				//not in line
+		if(key_1  == false )				//not in line
 		{
-			set_channel_status(0,0);
-			Relay1State();
-			BUFF;
-			LOCK;
-			AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr,(uint8_t*)&(EE_ACDC_State_ReadReg[0]),2);
-			handle_k_1_status = 0;
+			if(handle_k_1_status == 1)
+			{
+				set_channel_status(0,0);
+				Relay1State();
+				BUFF;
+				LOCK;
+				AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr,(uint8_t*)&(EE_ACDC_State_ReadReg[0]),2);
+				handle_k_1_status = 0;
+			}
 		}else
 		{
 			if(handle_k_1_status == 0)
@@ -981,15 +903,18 @@ void sub_control()
 			}
 		}
 #endif
-#if (RelaySlaveChaNum >= 2)
+#if (RelaySlaveChaNum >= 2 )
 		if(key_2  == false)
 		{
-			set_channel_status(1,0);
-			Relay2State();
-			BUFF;
-			LOCK;
-			AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+2,(uint8_t*)&(EE_ACDC_State_ReadReg[1]),2);
-			handle_k_2_status = 0;
+			if(handle_k_2_status == 1)
+			{
+				set_channel_status(1,0);
+				Relay2State();
+				BUFF;
+				LOCK;
+				AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+2,(uint8_t*)&(EE_ACDC_State_ReadReg[1]),2);
+				handle_k_2_status = 0;
+			}
 		}else
 		{
 			if(handle_k_2_status == 0)
@@ -1006,12 +931,15 @@ void sub_control()
 #if (RelaySlaveChaNum >= 3)
 		if(key_3 == false)
 		{
-			set_channel_status(2,0);
-			Relay3State();
-			BUFF;
-			LOCK;
-			AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+4,(uint8_t*)&(EE_ACDC_State_ReadReg[2]),2);
-			handle_k_3_status = 0;
+			if(handle_k_3_status == 1)
+			{
+				set_channel_status(2,0);
+				Relay3State();
+				BUFF;
+				LOCK;
+				AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+4,(uint8_t*)&(EE_ACDC_State_ReadReg[2]),2);
+				handle_k_3_status = 0;
+			}
 		}else
 		{
 			if(handle_k_3_status == 0)
@@ -1028,12 +956,15 @@ void sub_control()
 #if (RelaySlaveChaNum >= 4)
 		if(key_4 == false)
 		{
-			set_channel_status(3,0);
-			Relay4State();
-			BUFF;
-			LOCK;
-			AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+6,(uint8_t*)&(EE_ACDC_State_ReadReg[3]),2);
-			handle_k_4_status = 0;
+			if(handle_k_4_status == 1)
+			{
+				set_channel_status(3,0);
+				Relay4State();
+				BUFF;
+				LOCK;
+				AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+6,(uint8_t*)&(EE_ACDC_State_ReadReg[3]),2);
+				handle_k_4_status = 0;
+			}
 		}else
 		{
 			if(handle_k_4_status == 0)
@@ -1067,7 +998,6 @@ int main(void)
 {
 
 	app_init(&meta_data);
-
   InitHardware();   								//初始化硬件相关函数
 
 	Fwdgt_Init();												//watch dog

+ 6 - 9
truing_control/PDU_AC_OLD/App/Main/board_cfg.h

@@ -9,11 +9,11 @@
 #define 	PRJ_6_BASE								0
 #define 	PRJ_8_BASE								0
 #define   PRJ_1_ALL_O_ALL_C         0
-#define   PRJ_1_SELF_LOCK_SWITCH    0
+#define   PRJ_1_SELF_LOCK_SWITCH    1
 #define   PRJ_TWIN_FIRE             0
 #define 	PRJ_ITK_8_CHANNEL					0
 #define   PRJ_2_2_BASE              0
-#define   PRJ_8_NEW									1
+#define   PRJ_8_NEW									0
 #define 	PRJ_OLD_4                 0
 #define   PRJ_1_All_OLD             0
 #define   PRJ_7                     0
@@ -30,9 +30,7 @@
 	#define 	RelaySlaveChaNum 					4
 	#define   SUPPORT_SWITCH_REMENBER   1
 	#define 	SUPPORT_ALL_ON_OFF        1
-	#define 	SUPPORT_JLINK							1
 	#define   SUPPORT_DETECTION         1
-	#define   SUPPORT_FALLING_DETECTED  1
 	#define 	ACSingCurrid 							2 
 #elif PRJ_4_SELF_LOCK_SWITCH
 	#define 	RelaySlaveChaNum 					4
@@ -42,9 +40,9 @@
 	#define 	ACSingCurrid 							2 
 #elif PRJ_6_BASE
 	#define 	RelaySlaveChaNum 					6
+	#define 	SUPPORT_2_DETECTION       2
 	#define 	SUPPORT_SWITCH_REMENBER		1
 	#define   SUPPORT_DETECTION         1
-  #define   SUPPORT_FALLING_DETECTED  0
 	#define 	ACSingCurrid 							1 
 #elif PRJ_8_BASE
 	#define 	RelaySlaveChaNum 					8
@@ -83,12 +81,11 @@
 	#define   SUPPORT_SWITCH_REMENBER   1
 	#define 	SUPPORT_ALL_ON_OFF        1
 	#define 	ACSingCurrid 							2 
-#elif    PRJ_8_NEW					
-	#define 	RelaySlaveChaNum 					4
-	#define 	SUPPORT_2_DETECTION       0
+#elif  PRJ_8_NEW					
+	#define 	RelaySlaveChaNum 					8
+	#define 	SUPPORT_2_DETECTION       2
 	#define 	SUPPORT_SWITCH_REMENBER		1
 	#define   SUPPORT_DETECTION         1
-	#define   SUPPORT_ALL_ON_OFF        1
 	#define 	ACSingCurrid 							1 
 #elif    PRJ_OLD_4
 	#define 	RelaySlaveChaNum 					4

+ 1 - 1
truing_control/PDU_AC_OLD/App/Main/cfg.h

@@ -18,7 +18,7 @@
 #define PROGRAME_APP1_SIZE								(48*1024)													//App1 programe Max size
 
 
-#define VERSION                          		"V1.0.0.12"
+#define VERSION                          		"V1.0.0.4"
 
 #define MODBUS_HEAD                        	"GOWONE_UPGRADE"
 

+ 8 - 7
truing_control/PDU_AC_OLD/App/Modbus/BARE/port/port.c

@@ -299,28 +299,29 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
 								}
 								else 
 								{
-#if SUPPORT_DETECTION
-									
+				
 #if  SUPPORT_2_DETECTION
 									if((detection_value & 0x1) == 0)
 									{
 											uint8_t k = 0;
-											for(k=0;k <(RelaySlaveChaNum)/2;k++)
+											uint8_t channel = (RelaySlaveChaNum % 2) ? (RelaySlaveChaNum/2 +1) : (RelaySlaveChaNum / 2);
+											for(k=0;k <channel;k++)
 												EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State = false;
 									}
 									if((detection_value & 0x2) == 0)
 									{
 											uint8_t k = 0;
-											for(k=(RelaySlaveChaNum)/2;k <RelaySlaveChaNum;k++)
+											uint8_t channel = (RelaySlaveChaNum % 2) ? (RelaySlaveChaNum/2 +1) : (RelaySlaveChaNum / 2);
+											for(k=channel;k <RelaySlaveChaNum;k++)
 												EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State = false;
 									}										
 #else									
 									if(detection_value != 0)
 #endif
-#endif
-										RelayState();	
+
+										//RelayState();	
 									
-										//RelayState_ch(Chal_num);
+										RelayState_ch(Chal_num);
 								}
 						}
 						else if((usAddress>=AC_Sing_Thr_SmaAddr)&&(usAddress<=AC_Sing_Thr_SmaAddr+AC_Sing_Thr_SmaQua))//ÉèÖÃͨµÀµÄãÐÖµ

+ 2 - 2
truing_control/PDU_AC_OLD/HW/Timer/Timer.c

@@ -339,7 +339,7 @@ void TIMER14_IRQHandler(void)
 						All_Off_Flag = 0;
 						return;
 				}	
-#if ((RelaySlaveChaNum  == 6) || ((RelaySlaveChaNum == 8) && SUPPORT_2_DETECTION))
+#if  SUPPORT_2_DETECTION
 				if((detection_value & 0x1) == 0)
 				{
 						uint8_t k = 0;
@@ -351,7 +351,7 @@ void TIMER14_IRQHandler(void)
 						uint8_t k = 0;
 						for(k=(RelaySlaveChaNum)/2;k <RelaySlaveChaNum;k++)
 							EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State = false;
-				}									
+				}		
 #endif				
 #endif