Compare commits
10 Commits
806e645056
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
| 2d15b5e7b5 | |||
| 37dd6b5a1e | |||
| 0786846040 | |||
| b37586ff1a | |||
| 05ed2c3bb9 | |||
| bfdd6ee8a1 | |||
| b6b3c3f6af | |||
| 93758b5f72 | |||
| f0398e1222 | |||
| 8d813d7eab |
Binary file not shown.
Binary file not shown.
Submodule lib/zh_avr_ac_dimmer updated: 40f352bcc7...41c23732f2
Submodule lib/zh_avr_free_rtos updated: fd753705dd...abfe2ea922
Submodule lib/zh_avr_pcf8574 updated: 9a6d82fb64...3fa55b8fa2
138
src/ate0003.c
138
src/ate0003.c
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
// #define DEBUG
|
// #define DEBUG
|
||||||
|
|
||||||
#define SYSTEM_SETUP_STACK 170
|
#define SYSTEM_SETUP_STACK 189
|
||||||
#define ENCODER_STACK 166
|
#define ENCODER_STACK 165
|
||||||
#define PCF8574_STACK 109
|
#define PCF8574_STACK 105
|
||||||
|
|
||||||
const char *component_cmm[] = {component_1_cmm, component_2_cmm, component_3_cmm, component_4_cmm, component_5_cmm};
|
const char *component_cmm[] = {component_1_cmm, component_2_cmm, component_3_cmm, component_4_cmm, component_5_cmm};
|
||||||
const char *component_line_1[] = {component_1_line_1, component_2_line_1, component_3_line_1, component_4_line_1, component_5_line_1};
|
const char *component_line_1[] = {component_1_line_1, component_2_line_1, component_3_line_1, component_4_line_1, component_5_line_1};
|
||||||
@@ -34,6 +34,8 @@ FILE uart = FDEV_SETUP_STREAM(usart, NULL, _FDEV_SETUP_WRITE);
|
|||||||
|
|
||||||
void system_setup_task(void *pvParameters);
|
void system_setup_task(void *pvParameters);
|
||||||
void component_setup_function(uint8_t component);
|
void component_setup_function(uint8_t component);
|
||||||
|
void relay_on_function(uint8_t relay_number);
|
||||||
|
void relay_off_function(uint8_t relay_number);
|
||||||
|
|
||||||
TaskHandle_t system_setup_task_handle = {0};
|
TaskHandle_t system_setup_task_handle = {0};
|
||||||
|
|
||||||
@@ -49,7 +51,8 @@ zh_avr_encoder_handle_t component_encoder_handle = {0};
|
|||||||
volatile static bool is_work = false; // Work status.
|
volatile static bool is_work = false; // Work status.
|
||||||
volatile static bool is_dmm = false; // DMM using status.
|
volatile static bool is_dmm = false; // DMM using status.
|
||||||
volatile static bool is_fix = false; // FIX button status.
|
volatile static bool is_fix = false; // FIX button status.
|
||||||
volatile static uint8_t used_channels = 0; // Permitted channels. Depends of the selected component.
|
volatile static uint8_t permitted_channels = 0; // Permitted channels. Depends of the selected component.
|
||||||
|
volatile static uint8_t used_channels = 0; // Counter of currently enabled channels.
|
||||||
volatile static bool is_initialized = false; // Normal loading status.
|
volatile static bool is_initialized = false; // Normal loading status.
|
||||||
|
|
||||||
volatile static bool is_num1_fixed = false; // NUM 1 button FIX status.
|
volatile static bool is_num1_fixed = false; // NUM 1 button FIX status.
|
||||||
@@ -71,6 +74,14 @@ int main(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
void vApplicationStackOverflowHook(TaskHandle_t xTask, char *pcTaskName)
|
||||||
|
{
|
||||||
|
printf("Task %s Stack Owerflow.\n", pcTaskName);
|
||||||
|
printf("Free Heap %d.\n", xPortGetFreeHeapSize());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void system_setup_task(void *pvParameters)
|
void system_setup_task(void *pvParameters)
|
||||||
{
|
{
|
||||||
char text_buffer[LCD_TEXT_BUFFER];
|
char text_buffer[LCD_TEXT_BUFFER];
|
||||||
@@ -158,7 +169,7 @@ void system_setup_task(void *pvParameters)
|
|||||||
zh_avr_encoder_set(&component_encoder_handle, 0);
|
zh_avr_encoder_set(&component_encoder_handle, 0);
|
||||||
//** AC dimmer init **/
|
//** AC dimmer init **/
|
||||||
zh_avr_ac_dimmer_init_config_t ac_dimmer_init_config = ZH_AVR_AC_DIMMER_INIT_CONFIG_DEFAULT();
|
zh_avr_ac_dimmer_init_config_t ac_dimmer_init_config = ZH_AVR_AC_DIMMER_INIT_CONFIG_DEFAULT();
|
||||||
ac_dimmer_init_config.ac_dimmer_frequency = ZH_400HZ;
|
ac_dimmer_init_config.ac_dimmer_frequency = ZH_50HZ;
|
||||||
ac_dimmer_init_config.zero_cross_port = AVR_PORTD;
|
ac_dimmer_init_config.zero_cross_port = AVR_PORTD;
|
||||||
ac_dimmer_init_config.zero_cross_gpio = PORTD3;
|
ac_dimmer_init_config.zero_cross_gpio = PORTD3;
|
||||||
ac_dimmer_init_config.triac_port = AVR_PORTD;
|
ac_dimmer_init_config.triac_port = AVR_PORTD;
|
||||||
@@ -167,8 +178,7 @@ void system_setup_task(void *pvParameters)
|
|||||||
zh_avr_ac_dimmer_set(100);
|
zh_avr_ac_dimmer_set(100);
|
||||||
is_initialized = true;
|
is_initialized = true;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("System Setup Task Remaining Stack Size %d.\n", uxTaskGetStackHighWaterMark(NULL));
|
printf("%d.\n", uxTaskGetStackHighWaterMark(NULL));
|
||||||
printf("Free Heap %d.\n", xPortGetFreeHeapSize());
|
|
||||||
#endif
|
#endif
|
||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
@@ -211,27 +221,22 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NUM1_BUTTON:
|
case NUM1_BUTTON:
|
||||||
if ((used_channels & CHANNEL1) == 0)
|
if ((permitted_channels & CHANNEL1) == 0)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (event->gpio_level == LOW)
|
if (event->gpio_level == LOW)
|
||||||
{
|
{
|
||||||
is_work = true;
|
|
||||||
if (is_num1_fixed == true)
|
if (is_num1_fixed == true)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_BLUE, LED_OFF);
|
zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_BLUE, LED_OFF);
|
||||||
zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_GREEN, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_GREEN, LED_ON);
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, L1_RELAY, RELAY_ON);
|
relay_on_function(L1_RELAY);
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, GROUND_RELAY, RELAY_ON); // Temporary.
|
|
||||||
vTaskDelay(10); // Temporary.
|
|
||||||
zh_avr_ac_dimmer_start(); // Temporary.
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
is_work = false;
|
|
||||||
if (is_fix == true)
|
if (is_fix == true)
|
||||||
{
|
{
|
||||||
is_num1_fixed = true;
|
is_num1_fixed = true;
|
||||||
@@ -239,35 +244,27 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
|
|||||||
}
|
}
|
||||||
zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_BLUE, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_BLUE, LED_ON);
|
||||||
zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_GREEN, LED_OFF);
|
zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_GREEN, LED_OFF);
|
||||||
zh_avr_ac_dimmer_stop(); // Temporary.
|
relay_off_function(L1_RELAY);
|
||||||
vTaskDelay(10); // Temporary.
|
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, L1_RELAY, RELAY_OFF);
|
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, GROUND_RELAY, RELAY_OFF); // Temporary.
|
|
||||||
is_num1_fixed = false;
|
is_num1_fixed = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NUM2_BUTTON:
|
case NUM2_BUTTON:
|
||||||
if ((used_channels & CHANNEL2) == 0)
|
if ((permitted_channels & CHANNEL2) == 0)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (event->gpio_level == LOW)
|
if (event->gpio_level == LOW)
|
||||||
{
|
{
|
||||||
is_work = true;
|
|
||||||
if (is_num2_fixed == true)
|
if (is_num2_fixed == true)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_BLUE, LED_OFF);
|
zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_BLUE, LED_OFF);
|
||||||
zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_GREEN, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_GREEN, LED_ON);
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, L2_RELAY, RELAY_ON);
|
relay_on_function(L2_RELAY);
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, GROUND_RELAY, RELAY_ON); // Temporary.
|
|
||||||
vTaskDelay(10); // Temporary.
|
|
||||||
zh_avr_ac_dimmer_start(); // Temporary.
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
is_work = false;
|
|
||||||
if (is_fix == true)
|
if (is_fix == true)
|
||||||
{
|
{
|
||||||
is_num2_fixed = true;
|
is_num2_fixed = true;
|
||||||
@@ -275,32 +272,27 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
|
|||||||
}
|
}
|
||||||
zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_BLUE, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_BLUE, LED_ON);
|
||||||
zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_GREEN, LED_OFF);
|
zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_GREEN, LED_OFF);
|
||||||
zh_avr_ac_dimmer_stop(); // Temporary.
|
relay_off_function(L2_RELAY);
|
||||||
vTaskDelay(10); // Temporary.
|
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, L2_RELAY, RELAY_OFF);
|
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, GROUND_RELAY, RELAY_OFF); // Temporary.
|
|
||||||
is_num2_fixed = false;
|
is_num2_fixed = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NUM3_BUTTON:
|
case NUM3_BUTTON:
|
||||||
if ((used_channels & CHANNEL3) == 0)
|
if ((permitted_channels & CHANNEL3) == 0)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (event->gpio_level == LOW)
|
if (event->gpio_level == LOW)
|
||||||
{
|
{
|
||||||
is_work = true;
|
|
||||||
if (is_num3_fixed == true)
|
if (is_num3_fixed == true)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_BLUE, LED_OFF);
|
zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_BLUE, LED_OFF);
|
||||||
zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_GREEN, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_GREEN, LED_ON);
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, L3_RELAY, RELAY_ON);
|
relay_on_function(L3_RELAY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
is_work = false;
|
|
||||||
if (is_fix == true)
|
if (is_fix == true)
|
||||||
{
|
{
|
||||||
is_num3_fixed = true;
|
is_num3_fixed = true;
|
||||||
@@ -308,29 +300,27 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
|
|||||||
}
|
}
|
||||||
zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_BLUE, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_BLUE, LED_ON);
|
||||||
zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_GREEN, LED_OFF);
|
zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_GREEN, LED_OFF);
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, L3_RELAY, RELAY_OFF);
|
relay_off_function(L3_RELAY);
|
||||||
is_num3_fixed = false;
|
is_num3_fixed = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NUM4_BUTTON:
|
case NUM4_BUTTON:
|
||||||
if ((used_channels & CHANNEL4) == 0)
|
if ((permitted_channels & CHANNEL4) == 0)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (event->gpio_level == LOW)
|
if (event->gpio_level == LOW)
|
||||||
{
|
{
|
||||||
is_work = true;
|
|
||||||
if (is_num4_fixed == true)
|
if (is_num4_fixed == true)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_BLUE, LED_OFF);
|
zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_BLUE, LED_OFF);
|
||||||
zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_GREEN, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_GREEN, LED_ON);
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, L4_RELAY, RELAY_ON);
|
relay_on_function(L4_RELAY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
is_work = false;
|
|
||||||
if (is_fix == true)
|
if (is_fix == true)
|
||||||
{
|
{
|
||||||
is_num4_fixed = true;
|
is_num4_fixed = true;
|
||||||
@@ -338,7 +328,7 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
|
|||||||
}
|
}
|
||||||
zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_BLUE, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_BLUE, LED_ON);
|
||||||
zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_GREEN, LED_OFF);
|
zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_GREEN, LED_OFF);
|
||||||
zh_avr_pcf8574_write_gpio(&relay_handle, L4_RELAY, RELAY_OFF);
|
relay_off_function(L4_RELAY);
|
||||||
is_num4_fixed = false;
|
is_num4_fixed = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -346,8 +336,7 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("PCF8574 Interrupt Task Remaining Stack Size %d.\n", uxTaskGetStackHighWaterMark(NULL));
|
printf("%d.\n", uxTaskGetStackHighWaterMark(NULL));
|
||||||
printf("Free Heap %d.\n", xPortGetFreeHeapSize());
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -368,8 +357,7 @@ void zh_avr_encoder_event_handler(zh_avr_encoder_event_on_isr_t *event)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("Encoder Interrupt Task Remaining Stack Size %d.\n", uxTaskGetStackHighWaterMark(NULL));
|
printf("%d.\n", uxTaskGetStackHighWaterMark(NULL));
|
||||||
printf("Free Heap %d.\n", xPortGetFreeHeapSize());
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -379,22 +367,17 @@ ISR(PCINT1_vect)
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
|
||||||
if (zh_avr_encoder_isr_handler(&power_encoder_handle) == pdTRUE)
|
if (zh_avr_encoder_isr_handler(&power_encoder_handle) == pdTRUE)
|
||||||
{
|
{
|
||||||
xHigherPriorityTaskWoken = pdTRUE;
|
portYIELD();
|
||||||
}
|
}
|
||||||
if (is_work == false)
|
if (is_work == false)
|
||||||
{
|
{
|
||||||
if (zh_avr_encoder_isr_handler(&component_encoder_handle) == pdTRUE)
|
if (zh_avr_encoder_isr_handler(&component_encoder_handle) == pdTRUE)
|
||||||
{
|
|
||||||
xHigherPriorityTaskWoken = pdTRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (xHigherPriorityTaskWoken == pdTRUE)
|
|
||||||
{
|
{
|
||||||
portYIELD();
|
portYIELD();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ISR(PCINT2_vect)
|
ISR(PCINT2_vect)
|
||||||
@@ -403,13 +386,8 @@ ISR(PCINT2_vect)
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
|
||||||
zh_avr_ac_dimmer_isr_handler();
|
zh_avr_ac_dimmer_isr_handler();
|
||||||
if (zh_avr_pcf8574_isr_handler() == pdTRUE)
|
if (zh_avr_pcf8574_isr_handler() == pdTRUE)
|
||||||
{
|
|
||||||
xHigherPriorityTaskWoken = pdTRUE;
|
|
||||||
}
|
|
||||||
if (xHigherPriorityTaskWoken == pdTRUE)
|
|
||||||
{
|
{
|
||||||
portYIELD();
|
portYIELD();
|
||||||
}
|
}
|
||||||
@@ -418,7 +396,7 @@ ISR(PCINT2_vect)
|
|||||||
void component_setup_function(uint8_t component)
|
void component_setup_function(uint8_t component)
|
||||||
{
|
{
|
||||||
char text_buffer[LCD_TEXT_BUFFER];
|
char text_buffer[LCD_TEXT_BUFFER];
|
||||||
used_channels = component_channel[component];
|
permitted_channels = component_channel[component];
|
||||||
zh_avr_160x_set_cursor(&lcd_handle, 1, 10);
|
zh_avr_160x_set_cursor(&lcd_handle, 1, 10);
|
||||||
strcpy_P(text_buffer, component_cmm[component]);
|
strcpy_P(text_buffer, component_cmm[component]);
|
||||||
zh_avr_160x_print_char(&lcd_handle, text_buffer);
|
zh_avr_160x_print_char(&lcd_handle, text_buffer);
|
||||||
@@ -430,20 +408,60 @@ void component_setup_function(uint8_t component)
|
|||||||
zh_avr_160x_print_char(&lcd_handle, text_buffer);
|
zh_avr_160x_print_char(&lcd_handle, text_buffer);
|
||||||
zh_avr_pcf8574_write(&led1_handle, is_dmm == true ? 0xF9 : 0xFA);
|
zh_avr_pcf8574_write(&led1_handle, is_dmm == true ? 0xF9 : 0xFA);
|
||||||
zh_avr_pcf8574_write(&led2_handle, 0x0F);
|
zh_avr_pcf8574_write(&led2_handle, 0x0F);
|
||||||
if ((used_channels & CHANNEL1) == CHANNEL1)
|
if ((permitted_channels & CHANNEL1) == CHANNEL1)
|
||||||
{
|
{
|
||||||
zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_BLUE, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_BLUE, LED_ON);
|
||||||
}
|
}
|
||||||
if ((used_channels & CHANNEL2) == CHANNEL2)
|
if ((permitted_channels & CHANNEL2) == CHANNEL2)
|
||||||
{
|
{
|
||||||
zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_BLUE, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_BLUE, LED_ON);
|
||||||
}
|
}
|
||||||
if ((used_channels & CHANNEL3) == CHANNEL3)
|
if ((permitted_channels & CHANNEL3) == CHANNEL3)
|
||||||
{
|
{
|
||||||
zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_BLUE, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_BLUE, LED_ON);
|
||||||
}
|
}
|
||||||
if ((used_channels & CHANNEL4) == CHANNEL4)
|
if ((permitted_channels & CHANNEL4) == CHANNEL4)
|
||||||
{
|
{
|
||||||
zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_BLUE, LED_ON);
|
zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_BLUE, LED_ON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void relay_on_function(uint8_t relay_number)
|
||||||
|
{
|
||||||
|
if (++used_channels > 1) // If any other channel already work.
|
||||||
|
{
|
||||||
|
zh_avr_ac_dimmer_stop();
|
||||||
|
vTaskDelay(1);
|
||||||
|
zh_avr_pcf8574_write_gpio(&relay_handle, relay_number, RELAY_ON);
|
||||||
|
vTaskDelay(10);
|
||||||
|
zh_avr_ac_dimmer_start();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
is_work = true;
|
||||||
|
zh_avr_pcf8574_write_gpio(&relay_handle, relay_number, RELAY_ON);
|
||||||
|
zh_avr_pcf8574_write_gpio(&relay_handle, GROUND_RELAY, RELAY_ON);
|
||||||
|
vTaskDelay(10);
|
||||||
|
zh_avr_ac_dimmer_start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void relay_off_function(uint8_t relay_number)
|
||||||
|
{
|
||||||
|
if (--used_channels > 0) // If any other channel already work.
|
||||||
|
{
|
||||||
|
zh_avr_ac_dimmer_stop();
|
||||||
|
vTaskDelay(1);
|
||||||
|
zh_avr_pcf8574_write_gpio(&relay_handle, relay_number, RELAY_OFF);
|
||||||
|
vTaskDelay(10);
|
||||||
|
zh_avr_ac_dimmer_start();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
zh_avr_ac_dimmer_stop();
|
||||||
|
vTaskDelay(1);
|
||||||
|
zh_avr_pcf8574_write_gpio(&relay_handle, relay_number, RELAY_OFF);
|
||||||
|
zh_avr_pcf8574_write_gpio(&relay_handle, GROUND_RELAY, RELAY_OFF);
|
||||||
|
is_work = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -63,7 +63,6 @@ extern "C"
|
|||||||
const char text_company[] PROGMEM = "LLC AEROTECH";
|
const char text_company[] PROGMEM = "LLC AEROTECH";
|
||||||
const char text_model[] PROGMEM = "ATE0003.000.000";
|
const char text_model[] PROGMEM = "ATE0003.000.000";
|
||||||
const char text_firmware[] PROGMEM = "Firmware v1.0.0";
|
const char text_firmware[] PROGMEM = "Firmware v1.0.0";
|
||||||
// const char text_loading[] PROGMEM = "Loading:";
|
|
||||||
const char text_ac_power[] PROGMEM = "A/C POWER: ";
|
const char text_ac_power[] PROGMEM = "A/C POWER: ";
|
||||||
const char text_component[] PROGMEM = "COMPONENT: ";
|
const char text_component[] PROGMEM = "COMPONENT: ";
|
||||||
|
|
||||||
@@ -74,7 +73,7 @@ extern "C"
|
|||||||
const char component_5_cmm[] PROGMEM = "334612";
|
const char component_5_cmm[] PROGMEM = "334612";
|
||||||
|
|
||||||
const char component_1_line_1[] PROGMEM = "1:RED 2:GREEN";
|
const char component_1_line_1[] PROGMEM = "1:RED 2:GREEN";
|
||||||
const char component_1_line_2[] PROGMEM = "3:BLUE 4:WHITE";
|
const char component_1_line_2[] PROGMEM = "3:ORANG 4:WHITE";
|
||||||
const char component_2_line_1[] PROGMEM = "1:N/A 2:LOGO ";
|
const char component_2_line_1[] PROGMEM = "1:N/A 2:LOGO ";
|
||||||
const char component_2_line_2[] PROGMEM = "3:N/A 4:N/A ";
|
const char component_2_line_2[] PROGMEM = "3:N/A 4:N/A ";
|
||||||
const char component_3_line_1[] PROGMEM = "1:N/A 2:N/A ";
|
const char component_3_line_1[] PROGMEM = "1:N/A 2:N/A ";
|
||||||
|
|||||||
Reference in New Issue
Block a user