wip:
This commit is contained in:
		@@ -7,7 +7,6 @@
 | 
			
		||||
#include "ate0003.h"
 | 
			
		||||
 | 
			
		||||
// Must set to #define configMINIMAL_STACK_SIZE 70
 | 
			
		||||
// Must set to #define configCHECK_FOR_STACK_OVERFLOW 1
 | 
			
		||||
 | 
			
		||||
#define DEBUG
 | 
			
		||||
 | 
			
		||||
@@ -51,12 +50,14 @@ 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 bool is_initialized = false; // Normal loading status.
 | 
			
		||||
 | 
			
		||||
volatile static bool is_num1_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 = 150; // Check.
 | 
			
		||||
    encoder_init_config.queue_size = 10;  // Check.
 | 
			
		||||
    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;
 | 
			
		||||
@@ -89,7 +90,7 @@ int main(void)
 | 
			
		||||
    UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
 | 
			
		||||
    stdout = &uart;
 | 
			
		||||
#endif
 | 
			
		||||
    xTaskCreate(system_setup_task, "system_setup", 120, NULL, tskIDLE_PRIORITY, &system_setup_task_handle);
 | 
			
		||||
    xTaskCreate(system_setup_task, "system_setup", 164, NULL, tskIDLE_PRIORITY, &system_setup_task_handle);
 | 
			
		||||
    vTaskStartScheduler();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
@@ -99,7 +100,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 = 150; // Check.
 | 
			
		||||
    //** 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);
 | 
			
		||||
@@ -107,11 +108,10 @@ void system_setup_task(void *pvParameters)
 | 
			
		||||
    //** LED 2 extender init. All LED off. **/
 | 
			
		||||
    pcf8574_init_config.i2c_address = LED2_I2C_ADDRESS;
 | 
			
		||||
    zh_avr_pcf8574_init(&pcf8574_init_config, &led2_handle);
 | 
			
		||||
    zh_avr_pcf8574_write(&led2_handle, 0xFF);
 | 
			
		||||
    //** RELAY extender init. All relay off. DMM relay on. **/
 | 
			
		||||
    pcf8574_init_config.i2c_address = RELAY_I2C_ADDRESS;
 | 
			
		||||
    zh_avr_pcf8574_init(&pcf8574_init_config, &relay_handle);
 | 
			
		||||
    zh_avr_pcf8574_write(&relay_handle, 0xFD);
 | 
			
		||||
    zh_avr_pcf8574_write(&relay_handle, 0x02);
 | 
			
		||||
    //** LCD init. **/
 | 
			
		||||
    pcf8574_init_config.i2c_address = LCD_I2C_ADDRESS;
 | 
			
		||||
    zh_avr_pcf8574_init(&pcf8574_init_config, &lcd_handle);
 | 
			
		||||
@@ -137,20 +137,10 @@ void system_setup_task(void *pvParameters)
 | 
			
		||||
    zh_avr_160x_set_cursor(&lcd_handle, 2, 0);
 | 
			
		||||
    strcpy_P(text_buffer, text_firmware);
 | 
			
		||||
    zh_avr_160x_print_char(&lcd_handle, text_buffer);
 | 
			
		||||
    // zh_avr_160x_set_cursor(&lcd_handle, 3, 0);
 | 
			
		||||
    // strcpy_P(text_buffer, text_loading);
 | 
			
		||||
    // zh_avr_160x_print_char(&lcd_handle, text_buffer);
 | 
			
		||||
    // for (uint8_t i = 0; i <= 100; ++i)
 | 
			
		||||
    // {
 | 
			
		||||
    //     zh_avr_160x_set_cursor(&lcd_handle, 3, 9);
 | 
			
		||||
    //     zh_avr_160x_print_int(&lcd_handle, i);
 | 
			
		||||
    //     zh_avr_160x_print_char(&lcd_handle, "%");
 | 
			
		||||
    //     vTaskDelay(50 / portTICK_PERIOD_MS);
 | 
			
		||||
    // }
 | 
			
		||||
    for (uint8_t i = 0; i <= 100; ++i)
 | 
			
		||||
    for (uint8_t i = 0; i <= 100; i += 10)
 | 
			
		||||
    {
 | 
			
		||||
        zh_avr_160x_print_progress_bar(&lcd_handle, 3, i);
 | 
			
		||||
        vTaskDelay(50 / portTICK_PERIOD_MS);
 | 
			
		||||
        vTaskDelay(100 / portTICK_PERIOD_MS);
 | 
			
		||||
    }
 | 
			
		||||
    //** LCD default text print. **/
 | 
			
		||||
    zh_avr_160x_lcd_clear(&lcd_handle);
 | 
			
		||||
@@ -166,16 +156,13 @@ void system_setup_task(void *pvParameters)
 | 
			
		||||
    //**"ANY" component setup after loading. **/
 | 
			
		||||
    component_setup_function(0);
 | 
			
		||||
    is_initialized = true;
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    printf("System Setup Task Remaining Stack Size %d.\n", uxTaskGetStackHighWaterMark(NULL));
 | 
			
		||||
    printf("Free Heap %d.\n", xPortGetFreeHeapSize());
 | 
			
		||||
#endif
 | 
			
		||||
    vTaskDelete(NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
void vApplicationStackOverflowHook(TaskHandle_t xTask, char *pcTaskName)
 | 
			
		||||
{
 | 
			
		||||
    printf("Task %s Stack Overflow.\n", pcTaskName);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
 | 
			
		||||
{
 | 
			
		||||
    switch (event->gpio_number)
 | 
			
		||||
@@ -187,16 +174,14 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
 | 
			
		||||
            {
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_RED, LED_ON);
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_GREEN, LED_OFF);
 | 
			
		||||
                // zh_avr_pcf8574_write_gpio(&relay_handle, DMM_RELAY, RELAY_ON);
 | 
			
		||||
                // zh_avr_pcf8574_write(&relay_handle, 0xFF);
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&relay_handle, DMM_RELAY, RELAY_ON);
 | 
			
		||||
                is_dmm = false;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_RED, LED_OFF);
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_GREEN, LED_ON);
 | 
			
		||||
                // zh_avr_pcf8574_write_gpio(&relay_handle, DMM_RELAY, RELAY_OFF);
 | 
			
		||||
                // zh_avr_pcf8574_write(&relay_handle, 0x00);
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&relay_handle, DMM_RELAY, RELAY_OFF);
 | 
			
		||||
                is_dmm = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -222,15 +207,27 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
 | 
			
		||||
        }
 | 
			
		||||
        if (event->gpio_level == LOW)
 | 
			
		||||
        {
 | 
			
		||||
            is_work = true;
 | 
			
		||||
            if (is_num1_fixed == true)
 | 
			
		||||
            {
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            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(&relay_handle, L1_RELAY, RELAY_ON);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            is_work = false;
 | 
			
		||||
            if (is_fix == true)
 | 
			
		||||
            {
 | 
			
		||||
                is_num1_fixed = true;
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            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(&relay_handle, L1_RELAY, RELAY_OFF);
 | 
			
		||||
            is_num1_fixed = false;
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
    case NUM2_BUTTON:
 | 
			
		||||
@@ -290,6 +287,10 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
 | 
			
		||||
    default:
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    printf("PCF8574 Interrupt Task Remaining Stack Size %d.\n", uxTaskGetStackHighWaterMark(NULL));
 | 
			
		||||
    printf("Free Heap %d.\n", xPortGetFreeHeapSize());
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void zh_avr_encoder_event_handler(zh_avr_encoder_event_on_isr_t *event)
 | 
			
		||||
@@ -308,6 +309,10 @@ void zh_avr_encoder_event_handler(zh_avr_encoder_event_on_isr_t *event)
 | 
			
		||||
    default:
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    printf("Encoder Interrupt Task Remaining Stack Size %d.\n", uxTaskGetStackHighWaterMark(NULL));
 | 
			
		||||
    printf("Free Heap %d.\n", xPortGetFreeHeapSize());
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ISR(PCINT1_vect)
 | 
			
		||||
@@ -365,21 +370,21 @@ void component_setup_function(uint8_t component)
 | 
			
		||||
    zh_avr_160x_set_cursor(&lcd_handle, 3, 0);
 | 
			
		||||
    strcpy_P(text_buffer, component_line_2[component]);
 | 
			
		||||
    zh_avr_160x_print_char(&lcd_handle, text_buffer);
 | 
			
		||||
    zh_avr_pcf8574_write(&led1_handle, (is_dmm == true) ? (0xF8 & (1 << DMM_LED_GREEN)) : 0xF8 & (1 << DMM_LED_RED));
 | 
			
		||||
    zh_avr_pcf8574_write(&led1_handle, is_dmm == true ? 0xF9 : 0xFA);
 | 
			
		||||
    zh_avr_pcf8574_write(&led2_handle, 0x0F);
 | 
			
		||||
    if ((used_channels & (1 << CHANNEL1)) == CHANNEL1)
 | 
			
		||||
    if ((used_channels & CHANNEL1) == CHANNEL1)
 | 
			
		||||
    {
 | 
			
		||||
        zh_avr_pcf8574_write_gpio(&led1_handle, NUM1_LED_BLUE, LED_ON);
 | 
			
		||||
    }
 | 
			
		||||
    if ((used_channels & (1 << CHANNEL2)) == CHANNEL2)
 | 
			
		||||
    if ((used_channels & CHANNEL2) == CHANNEL2)
 | 
			
		||||
    {
 | 
			
		||||
        zh_avr_pcf8574_write_gpio(&led1_handle, NUM2_LED_BLUE, LED_ON);
 | 
			
		||||
    }
 | 
			
		||||
    if ((used_channels & (1 << CHANNEL3)) == CHANNEL3)
 | 
			
		||||
    if ((used_channels & CHANNEL3) == CHANNEL3)
 | 
			
		||||
    {
 | 
			
		||||
        zh_avr_pcf8574_write_gpio(&led2_handle, NUM3_LED_BLUE, LED_ON);
 | 
			
		||||
    }
 | 
			
		||||
    if ((used_channels & (1 << CHANNEL4)) == CHANNEL4)
 | 
			
		||||
    if ((used_channels & CHANNEL4) == CHANNEL4)
 | 
			
		||||
    {
 | 
			
		||||
        zh_avr_pcf8574_write_gpio(&led2_handle, NUM4_LED_BLUE, LED_ON);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@
 | 
			
		||||
#define LED_OFF HIGH
 | 
			
		||||
#define LED_ON LOW
 | 
			
		||||
 | 
			
		||||
#define RELAY_OFF HIGH
 | 
			
		||||
#define RELAY_ON LOW
 | 
			
		||||
#define RELAY_OFF LOW
 | 
			
		||||
#define RELAY_ON HIGH
 | 
			
		||||
 | 
			
		||||
#define LCD_TEXT_BUFFER 16
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user