|
|
@@ -384,7 +384,9 @@ static void Proc100msTask(void)
|
|
|
|
|
|
WarnState_ch(channel); //更新状态寄存器的告警阈值
|
|
|
//over_RelayState();
|
|
|
+#if(!SUPPORT_OUTPUT_NOT_CTRL)
|
|
|
over_RelayState_ch(channel);
|
|
|
+#endif
|
|
|
channel=channel+1;
|
|
|
if(channel>=RelaySlaveChaNum){
|
|
|
// ACDC_Total_All_Chn_Read_Reg.ACDC_All_Consumption = all_val;
|
|
|
@@ -402,6 +404,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
|
|
|
* 函数功能:所有的硬件相关的模块初始化函数都放在此函数中
|
|
|
@@ -456,7 +472,25 @@ static void InitHardware(void)
|
|
|
BUFF;
|
|
|
LOCK;
|
|
|
#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
ReadEeprom();
|
|
|
+#if SUPPORT_4_ON
|
|
|
+ solid_4_on();
|
|
|
+ BUFF;
|
|
|
+ LOCK;
|
|
|
+ EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State = true;
|
|
|
+ EE_ACDC_State_ReadRegTrue[0].ACDC_Cha_On_Off_State = true;
|
|
|
+ EE_ACDC_State_ReadReg[1].ACDC_Cha_On_Off_State = true;
|
|
|
+ EE_ACDC_State_ReadRegTrue[1].ACDC_Cha_On_Off_State = true;
|
|
|
+ EE_ACDC_State_ReadReg[2].ACDC_Cha_On_Off_State = true;
|
|
|
+ EE_ACDC_State_ReadRegTrue[2].ACDC_Cha_On_Off_State = true;
|
|
|
+ EE_ACDC_State_ReadReg[3].ACDC_Cha_On_Off_State = true;
|
|
|
+ EE_ACDC_State_ReadRegTrue[3].ACDC_Cha_On_Off_State = true;
|
|
|
+
|
|
|
+#endif
|
|
|
strcpy(infomation.date,__DATE__);
|
|
|
strcat(infomation.date," ");
|
|
|
strcat(infomation.date,__TIME__);
|
|
|
@@ -475,23 +509,36 @@ static void InitHardware(void)
|
|
|
key_2 = get_key_io_2();
|
|
|
key_3 = get_key_io_3();
|
|
|
key_4 = get_key_io_4();
|
|
|
+#if RelaySlaveChaNum >= 1
|
|
|
if(key_1 == false)
|
|
|
{
|
|
|
handle_k_1_status = 0;
|
|
|
+ set_channel_status(0,0);
|
|
|
}
|
|
|
+#endif
|
|
|
+#if RelaySlaveChaNum >= 2
|
|
|
if(key_2 == false)
|
|
|
{
|
|
|
handle_k_2_status = 0;
|
|
|
+ set_channel_status(1,0);
|
|
|
}
|
|
|
+#endif
|
|
|
+#if RelaySlaveChaNum >= 3
|
|
|
if(key_3 == false)
|
|
|
{
|
|
|
handle_k_3_status = 0;
|
|
|
+ set_channel_status(2,0);
|
|
|
}
|
|
|
+#endif
|
|
|
+#if RelaySlaveChaNum >= 4
|
|
|
if(key_4 == false)
|
|
|
{
|
|
|
handle_k_4_status = 0;
|
|
|
+ set_channel_status(3,0);
|
|
|
}
|
|
|
#endif
|
|
|
+#endif
|
|
|
+#if (!SUPPORT_OUTPUT_NOT_CTRL)
|
|
|
while(1)
|
|
|
{
|
|
|
eMBPoll();
|
|
|
@@ -516,26 +563,21 @@ static void InitHardware(void)
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+#else
|
|
|
+ Delay_Ms_1 = 0;
|
|
|
+ Delay_End_flag = 0;
|
|
|
+ Jlink_Sta_Flag = 0;
|
|
|
+ timer_disable(TIMER14);
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
-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()
|
|
|
{
|
|
|
-
|
|
|
+#if (!SUPPORT_OUTPUT_NOT_CTRL)
|
|
|
#if SUPPORT_DETECTION
|
|
|
#if SUPPORT_SWITCH_REMENBER
|
|
|
#if ((RelaySlaveChaNum == 6) || ((RelaySlaveChaNum == 8) && SUPPORT_2_DETECTION))
|
|
|
@@ -543,27 +585,27 @@ void switch_recode()
|
|
|
{
|
|
|
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;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -571,22 +613,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;
|
|
|
@@ -690,6 +734,10 @@ void switch_recode()
|
|
|
}
|
|
|
#endif
|
|
|
#endif
|
|
|
+#endif
|
|
|
+#else
|
|
|
+
|
|
|
+
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
@@ -964,14 +1012,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)
|
|
|
@@ -985,15 +1036,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)
|
|
|
@@ -1010,12 +1064,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)
|
|
|
@@ -1032,12 +1089,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)
|
|
|
@@ -1069,6 +1129,7 @@ void sub_control()
|
|
|
*********************************************************************************************************/
|
|
|
int main(void)
|
|
|
{
|
|
|
+
|
|
|
app_init(&meta_data);
|
|
|
InitHardware(); //初始化硬件相关函数
|
|
|
|
|
|
@@ -1081,15 +1142,16 @@ int main(void)
|
|
|
check_channel_reset();
|
|
|
Proc1SecTask(); //1s处理任务
|
|
|
Fwdgt_reload();
|
|
|
- switch_recode();
|
|
|
|
|
|
-#if SUPPORT_ALL_ON_OFF
|
|
|
- check_or_controll_all();
|
|
|
-#endif
|
|
|
-#if SUPPORT_SELF_LOCK
|
|
|
- sub_control();
|
|
|
+#if(!SUPPORT_OUTPUT_NOT_CTRL)
|
|
|
+ switch_recode();
|
|
|
+ #if SUPPORT_ALL_ON_OFF
|
|
|
+ check_or_controll_all();
|
|
|
+ #endif
|
|
|
+ #if SUPPORT_SELF_LOCK
|
|
|
+ sub_control();
|
|
|
+ #endif
|
|
|
#endif
|
|
|
-
|
|
|
if(write_2_minute_flag == 1)
|
|
|
{
|
|
|
write_2_minute_flag = 0;
|