This commit is contained in:
2025-10-05 10:44:57 +03:00
parent 1f6866e915
commit 8b46ced5ef

View File

@@ -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));