|
|
@@ -375,6 +375,18 @@ 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
|
|
|
* 函数功能:所有的硬件相关的模块初始化函数都放在此函数中
|
|
|
@@ -395,8 +407,8 @@ static void InitHardware(void)
|
|
|
No_Load[i] = StaticCur;
|
|
|
InitSysTick(); //初始化SysTick模块
|
|
|
Init74Lvc(); //初始化74lvc573锁存器
|
|
|
- if(gpio_input_bit_get(LOCK_LE_CH_RCU,LOCK_CHECK)) //更新程序后没有及时的拔掉下载器则置标志位,不用等到程序进入主循环LED闪烁左右判断依据
|
|
|
- Jlink_Sta_Flag = 1;
|
|
|
+// if(gpio_input_bit_get(LOCK_LE_CH_RCU,LOCK_CHECK)) //更新程序后没有及时的拔掉下载器则置标志位,不用等到程序进入主循环LED闪烁左右判断依据
|
|
|
+// Jlink_Sta_Flag = 1;
|
|
|
InitLED(); //初始化LED模块
|
|
|
InitKey(); //初始化Key模块
|
|
|
InitRelay(); //初始化Relay模块
|
|
|
@@ -439,38 +451,50 @@ 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
|
|
|
while(1)
|
|
|
{
|
|
|
eMBPoll();
|
|
|
//Proc100msTask(); //100ms处理任务
|
|
|
//Proc1SecTask(); //1s处理任务
|
|
|
- if((gpio_input_bit_get(LOCK_LE_CH_RCU,LOCK_CHECK))||(Jlink_Sta_Flag==0x01)) //如果有jlink接入,则不会动作继电器,直接跳出进入主函数
|
|
|
- {
|
|
|
- //补上电平,让IO输出电平,有一个起始状态,但不会动作,锁存器起作用
|
|
|
- RelayState();
|
|
|
- Delay_Ms_1 = 0;
|
|
|
- Delay_End_flag = 0;
|
|
|
- Jlink_Sta_Flag = 0;
|
|
|
- timer_disable(TIMER14);
|
|
|
- break;
|
|
|
- }
|
|
|
+// if((gpio_input_bit_get(LOCK_LE_CH_RCU,LOCK_CHECK))||(Jlink_Sta_Flag==0x01)) //如果有jlink接入,则不会动作继电器,直接跳出进入主函数
|
|
|
+// {
|
|
|
+// //补上电平,让IO输出电平,有一个起始状态,但不会动作,锁存器起作用
|
|
|
+// RelayState();
|
|
|
+// Delay_Ms_1 = 0;
|
|
|
+// Delay_End_flag = 0;
|
|
|
+// Jlink_Sta_Flag = 0;
|
|
|
+// timer_disable(TIMER14);
|
|
|
+// break;
|
|
|
+// }
|
|
|
Proc2msTask_Start(); //2ms处理任务完成后才初始化modbus。
|
|
|
if(Delay_End_flag)
|
|
|
{
|
|
|
@@ -484,17 +508,7 @@ 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()
|
|
|
@@ -920,12 +934,15 @@ void sub_control()
|
|
|
#if (RelaySlaveChaNum >= 1)
|
|
|
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)
|
|
|
@@ -942,12 +959,15 @@ void sub_control()
|
|
|
#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)
|
|
|
@@ -964,12 +984,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)
|
|
|
@@ -986,11 +1009,14 @@ 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);
|
|
|
+ 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
|
|
|
{
|