|
@@ -54,34 +54,50 @@
|
|
|
|
|
|
|
|
#define RELAY_1_ON gpio_bit_set(RELAY_GPIO,RELAY_1);
|
|
#define RELAY_1_ON gpio_bit_set(RELAY_GPIO,RELAY_1);
|
|
|
#define RELAY_1_OFF gpio_bit_reset(RELAY_GPIO,RELAY_1);
|
|
#define RELAY_1_OFF gpio_bit_reset(RELAY_GPIO,RELAY_1);
|
|
|
|
|
+#define RELAY_1_TOG gpio_bit_toggle(RELAY_GPIO,RELAY_1);
|
|
|
|
|
+
|
|
|
|
|
|
|
|
#define RELAY_2_ON gpio_bit_set(RELAY_GPIO,RELAY_2);
|
|
#define RELAY_2_ON gpio_bit_set(RELAY_GPIO,RELAY_2);
|
|
|
#define RELAY_2_OFF gpio_bit_reset(RELAY_GPIO,RELAY_2);
|
|
#define RELAY_2_OFF gpio_bit_reset(RELAY_GPIO,RELAY_2);
|
|
|
|
|
+#define RELAY_2_TOG gpio_bit_toggle(RELAY_GPIO,RELAY_2);
|
|
|
|
|
|
|
|
#define RELAY_3_ON gpio_bit_set(RELAY_GPIO,RELAY_3);
|
|
#define RELAY_3_ON gpio_bit_set(RELAY_GPIO,RELAY_3);
|
|
|
#define RELAY_3_OFF gpio_bit_reset(RELAY_GPIO,RELAY_3);
|
|
#define RELAY_3_OFF gpio_bit_reset(RELAY_GPIO,RELAY_3);
|
|
|
|
|
+#define RELAY_3_TOG gpio_bit_toggle(RELAY_GPIO,RELAY_3);
|
|
|
|
|
|
|
|
#define RELAY_4_ON gpio_bit_set(RELAY_GPIO,RELAY_4);
|
|
#define RELAY_4_ON gpio_bit_set(RELAY_GPIO,RELAY_4);
|
|
|
#define RELAY_4_OFF gpio_bit_reset(RELAY_GPIO,RELAY_4);
|
|
#define RELAY_4_OFF gpio_bit_reset(RELAY_GPIO,RELAY_4);
|
|
|
|
|
+#define RELAY_4_TOG gpio_bit_toggle(RELAY_GPIO,RELAY_4);
|
|
|
|
|
+
|
|
|
|
|
|
|
|
#define RELAY_5_ON gpio_bit_set(RELAY_GPIO,RELAY_5);
|
|
#define RELAY_5_ON gpio_bit_set(RELAY_GPIO,RELAY_5);
|
|
|
#define RELAY_5_OFF gpio_bit_reset(RELAY_GPIO,RELAY_5);
|
|
#define RELAY_5_OFF gpio_bit_reset(RELAY_GPIO,RELAY_5);
|
|
|
|
|
+#define RELAY_5_TOG gpio_bit_toggle(RELAY_GPIO,RELAY_5);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
|
|
|
#define RELAY_6_ON gpio_bit_set(RELAY_GPIO,RELAY_6);
|
|
#define RELAY_6_ON gpio_bit_set(RELAY_GPIO,RELAY_6);
|
|
|
#define RELAY_6_OFF gpio_bit_reset(RELAY_GPIO,RELAY_6);
|
|
#define RELAY_6_OFF gpio_bit_reset(RELAY_GPIO,RELAY_6);
|
|
|
|
|
+#define RELAY_6_TOG gpio_bit_toggle(RELAY_GPIO,RELAY_6);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
|
|
|
#define RELAY_7_ON gpio_bit_set(RELAY_GPIO,RELAY_7);
|
|
#define RELAY_7_ON gpio_bit_set(RELAY_GPIO,RELAY_7);
|
|
|
#define RELAY_7_OFF gpio_bit_reset(RELAY_GPIO,RELAY_7);
|
|
#define RELAY_7_OFF gpio_bit_reset(RELAY_GPIO,RELAY_7);
|
|
|
|
|
+#define RELAY_7_TOG gpio_bit_toggle(RELAY_GPIO,RELAY_7);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
|
|
|
#define RELAY_8_ON gpio_bit_set(RELAY_GPIO,RELAY_8);
|
|
#define RELAY_8_ON gpio_bit_set(RELAY_GPIO,RELAY_8);
|
|
|
#define RELAY_8_OFF gpio_bit_reset(RELAY_GPIO,RELAY_8);
|
|
#define RELAY_8_OFF gpio_bit_reset(RELAY_GPIO,RELAY_8);
|
|
|
-
|
|
|
|
|
|
|
+#define RELAY_8_TOG gpio_bit_toggle(RELAY_GPIO,RELAY_8);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void relay_open(uint8_t channel);
|
|
static void relay_open(uint8_t channel);
|
|
|
static void relay_close(uint8_t channel);
|
|
static void relay_close(uint8_t channel);
|
|
|
static void relay_sync(void);
|
|
static void relay_sync(void);
|
|
|
|
|
+static void relay_tog(uint8_t channel);
|
|
|
static void relay_zero_open(uint8_t channel);
|
|
static void relay_zero_open(uint8_t channel);
|
|
|
static void relay_zero_close(uint8_t channel);
|
|
static void relay_zero_close(uint8_t channel);
|
|
|
|
|
|
|
@@ -94,21 +110,37 @@ void relay_init(void)
|
|
|
#if (RelaySlaveChaNum >=1)
|
|
#if (RelaySlaveChaNum >=1)
|
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_1);
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_1);
|
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1);
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_1);
|
|
|
- gpio_bit_reset(RELAY_GPIO, RELAY_1);
|
|
|
|
|
|
|
+ #if SUPPORT_MON
|
|
|
|
|
+ gpio_bit_set(RELAY_GPIO, RELAY_1);
|
|
|
|
|
+ #else
|
|
|
|
|
+ gpio_bit_reset(RELAY_GPIO, RELAY_1);
|
|
|
|
|
+ #endif
|
|
|
#endif
|
|
#endif
|
|
|
#if (RelaySlaveChaNum >=2)
|
|
#if (RelaySlaveChaNum >=2)
|
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_2);
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_2);
|
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2);
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_2);
|
|
|
- gpio_bit_reset(RELAY_GPIO, RELAY_2);
|
|
|
|
|
|
|
+ #if SUPPORT_MON
|
|
|
|
|
+ gpio_bit_set(RELAY_GPIO, RELAY_2);
|
|
|
|
|
+ #else
|
|
|
|
|
+ gpio_bit_reset(RELAY_GPIO, RELAY_2);
|
|
|
|
|
+ #endif
|
|
|
#endif
|
|
#endif
|
|
|
#if (RelaySlaveChaNum >=3)
|
|
#if (RelaySlaveChaNum >=3)
|
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_3);
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_3);
|
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3);
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_3);
|
|
|
-#if SUPPORT_CTRL2_LOCK2
|
|
|
|
|
- gpio_bit_set(RELAY_GPIO, RELAY_3);
|
|
|
|
|
-#else
|
|
|
|
|
- gpio_bit_reset(RELAY_GPIO, RELAY_3);
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #if SUPPORT_CTRL2_LOCK2
|
|
|
|
|
+ #if (AVALIABLE_RELAY < 3)
|
|
|
|
|
+ gpio_bit_set(RELAY_GPIO, RELAY_3);
|
|
|
|
|
+ #else
|
|
|
|
|
+ gpio_bit_reset(RELAY_GPIO, RELAY_3);
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #else
|
|
|
|
|
+ #if SUPPORT_MON
|
|
|
|
|
+ gpio_bit_set(RELAY_GPIO, RELAY_3);
|
|
|
|
|
+ #else
|
|
|
|
|
+ gpio_bit_reset(RELAY_GPIO, RELAY_3);
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #endif
|
|
|
#endif
|
|
#endif
|
|
|
#if SUPPORT_4_ON_FLASH
|
|
#if SUPPORT_4_ON_FLASH
|
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_4);
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_4);
|
|
@@ -119,40 +151,121 @@ void relay_init(void)
|
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_4);
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,RELAY_4);
|
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4);
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_4);
|
|
|
|
|
|
|
|
-#if SUPPORT_CTRL2_LOCK2
|
|
|
|
|
- gpio_bit_set(RELAY_GPIO, RELAY_4);
|
|
|
|
|
-#else
|
|
|
|
|
- gpio_bit_reset(RELAY_GPIO, RELAY_4);
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #if SUPPORT_CTRL2_LOCK2
|
|
|
|
|
+ #if (AVALIABLE_RELAY < 4)
|
|
|
|
|
+ gpio_bit_set(RELAY_GPIO, RELAY_4);
|
|
|
|
|
+ #else
|
|
|
|
|
+ gpio_bit_reset(RELAY_GPIO, RELAY_4);
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #else
|
|
|
|
|
+ #if SUPPORT_MON
|
|
|
|
|
+ gpio_bit_set(RELAY_GPIO, RELAY_4);
|
|
|
|
|
+ #else
|
|
|
|
|
+ gpio_bit_reset(RELAY_GPIO, RELAY_4);
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #endif
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
#if (RelaySlaveChaNum >=5)
|
|
#if (RelaySlaveChaNum >=5)
|
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_5);
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_5);
|
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_5);
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_5);
|
|
|
- gpio_bit_reset(RELAY_GPIO, RELAY_5);
|
|
|
|
|
|
|
+ #if SUPPORT_MON
|
|
|
|
|
+ gpio_bit_set(RELAY_GPIO, RELAY_5);
|
|
|
|
|
+ #else
|
|
|
|
|
+ gpio_bit_reset(RELAY_GPIO, RELAY_5);
|
|
|
|
|
+ #endif
|
|
|
#endif
|
|
#endif
|
|
|
#if (RelaySlaveChaNum >=6)
|
|
#if (RelaySlaveChaNum >=6)
|
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_6);
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_6);
|
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_6);
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_6);
|
|
|
- gpio_bit_reset(RELAY_GPIO, RELAY_6);
|
|
|
|
|
|
|
+ #if SUPPORT_MON
|
|
|
|
|
+ gpio_bit_set(RELAY_GPIO, RELAY_6);
|
|
|
|
|
+ #else
|
|
|
|
|
+ gpio_bit_reset(RELAY_GPIO, RELAY_6);
|
|
|
|
|
+ #endif
|
|
|
#endif
|
|
#endif
|
|
|
#if (RelaySlaveChaNum >=7)
|
|
#if (RelaySlaveChaNum >=7)
|
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_7);
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_7);
|
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_7);
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_7);
|
|
|
- gpio_bit_reset(RELAY_GPIO, RELAY_7);
|
|
|
|
|
|
|
+ #if SUPPORT_MON
|
|
|
|
|
+ gpio_bit_set(RELAY_GPIO, RELAY_7);
|
|
|
|
|
+ #else
|
|
|
|
|
+ gpio_bit_reset(RELAY_GPIO, RELAY_7);
|
|
|
|
|
+ #endif
|
|
|
#endif
|
|
#endif
|
|
|
#if (RelaySlaveChaNum >=8)
|
|
#if (RelaySlaveChaNum >=8)
|
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_8);
|
|
gpio_mode_set(RELAY_GPIO,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,RELAY_8);
|
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_8);
|
|
gpio_output_options_set(RELAY_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, RELAY_8);
|
|
|
- gpio_bit_reset(RELAY_GPIO, RELAY_8);
|
|
|
|
|
|
|
+ #if SUPPORT_MON
|
|
|
|
|
+ gpio_bit_set(RELAY_GPIO, RELAY_8);
|
|
|
|
|
+ #else
|
|
|
|
|
+ gpio_bit_reset(RELAY_GPIO, RELAY_8);
|
|
|
|
|
+ #endif
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
board->unlock();
|
|
board->unlock();
|
|
|
board->lock();
|
|
board->lock();
|
|
|
|
|
|
|
|
board->open = relay_open;
|
|
board->open = relay_open;
|
|
|
board->close = relay_close;
|
|
board->close = relay_close;
|
|
|
|
|
+ board->tog = relay_tog;
|
|
|
}
|
|
}
|
|
|
|
|
+static void relay_tog(uint8_t channel)
|
|
|
|
|
+{
|
|
|
|
|
+ board_t * board = get_board();
|
|
|
|
|
+ switch(channel)
|
|
|
|
|
+ {
|
|
|
|
|
+ #if (RelaySlaveChaNum >= 1)
|
|
|
|
|
+ case 0:
|
|
|
|
|
+ RELAY_1_TOG;
|
|
|
|
|
+ break;
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #if (RelaySlaveChaNum >= 2)
|
|
|
|
|
+ case 1:
|
|
|
|
|
+ RELAY_2_TOG;
|
|
|
|
|
+ break;
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #if (RelaySlaveChaNum >= 3)
|
|
|
|
|
+ case 2:
|
|
|
|
|
+ RELAY_3_TOG;
|
|
|
|
|
+ break;
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #if (RelaySlaveChaNum >= 4)
|
|
|
|
|
+ case 3:
|
|
|
|
|
+ RELAY_4_TOG;
|
|
|
|
|
+ break;
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #if (RelaySlaveChaNum >= 5)
|
|
|
|
|
+ case 4:
|
|
|
|
|
+ RELAY_5_TOG;
|
|
|
|
|
+ break;
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #if (RelaySlaveChaNum >= 6)
|
|
|
|
|
+ case 5:
|
|
|
|
|
+ RELAY_6_TOG;
|
|
|
|
|
+ break;
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #if (RelaySlaveChaNum >= 7)
|
|
|
|
|
+ case 6:
|
|
|
|
|
+ RELAY_7_TOG;
|
|
|
|
|
+ break;
|
|
|
|
|
+ #endif
|
|
|
|
|
+ #if (RelaySlaveChaNum >= 8)
|
|
|
|
|
+ case 7:
|
|
|
|
|
+ RELAY_8_TOG;
|
|
|
|
|
+ break;
|
|
|
|
|
+ #endif
|
|
|
|
|
+
|
|
|
|
|
+ default:
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ board->unlock();
|
|
|
|
|
+ board->lock();
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
|
|
|
static void relay_open(uint8_t channel)
|
|
static void relay_open(uint8_t channel)
|
|
|
{
|
|
{
|