소스 검색

新5路,新4路微动自锁开关。

liyi 2 달 전
부모
커밋
ba0fb747f1

+ 18 - 0
truring_ctrl_upgrade/PDU-AC_ADA_NEW/common/common.c

@@ -61,6 +61,12 @@ void read_config_from_eeprom(void)
 			board->write_eeprom_page(EEPROM_K_V_ADDR,(uint8_t *)&board->v_k[0],EEPROM_K_V_LEN);
 			
 			board->write_eeprom_page(EEPROM_K_I_ADDR,(uint8_t *)&board->i_k[0],EEPROM_K_I_LEN);
+			
+			
+#if SUPPORT_MICRO_SWITCH
+			board->write_eeprom_page(EEPROM_SELF_LOCK_STATUS,(uint8_t *)&board->val_key[0],EEPROM_SELF_LOCK_STATUS_LEN);
+#endif
+			
 				
 			board->write_eeprom_page(EEPROM_DEVICES_ADDR,(uint8_t *)&board->md_data.r_data.dev_chn,EEPROM_DEVICES_LENTH);
 		}
@@ -110,6 +116,18 @@ void read_config_from_eeprom(void)
 			
 			board->read_eeprom_page(EEPROM_K_I_ADDR,(uint8_t *)&board->i_k[0],EEPROM_K_I_LEN);
 			
+#if SUPPORT_MICRO_SWITCH
+			board->read_eeprom_page(EEPROM_SELF_LOCK_STATUS,(uint8_t *)&board->val_key[0],EEPROM_SELF_LOCK_STATUS_LEN);
+			
+			for(int i = 0; i < RelaySlaveChaNum;i++)
+			{
+				if(board->val_key[i] > 1)
+				{
+					board->val_key[i] = 0;
+				}
+			}
+#endif
+			
 			for(int i =0 ;i < 2;i++)
 			{
 				board->v_k[i] = board->v_k[i] > 10000 ?  3135 : board->v_k[i];

+ 10 - 2
truring_ctrl_upgrade/PDU-AC_ADA_NEW/common/common.h

@@ -276,6 +276,13 @@
 #define EEPROM_K_I_ADDR												 (6176)
 #define EEPROM_K_I_LEN                         (4)
 
+#define EEPROM_SELF_LOCK_STATUS                       (6200)
+#define EEPROM_SELF_LOCK_STATUS_LEN                   (5)
+
+
+
+
+
 
 
 
@@ -727,8 +734,8 @@ typedef struct {
 //		uint8_t 			handle_k_4_status;
 //		uint8_t 			key_4;
 //	#endif
-	uint8_t  				handle_k_status[4];
-	uint8_t         val_key[4];  
+	uint8_t  				handle_k_status[5];
+	uint8_t         val_key[5];  
 #endif
 	
 #if SUPPORT_RELAY_REMENBER
@@ -753,6 +760,7 @@ typedef struct {
 //	#if (RelaySlaveChaNum >= 4)
 //	void (*read_key_4)();
 //	#endif
+
 	void (*get_lock_key)();
 	void (*opt_lock_key)();
 #endif

+ 149 - 89
truring_ctrl_upgrade/PDU-AC_ADA_NEW/hardware/detection/detection.c

@@ -13,6 +13,7 @@
 #include "common.h"
 #include "board_cfg.h"
 #include "relay.h"
+#include "string.h"
 
 
 
@@ -165,6 +166,62 @@ void key_init(void)
 	exti_interrupt_flag_clear(KEY_TEST_EXTI);
 
 #elif SUPPORT_SELF_LOCK
+	#if SUPPORT_MICRO_SWITCH
+	
+	rcu_periph_clock_enable(RCU_CFGCMP);
+	rcu_periph_clock_enable(RCU_GPIOC);
+	rcu_periph_clock_enable(RCU_GPIOA);
+	rcu_periph_clock_enable(RCU_GPIOB);
+	if(!board)
+	{
+		board = get_board();
+	}
+	#if (RelaySlaveChaNum >= 1)
+		gpio_mode_set(KEY_TEST_1_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_1_IO);
+		nvic_irq_enable(EXTI4_15_IRQn,1);
+		syscfg_exti_line_config(KEY_TEST_1_IO_SOURCE_RCU,KEY_TEST_1_IO_SOURCE);
+		exti_init(KEY_TEST_1_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
+		exti_interrupt_flag_clear(KEY_TEST_1_IO_EXIT);	
+	#endif	
+		
+	#if (RelaySlaveChaNum >= 2)
+		gpio_mode_set(KEY_TEST_2_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_2_IO);
+		nvic_irq_enable(EXTI2_3_IRQn,1);
+		syscfg_exti_line_config(KEY_TEST_2_IO_SOURCE_RCU,KEY_TEST_2_IO_SOURCE);
+		exti_init(KEY_TEST_2_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
+		exti_interrupt_flag_clear(KEY_TEST_2_IO_EXIT);	
+	#endif	
+	
+	
+	#if (RelaySlaveChaNum >= 3)
+		gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_3_IO);
+		nvic_irq_enable(EXTI0_1_IRQn,1);
+		syscfg_exti_line_config(KEY_TEST_3_IO_SOURCE_RCU,KEY_TEST_3_IO_SOURCE);
+		exti_init(KEY_TEST_3_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
+		exti_interrupt_flag_clear(KEY_TEST_3_IO_EXIT);	
+	#endif	
+		
+	#if (RelaySlaveChaNum >= 4)
+		gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_4_IO);
+		nvic_irq_enable(EXTI0_1_IRQn,1);
+		syscfg_exti_line_config(KEY_TEST_4_IO_SOURCE_RCU,KEY_TEST_4_IO_SOURCE);
+		exti_init(KEY_TEST_4_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
+		exti_interrupt_flag_clear(KEY_TEST_4_IO_EXIT);	
+	#endif	
+		
+	#if (RelaySlaveChaNum >= 5)
+		gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_5_IO);
+		nvic_irq_enable(EXTI4_15_IRQn,1);
+		syscfg_exti_line_config(KEY_TEST_5_IO_SOURCE_RCU,KEY_TEST_5_IO_SOURCE);
+		exti_init(KEY_TEST_5_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
+		exti_interrupt_flag_clear(KEY_TEST_5_IO_EXIT);	
+	#endif	
+	
+	board->get_lock_key = get_lock_key;
+	board->opt_lock_key = self_lock_opt;
+		
+	
+#else
 	rcu_periph_clock_enable(RCU_CFGCMP);
 	rcu_periph_clock_enable(RCU_GPIOC);
 	if(!board)
@@ -190,55 +247,57 @@ void key_init(void)
 	board->get_lock_key = get_lock_key;
 	board->opt_lock_key = self_lock_opt;
 	
-#elif SUPPORT_KEY_EXIT
-	rcu_periph_clock_enable(RCU_CFGCMP);
-	rcu_periph_clock_enable(RCU_GPIOC);
-	rcu_periph_clock_enable(RCU_GPIOA);
-	rcu_periph_clock_enable(RCU_GPIOB);
-	if(!board)
-	{
-		board = get_board();
-	}
-#if (RelaySlaveChaNum >= 1)
-	gpio_mode_set(KEY_TEST_1_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_1_IO);
-	nvic_irq_enable(EXTI4_15_IRQn,1);
-	syscfg_exti_line_config(KEY_TEST_1_IO_SOURCE_RCU,KEY_TEST_1_IO_SOURCE);
-	exti_init(KEY_TEST_1_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
-	exti_interrupt_flag_clear(KEY_TEST_1_IO_EXIT);	
-#endif	
-	
-#if (RelaySlaveChaNum >= 2)
-	gpio_mode_set(KEY_TEST_2_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_2_IO);
-	nvic_irq_enable(EXTI2_3_IRQn,1);
-	syscfg_exti_line_config(KEY_TEST_2_IO_SOURCE_RCU,KEY_TEST_2_IO_SOURCE);
-	exti_init(KEY_TEST_2_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
-	exti_interrupt_flag_clear(KEY_TEST_2_IO_EXIT);	
-#endif	
-	
-	
-#if (RelaySlaveChaNum >= 3)
-	gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_3_IO);
-	nvic_irq_enable(EXTI0_1_IRQn,1);
-	syscfg_exti_line_config(KEY_TEST_3_IO_SOURCE_RCU,KEY_TEST_3_IO_SOURCE);
-	exti_init(KEY_TEST_3_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
-	exti_interrupt_flag_clear(KEY_TEST_3_IO_EXIT);	
-#endif	
-	
-#if (RelaySlaveChaNum >= 4)
-	gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_4_IO);
-	nvic_irq_enable(EXTI0_1_IRQn,1);
-	syscfg_exti_line_config(KEY_TEST_4_IO_SOURCE_RCU,KEY_TEST_4_IO_SOURCE);
-	exti_init(KEY_TEST_4_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
-	exti_interrupt_flag_clear(KEY_TEST_4_IO_EXIT);	
-#endif	
+#endif
 	
-#if (RelaySlaveChaNum >= 5)
-	gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_5_IO);
-	nvic_irq_enable(EXTI4_15_IRQn,1);
-	syscfg_exti_line_config(KEY_TEST_5_IO_SOURCE_RCU,KEY_TEST_5_IO_SOURCE);
-	exti_init(KEY_TEST_5_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
-	exti_interrupt_flag_clear(KEY_TEST_5_IO_EXIT);	
-#endif	
+//#elif SUPPORT_KEY_EXIT
+//	rcu_periph_clock_enable(RCU_CFGCMP);
+//	rcu_periph_clock_enable(RCU_GPIOC);
+//	rcu_periph_clock_enable(RCU_GPIOA);
+//	rcu_periph_clock_enable(RCU_GPIOB);
+//	if(!board)
+//	{
+//		board = get_board();
+//	}
+//#if (RelaySlaveChaNum >= 1)
+//	gpio_mode_set(KEY_TEST_1_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_1_IO);
+//	nvic_irq_enable(EXTI4_15_IRQn,1);
+//	syscfg_exti_line_config(KEY_TEST_1_IO_SOURCE_RCU,KEY_TEST_1_IO_SOURCE);
+//	exti_init(KEY_TEST_1_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
+//	exti_interrupt_flag_clear(KEY_TEST_1_IO_EXIT);	
+//#endif	
+//	
+//#if (RelaySlaveChaNum >= 2)
+//	gpio_mode_set(KEY_TEST_2_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_2_IO);
+//	nvic_irq_enable(EXTI2_3_IRQn,1);
+//	syscfg_exti_line_config(KEY_TEST_2_IO_SOURCE_RCU,KEY_TEST_2_IO_SOURCE);
+//	exti_init(KEY_TEST_2_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
+//	exti_interrupt_flag_clear(KEY_TEST_2_IO_EXIT);	
+//#endif	
+//	
+//	
+//#if (RelaySlaveChaNum >= 3)
+//	gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_3_IO);
+//	nvic_irq_enable(EXTI0_1_IRQn,1);
+//	syscfg_exti_line_config(KEY_TEST_3_IO_SOURCE_RCU,KEY_TEST_3_IO_SOURCE);
+//	exti_init(KEY_TEST_3_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
+//	exti_interrupt_flag_clear(KEY_TEST_3_IO_EXIT);	
+//#endif	
+//	
+//#if (RelaySlaveChaNum >= 4)
+//	gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_4_IO);
+//	nvic_irq_enable(EXTI0_1_IRQn,1);
+//	syscfg_exti_line_config(KEY_TEST_4_IO_SOURCE_RCU,KEY_TEST_4_IO_SOURCE);
+//	exti_init(KEY_TEST_4_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
+//	exti_interrupt_flag_clear(KEY_TEST_4_IO_EXIT);	
+//#endif	
+//	
+//#if (RelaySlaveChaNum >= 5)
+//	gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_5_IO);
+//	nvic_irq_enable(EXTI4_15_IRQn,1);
+//	syscfg_exti_line_config(KEY_TEST_5_IO_SOURCE_RCU,KEY_TEST_5_IO_SOURCE);
+//	exti_init(KEY_TEST_5_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
+//	exti_interrupt_flag_clear(KEY_TEST_5_IO_EXIT);	
+//#endif	
 
 #endif
 	
@@ -301,14 +360,12 @@ void EXTI4_15_IRQHandler(void){
 		for(int i = 0;i <30;i++);
 		if(gpio_input_bit_get(KEY_TEST_1_GPIO,KEY_TEST_1_IO) == 0)
 		{
-				async_data da = {0};
-				da.fire_or_zero = _FIRE;
-				da.method = PROMPT_CTRL;
-				da.w_eep_flag = FLAG_W_EEP;
-				da.channel = 0;
-				da.reg = &board->relay_staging_staus[0];
-				da.status = board->md_data.r_data.state.state[0].state ? 0 : 1;
-				set_relay_sta_async(&da);	
+				board->val_key[0] = board->val_key[0] ? 0 : 1;
+					w_eeprom_data_t da = {0};
+					da.lenth =1;
+					memcpy((void*)&da.data,(void*)&board->val_key[0],1);
+					da.start_addr = (EEPROM_SELF_LOCK_STATUS+0);
+					board->q_cache.en_queue(&da);
 		}
 	}
 #endif
@@ -320,14 +377,12 @@ void EXTI4_15_IRQHandler(void){
 		for(int i = 0;i <30;i++);
 		if(gpio_input_bit_get(KEY_TEST_3_4_5_GPIO,KEY_TEST_5_IO) == 0)
 		{
-				async_data da = {0};
-				da.fire_or_zero = _FIRE;
-				da.method = PROMPT_CTRL;
-				da.w_eep_flag = FLAG_W_EEP;
-				da.channel = 4;
-				da.reg = &board->relay_staging_staus[4];
-				da.status = board->md_data.r_data.state.state[4].state ? 0 : 1;
-				set_relay_sta_async(&da);	
+				board->val_key[4] = board->val_key[4] ? 0 : 1;
+				w_eeprom_data_t da = {0};
+				da.lenth =1;
+				memcpy((void*)&da.data,(void*)&board->val_key[4],1);
+				da.start_addr = (EEPROM_SELF_LOCK_STATUS+4);
+				board->q_cache.en_queue(&da);
 		}
 	}
 #endif
@@ -365,14 +420,12 @@ void EXTI0_1_IRQHandler(void)
 				for(int i = 0;i <30;i++);
 				if(gpio_input_bit_get(KEY_TEST_3_4_5_GPIO,KEY_TEST_3_IO) == 0)
 				{
-						async_data da = {0};
-						da.fire_or_zero = _FIRE;
-						da.method = PROMPT_CTRL;
-						da.w_eep_flag = FLAG_W_EEP;
-						da.channel = 2;
-						da.reg = &board->relay_staging_staus[2];
-						da.status = board->md_data.r_data.state.state[2].state ? 0 : 1;
-						set_relay_sta_async(&da);			
+					board->val_key[2] = board->val_key[2] ? 0 : 1;
+					w_eeprom_data_t da = {0};
+					da.lenth =1;
+					memcpy((void*)&da.data,(void*)&board->val_key[2],1);
+					da.start_addr = (EEPROM_SELF_LOCK_STATUS+2);
+					board->q_cache.en_queue(&da);
 				}
 			}
 #endif
@@ -386,14 +439,12 @@ void EXTI0_1_IRQHandler(void)
 			for(int i = 0;i <30;i++);
 			if(gpio_input_bit_get(KEY_TEST_3_4_5_GPIO,KEY_TEST_4_IO) == 0)
 			{
-					async_data da = {0};
-					da.fire_or_zero = _FIRE;
-					da.method = PROMPT_CTRL;
-					da.w_eep_flag = FLAG_W_EEP;
-					da.channel = 3;
-					da.reg = &board->relay_staging_staus[3];
-					da.status = board->md_data.r_data.state.state[3].state ? 0 : 1;
-					set_relay_sta_async(&da);			
+					board->val_key[3] = board->val_key[3] ? 0 : 1;	
+					w_eeprom_data_t da = {0};
+					da.lenth =1;
+					memcpy((void*)&da.data,(void*)&board->val_key[3],1);
+					da.start_addr = (EEPROM_SELF_LOCK_STATUS+3);
+					board->q_cache.en_queue(&da);
 			}
 		}
 #endif	
@@ -480,14 +531,12 @@ void EXTI2_3_IRQHandler(void)
 			for(int i = 0;i <30;i++);
 			if(gpio_input_bit_get(KEY_TEST_2_GPIO,KEY_TEST_2_IO) == 0)
 			{
-					async_data da = {0};
-					da.fire_or_zero = _FIRE;
-					da.method = PROMPT_CTRL;
-					da.w_eep_flag = FLAG_W_EEP;
-					da.channel = 1;
-					da.reg = &board->relay_staging_staus[1];
-					da.status = board->md_data.r_data.state.state[1].state ? 0 : 1;
-					set_relay_sta_async(&da);		
+					board->val_key[1] = board->val_key[1] ? 0 : 1;
+					w_eeprom_data_t da = {0};
+					da.lenth =1;
+					memcpy((void*)&da.data,(void*)&board->val_key[1],1);
+					da.start_addr = (EEPROM_SELF_LOCK_STATUS+1);
+					board->q_cache.en_queue(&da);
 			}
 		}
 	}
@@ -643,6 +692,15 @@ static void detection_opt(void)
 
 static void get_lock_key(void)
 {
+
+#if SUPPORT_MICRO_SWITCH
+
+	
+	
+
+
+#else	
+
 #if (RelaySlaveChaNum >= 1)
 	if(gpio_input_bit_get(KEY_TEST_1_GPIO,KEY_TEST_1_IO) == RESET)
 	{
@@ -681,6 +739,8 @@ static void get_lock_key(void)
 		board->val_key[3] = 0;
 	}
 #endif
+
+#endif
 }
 
 
@@ -733,7 +793,7 @@ static void get_lock_key(void)
 
 static void self_lock_opt(void)
 {
-#if (RelaySlaveChaNum <= 4)
+#if (RelaySlaveChaNum <= 5)
 	async_data da = {0};
 	da.fire_or_zero = _FIRE;
 	da.method = PROMPT_CTRL;

+ 22 - 2
truring_ctrl_upgrade/PDU-AC_ADA_NEW/user/board_cfg.h

@@ -55,13 +55,13 @@
 #define PT_SUB_COUNT_3             3
 #define PT_SUB_COUNT_4             4
 
-#define   PRJ_8_NEW									1
+#define   PRJ_8_NEW									0
 #define   PRJ_3_4                   0
 #define   PRJ_3_2                   0
 #define 	PRJ_DC_8									0
 #define   PRJ_6_NEW                 0
 #define   PRJ_3_NEW                 0
-#define 	PRJ_5_NEW									0
+#define 	PRJ_5_NEW									1
 #define 	PRJ_4_SELF_LOCK       	  0
 #define   PRJ_4_BASE                0
 #define   PRJ_1_BASE                0
@@ -87,6 +87,8 @@
 #define   PRJ_5_KEY_EXIT            0
 
 
+#define   PRJ_4_NEW_SELF_LOCK       0
+
 #define   PRJ_3_SELF_LOCK           0
 
 
@@ -157,6 +159,24 @@
 	#define   PT_SUB_COUNT              (RelaySlaveChaNum)
 	#define   SUPPORT_DETECTION         1
 	#define   SUPPORT_RELAY_REMENBER		1
+	#define   SUPPORT_SELF_LOCK         1
+	#define   SUPPORT_PWM_OUT_RELAY     1
+	#define   SUPPORT_MICRO_SWITCH      1
+	#define   SUPPORT_KEY_EXIT          1
+#elif PRJ_4_NEW_SELF_LOCK
+
+	#define 	RelaySlaveChaNum 					4
+	#define 	ACSingCurrid 							1 
+	#define   SURPPORT_2_PT             0
+	#define   PT_SUB_COUNT              (RelaySlaveChaNum)
+	#define   SUPPORT_DETECTION         1
+	#define   SUPPORT_RELAY_REMENBER		1
+	#define   SUPPORT_SELF_LOCK         1
+	#define   SUPPORT_PWM_OUT_RELAY     1
+	#define   SUPPORT_MICRO_SWITCH      1
+	#define   SUPPORT_KEY_EXIT          1
+	
+	
 #elif PRJ_4_SELF_LOCK
 	#define 	RelaySlaveChaNum 					4
 	#define 	ACSingCurrid 							2 

+ 1 - 1
truring_ctrl_upgrade/PDU-AC_ADA_NEW/user/cfg.h

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