This commit is contained in:
2025-10-05 15:52:05 +03:00
parent daff1f6d24
commit 5b22dff0d5

View File

@@ -11,7 +11,7 @@
// #define DEBUG // Must set to #define configTOTAL_HEAP_SIZE 1408 and #define configCHECK_FOR_STACK_OVERFLOW 1. // #define DEBUG // Must set to #define configTOTAL_HEAP_SIZE 1408 and #define configCHECK_FOR_STACK_OVERFLOW 1.
#define SYSTEM_SETUP_STACK 170 #define SYSTEM_SETUP_STACK 170
#define ENCODER_STACK 170 #define ENCODER_STACK 190
#define PCF8574_STACK 110 #define PCF8574_STACK 110
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};
@@ -87,17 +87,18 @@ void system_setup_task(void *pvParameters)
zh_avr_i2c_master_init(false); zh_avr_i2c_master_init(false);
zh_avr_pcf8574_init_config_t pcf8574_init_config = ZH_AVR_PCF8574_INIT_CONFIG_DEFAULT(); zh_avr_pcf8574_init_config_t pcf8574_init_config = ZH_AVR_PCF8574_INIT_CONFIG_DEFAULT();
pcf8574_init_config.stack_size = PCF8574_STACK; pcf8574_init_config.stack_size = PCF8574_STACK;
//** LED 1 extender init. All LED off. DMM red on. FIX blue on. **/ //** LED 1 extender init. **/
pcf8574_init_config.i2c_address = LED1_I2C_ADDRESS; pcf8574_init_config.i2c_address = LED1_I2C_ADDRESS;
zh_avr_pcf8574_init(&pcf8574_init_config, &led1_handle); zh_avr_pcf8574_init(&pcf8574_init_config, &led1_handle);
zh_avr_pcf8574_write(&led1_handle, 0xFA); zh_avr_pcf8574_write(&led1_handle, 0xFF);
//** LED 2 extender init. All LED off. **/ //** LED 2 extender init. **/
pcf8574_init_config.i2c_address = LED2_I2C_ADDRESS; pcf8574_init_config.i2c_address = LED2_I2C_ADDRESS;
zh_avr_pcf8574_init(&pcf8574_init_config, &led2_handle); zh_avr_pcf8574_init(&pcf8574_init_config, &led2_handle);
//** RELAY extender init. All relay off. DMM relay on. **/ zh_avr_pcf8574_write(&led2_handle, 0xFF);
//** RELAY extender init. **/
pcf8574_init_config.i2c_address = RELAY_I2C_ADDRESS; pcf8574_init_config.i2c_address = RELAY_I2C_ADDRESS;
zh_avr_pcf8574_init(&pcf8574_init_config, &relay_handle); zh_avr_pcf8574_init(&pcf8574_init_config, &relay_handle);
zh_avr_pcf8574_write(&relay_handle, 0x02); zh_avr_pcf8574_write(&relay_handle, 0x00);
//** LCD init. **/ //** LCD init. **/
pcf8574_init_config.i2c_address = LCD_I2C_ADDRESS; pcf8574_init_config.i2c_address = LCD_I2C_ADDRESS;
zh_avr_pcf8574_init(&pcf8574_init_config, &lcd_handle); zh_avr_pcf8574_init(&pcf8574_init_config, &lcd_handle);
@@ -140,6 +141,9 @@ void system_setup_task(void *pvParameters)
strcpy_P(text_buffer, text_component); strcpy_P(text_buffer, text_component);
zh_avr_160x_print_char(&lcd_handle, text_buffer); zh_avr_160x_print_char(&lcd_handle, text_buffer);
//**"ANY" component setup after loading. **/ //**"ANY" component setup after loading. **/
zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_RED, LED_ON);
zh_avr_pcf8574_write_gpio(&led1_handle, FIX_LED_BLUE, LED_ON);
zh_avr_pcf8574_write_gpio(&relay_handle, DMM_RELAY, RELAY_ON);
component_setup_function(0); component_setup_function(0);
//** Encoders init **/ //** Encoders init **/
zh_avr_encoder_init_config_t encoder_init_config = ZH_AVR_ENCODER_INIT_CONFIG_DEFAULT(); zh_avr_encoder_init_config_t encoder_init_config = ZH_AVR_ENCODER_INIT_CONFIG_DEFAULT();
@@ -248,15 +252,27 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
} }
if (event->gpio_level == LOW) if (event->gpio_level == LOW)
{ {
is_work = true;
if (is_num2_fixed == true)
{
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); zh_avr_pcf8574_write_gpio(&relay_handle, L2_RELAY, RELAY_ON);
} }
else else
{ {
is_work = false;
if (is_fix == true)
{
is_num2_fixed = true;
break;
}
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_pcf8574_write_gpio(&relay_handle, L2_RELAY, RELAY_OFF); zh_avr_pcf8574_write_gpio(&relay_handle, L2_RELAY, RELAY_OFF);
is_num2_fixed = false;
} }
break; break;
case NUM3_BUTTON: case NUM3_BUTTON:
@@ -266,15 +282,27 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
} }
if (event->gpio_level == LOW) if (event->gpio_level == LOW)
{ {
is_work = true;
if (is_num3_fixed == true)
{
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); zh_avr_pcf8574_write_gpio(&relay_handle, L3_RELAY, RELAY_ON);
} }
else else
{ {
is_work = false;
if (is_fix == true)
{
is_num3_fixed = true;
break;
}
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); zh_avr_pcf8574_write_gpio(&relay_handle, L3_RELAY, RELAY_OFF);
is_num3_fixed = false;
} }
break; break;
case NUM4_BUTTON: case NUM4_BUTTON:
@@ -284,15 +312,27 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
} }
if (event->gpio_level == LOW) if (event->gpio_level == LOW)
{ {
is_work = true;
if (is_num4_fixed == true)
{
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); zh_avr_pcf8574_write_gpio(&relay_handle, L4_RELAY, RELAY_ON);
} }
else else
{ {
is_work = false;
if (is_fix == true)
{
is_num4_fixed = true;
break;
}
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); zh_avr_pcf8574_write_gpio(&relay_handle, L4_RELAY, RELAY_OFF);
is_num4_fixed = false;
} }
break; break;
default: default: