wip:
This commit is contained in:
		
							
								
								
									
										64
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								src/main.c
									
									
									
									
									
								
							@@ -10,22 +10,47 @@
 | 
			
		||||
#define HIGH true
 | 
			
		||||
#define LOW false
 | 
			
		||||
 | 
			
		||||
#define LED_OFF true
 | 
			
		||||
#define LED_ON false
 | 
			
		||||
 | 
			
		||||
#define BUTTON_I2C_ADDRESS 0x00
 | 
			
		||||
#define LED1_I2C_ADDRESS 0x00
 | 
			
		||||
#define LED2_I2C_ADDRESS 0x00
 | 
			
		||||
#define RELAY_I2C_ADDRESS 0x00
 | 
			
		||||
#define LCD_I2C_ADDRESS 0x00
 | 
			
		||||
 | 
			
		||||
#define GROUND_RELAY 1
 | 
			
		||||
#define DMM_RELAY 1
 | 
			
		||||
 | 
			
		||||
#define POWER_ENCODER 1
 | 
			
		||||
#define COMPONENT_ENCODER 2
 | 
			
		||||
 | 
			
		||||
#define DMM_BUTTON 0
 | 
			
		||||
#define FIX_BUTTON 1
 | 
			
		||||
#define DMM_BUTTON 0 // Connector BT1.
 | 
			
		||||
#define FIX_BUTTON 1 // Connector BT2.
 | 
			
		||||
#define NUM1_BUTTON 2
 | 
			
		||||
#define NUM2_BUTTON 3
 | 
			
		||||
#define NUM3_BUTTON 4
 | 
			
		||||
#define NUM4_BUTTON 5
 | 
			
		||||
 | 
			
		||||
#define DMM_LED_RED 0  // Connector LE1. 2 PIN.
 | 
			
		||||
#define DMM_LED_GRN 1  // Connector LE1. 1 PIN.
 | 
			
		||||
#define FIX_LED_BLUE 2 // Connector LE2. 2 PIN.
 | 
			
		||||
#define FIX_LED_GRN 3  // Connector LE2. 1 PIN.
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
    char *cmm;
 | 
			
		||||
    uint8_t channel_1;
 | 
			
		||||
    uint8_t channel_2;
 | 
			
		||||
    uint8_t channel_3;
 | 
			
		||||
    uint8_t channel_4;
 | 
			
		||||
} component_t;
 | 
			
		||||
 | 
			
		||||
const component_t component[] = {
 | 
			
		||||
    {"ANY", 1, 1, 1, 1},
 | 
			
		||||
    {"252525", 1, 0, 0, 0},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
#define BAUD_RATE 9600
 | 
			
		||||
#define BAUD_PRESCALE (F_CPU / 16 / BAUD_RATE - 1)
 | 
			
		||||
@@ -59,6 +84,7 @@ zh_avr_encoder_handle_t component_encoder_handle = {0};
 | 
			
		||||
volatile bool is_work = false;
 | 
			
		||||
volatile bool is_dmm = false;
 | 
			
		||||
volatile bool is_fix = false;
 | 
			
		||||
volatile uint8_t component_num = 0;
 | 
			
		||||
 | 
			
		||||
int main(void)
 | 
			
		||||
{
 | 
			
		||||
@@ -74,18 +100,18 @@ int main(void)
 | 
			
		||||
    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 = 1;
 | 
			
		||||
    encoder_init_config.encoder_max_value = 100; // Check.
 | 
			
		||||
    encoder_init_config.encoder_min_value = 0;
 | 
			
		||||
    encoder_init_config.encoder_max_value = (sizeof(component) / sizeof(component[0])) - 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, 1);
 | 
			
		||||
    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_50HZ;
 | 
			
		||||
    ac_dimmer_init_config.zero_cross_port = AVR_PORTD;
 | 
			
		||||
    ac_dimmer_init_config.zero_cross_gpio = PORTD2;
 | 
			
		||||
    ac_dimmer_init_config.zero_cross_gpio = PORTD3;
 | 
			
		||||
    ac_dimmer_init_config.triac_port = AVR_PORTD;
 | 
			
		||||
    ac_dimmer_init_config.triac_gpio = PORTD3;
 | 
			
		||||
    ac_dimmer_init_config.triac_gpio = PORTD4;
 | 
			
		||||
    zh_avr_ac_dimmer_init(&ac_dimmer_init_config);
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    UBRR0H = (BAUD_PRESCALE >> 8);
 | 
			
		||||
@@ -95,7 +121,7 @@ int main(void)
 | 
			
		||||
    stdout = &uart;
 | 
			
		||||
    xTaskCreate(system_setup_task, "system_setup", 107, NULL, tskIDLE_PRIORITY, &system_setup_task_handle);
 | 
			
		||||
#else
 | 
			
		||||
    xTaskCreate(system_setup_task, NULL, 107, NULL, tskIDLE_PRIORITY, NULL);
 | 
			
		||||
    xTaskCreate(system_setup_task, NULL, 150, NULL, tskIDLE_PRIORITY, NULL);
 | 
			
		||||
#endif
 | 
			
		||||
    vTaskStartScheduler();
 | 
			
		||||
    return 0;
 | 
			
		||||
@@ -105,6 +131,7 @@ void system_setup_task(void *pvParameters)
 | 
			
		||||
{
 | 
			
		||||
    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 = 255;
 | 
			
		||||
    pcf8574_init_config.i2c_address = LED1_I2C_ADDRESS;
 | 
			
		||||
    zh_avr_pcf8574_init(&pcf8574_init_config, &led1_handle);
 | 
			
		||||
    zh_avr_pcf8574_write(&led1_handle, 0xFF);
 | 
			
		||||
@@ -165,16 +192,16 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
 | 
			
		||||
        {
 | 
			
		||||
            if (is_dmm == true)
 | 
			
		||||
            {
 | 
			
		||||
                // DMM Bypas Relay ON.
 | 
			
		||||
                // DMM LED Red ON.
 | 
			
		||||
                // DMM LED Green OFF.
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&relay_handle, DMM_RELAY, HIGH);
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_RED, LED_ON);
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_GRN, LED_OFF);
 | 
			
		||||
                is_dmm = false;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                // DMM Bypas Relay OFF.
 | 
			
		||||
                // DMM LED Red OFF.
 | 
			
		||||
                // DMM LED Green ON.
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&relay_handle, DMM_RELAY, LOW);
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_RED, LED_OFF);
 | 
			
		||||
                zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_GRN, LED_ON);
 | 
			
		||||
                is_dmm = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -182,14 +209,14 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
 | 
			
		||||
    case FIX_BUTTON:
 | 
			
		||||
        if (event->gpio_level == LOW)
 | 
			
		||||
        {
 | 
			
		||||
            // Fix LED Red OFF.
 | 
			
		||||
            // Fix LED Green ON.
 | 
			
		||||
            zh_avr_pcf8574_write_gpio(&led1_handle, FIX_LED_BLUE, LED_OFF);
 | 
			
		||||
            zh_avr_pcf8574_write_gpio(&led1_handle, FIX_LED_GRN, LED_ON);
 | 
			
		||||
            is_fix = true;
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            // Fix LED Red ON.
 | 
			
		||||
            // Fix LED Green OFF.
 | 
			
		||||
            zh_avr_pcf8574_write_gpio(&led1_handle, FIX_LED_BLUE, LED_ON);
 | 
			
		||||
            zh_avr_pcf8574_write_gpio(&led1_handle, FIX_LED_GRN, LED_OFF);
 | 
			
		||||
            is_fix = false;
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
@@ -254,6 +281,7 @@ ISR(PCINT1_vect)
 | 
			
		||||
ISR(PCINT2_vect)
 | 
			
		||||
{
 | 
			
		||||
    BaseType_t xHigherPriorityTaskWoken = pdFALSE;
 | 
			
		||||
    zh_avr_ac_dimmer_isr_handler();
 | 
			
		||||
    if (zh_avr_pcf8574_isr_handler() == pdTRUE)
 | 
			
		||||
    {
 | 
			
		||||
        xHigherPriorityTaskWoken = pdTRUE;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user