From 8b46ced5efdad1a62e389999d55635dd3fa7f7f3 Mon Sep 17 00:00:00 2001 From: Alexey Zholtikov Date: Sun, 5 Oct 2025 10:44:57 +0300 Subject: [PATCH] wip: --- src/ate0003.c | 72 ++++++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/src/ate0003.c b/src/ate0003.c index b822ce1..ae7c1bc 100644 --- a/src/ate0003.c +++ b/src/ate0003.c @@ -7,8 +7,13 @@ #include "ate0003.h" // Must set to #define configMINIMAL_STACK_SIZE 70 +// Must set to #define configTOTAL_HEAP_SIZE 1408 -#define DEBUG +// #define DEBUG + +#define SYSTEM_SETUP_STACK 170 +#define ENCODER_STACK 166 +#define PCF8574_STACK 109 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}; @@ -51,38 +56,12 @@ volatile static uint8_t used_channels = 0; // Permitted channels. Depends of t 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_num2_fixed = false; // NUM 1 button FIX status. +volatile static bool is_num3_fixed = false; // NUM 1 button FIX status. +volatile static bool is_num4_fixed = false; // NUM 1 button FIX status. int main(void) { - //** Encoders init **/ - zh_avr_encoder_init_config_t encoder_init_config = ZH_AVR_ENCODER_INIT_CONFIG_DEFAULT(); - encoder_init_config.stack_size = 181; // Check. - // encoder_init_config.queue_size = 10; // Check. - encoder_init_config.gpio_port = AVR_PORTC; - encoder_init_config.a_gpio_number = PORTC0; - encoder_init_config.b_gpio_number = PORTC1; - encoder_init_config.encoder_min_value = 0; - encoder_init_config.encoder_max_value = 100; - encoder_init_config.encoder_step = 5; - encoder_init_config.encoder_number = POWER_ENCODER; - zh_avr_encoder_init(&encoder_init_config, &power_encoder_handle); - zh_avr_encoder_set(&power_encoder_handle, 100); - encoder_init_config.a_gpio_number = PORTC2; - encoder_init_config.b_gpio_number = PORTC3; - encoder_init_config.encoder_min_value = 0; - encoder_init_config.encoder_max_value = (sizeof(component_cmm) / sizeof(component_cmm[0])) - 1; - encoder_init_config.encoder_step = 1; - encoder_init_config.encoder_number = COMPONENT_ENCODER; - zh_avr_encoder_init(&encoder_init_config, &component_encoder_handle); - zh_avr_encoder_set(&component_encoder_handle, 0); - //** AC dimmer init **/ - 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_60HZ; - ac_dimmer_init_config.zero_cross_port = AVR_PORTD; - ac_dimmer_init_config.zero_cross_gpio = PORTD3; - ac_dimmer_init_config.triac_port = AVR_PORTD; - ac_dimmer_init_config.triac_gpio = PORTD4; - zh_avr_ac_dimmer_init(&ac_dimmer_init_config); #ifdef DEBUG UBRR0H = (BAUD_PRESCALE >> 8); UBRR0L = BAUD_PRESCALE; @@ -90,7 +69,7 @@ int main(void) UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); stdout = &uart; #endif - xTaskCreate(system_setup_task, "system_setup", 164, NULL, tskIDLE_PRIORITY, &system_setup_task_handle); + xTaskCreate(system_setup_task, "system_setup", SYSTEM_SETUP_STACK, NULL, tskIDLE_PRIORITY, &system_setup_task_handle); vTaskStartScheduler(); return 0; } @@ -100,7 +79,7 @@ void system_setup_task(void *pvParameters) char text_buffer[LCD_TEXT_BUFFER]; zh_avr_i2c_master_init(false); zh_avr_pcf8574_init_config_t pcf8574_init_config = ZH_AVR_PCF8574_INIT_CONFIG_DEFAULT(); - // pcf8574_init_config.stack_size = 150; // Check. + pcf8574_init_config.stack_size = PCF8574_STACK; //** LED 1 extender init. All LED off. DMM red on. FIX blue on. **/ pcf8574_init_config.i2c_address = LED1_I2C_ADDRESS; zh_avr_pcf8574_init(&pcf8574_init_config, &led1_handle); @@ -155,6 +134,35 @@ void system_setup_task(void *pvParameters) zh_avr_160x_print_char(&lcd_handle, text_buffer); //**"ANY" component setup after loading. **/ component_setup_function(0); + //** Encoders init **/ + zh_avr_encoder_init_config_t encoder_init_config = ZH_AVR_ENCODER_INIT_CONFIG_DEFAULT(); + encoder_init_config.stack_size = ENCODER_STACK; + encoder_init_config.queue_size = 3; + encoder_init_config.gpio_port = AVR_PORTC; + encoder_init_config.a_gpio_number = PORTC0; + encoder_init_config.b_gpio_number = PORTC1; + encoder_init_config.encoder_min_value = 0; + encoder_init_config.encoder_max_value = 100; + encoder_init_config.encoder_step = 5; + encoder_init_config.encoder_number = POWER_ENCODER; + zh_avr_encoder_init(&encoder_init_config, &power_encoder_handle); + zh_avr_encoder_set(&power_encoder_handle, 100); + encoder_init_config.a_gpio_number = PORTC2; + encoder_init_config.b_gpio_number = PORTC3; + encoder_init_config.encoder_min_value = 0; + encoder_init_config.encoder_max_value = (sizeof(component_cmm) / sizeof(component_cmm[0])) - 1; + encoder_init_config.encoder_step = 1; + encoder_init_config.encoder_number = COMPONENT_ENCODER; + zh_avr_encoder_init(&encoder_init_config, &component_encoder_handle); + zh_avr_encoder_set(&component_encoder_handle, 0); + //** AC dimmer init **/ + 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_60HZ; + ac_dimmer_init_config.zero_cross_port = AVR_PORTD; + ac_dimmer_init_config.zero_cross_gpio = PORTD3; + ac_dimmer_init_config.triac_port = AVR_PORTD; + ac_dimmer_init_config.triac_gpio = PORTD4; + zh_avr_ac_dimmer_init(&ac_dimmer_init_config); is_initialized = true; #ifdef DEBUG printf("System Setup Task Remaining Stack Size %d.\n", uxTaskGetStackHighWaterMark(NULL));