wip:
This commit is contained in:
64
src/main.c
64
src/main.c
@@ -10,22 +10,47 @@
|
|||||||
#define HIGH true
|
#define HIGH true
|
||||||
#define LOW false
|
#define LOW false
|
||||||
|
|
||||||
|
#define LED_OFF true
|
||||||
|
#define LED_ON false
|
||||||
|
|
||||||
#define BUTTON_I2C_ADDRESS 0x00
|
#define BUTTON_I2C_ADDRESS 0x00
|
||||||
#define LED1_I2C_ADDRESS 0x00
|
#define LED1_I2C_ADDRESS 0x00
|
||||||
#define LED2_I2C_ADDRESS 0x00
|
#define LED2_I2C_ADDRESS 0x00
|
||||||
#define RELAY_I2C_ADDRESS 0x00
|
#define RELAY_I2C_ADDRESS 0x00
|
||||||
#define LCD_I2C_ADDRESS 0x00
|
#define LCD_I2C_ADDRESS 0x00
|
||||||
|
|
||||||
|
#define GROUND_RELAY 1
|
||||||
|
#define DMM_RELAY 1
|
||||||
|
|
||||||
#define POWER_ENCODER 1
|
#define POWER_ENCODER 1
|
||||||
#define COMPONENT_ENCODER 2
|
#define COMPONENT_ENCODER 2
|
||||||
|
|
||||||
#define DMM_BUTTON 0
|
#define DMM_BUTTON 0 // Connector BT1.
|
||||||
#define FIX_BUTTON 1
|
#define FIX_BUTTON 1 // Connector BT2.
|
||||||
#define NUM1_BUTTON 2
|
#define NUM1_BUTTON 2
|
||||||
#define NUM2_BUTTON 3
|
#define NUM2_BUTTON 3
|
||||||
#define NUM3_BUTTON 4
|
#define NUM3_BUTTON 4
|
||||||
#define NUM4_BUTTON 5
|
#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
|
#ifdef DEBUG
|
||||||
#define BAUD_RATE 9600
|
#define BAUD_RATE 9600
|
||||||
#define BAUD_PRESCALE (F_CPU / 16 / BAUD_RATE - 1)
|
#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_work = false;
|
||||||
volatile bool is_dmm = false;
|
volatile bool is_dmm = false;
|
||||||
volatile bool is_fix = false;
|
volatile bool is_fix = false;
|
||||||
|
volatile uint8_t component_num = 0;
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
@@ -74,18 +100,18 @@ int main(void)
|
|||||||
zh_avr_encoder_set(&power_encoder_handle, 100);
|
zh_avr_encoder_set(&power_encoder_handle, 100);
|
||||||
encoder_init_config.a_gpio_number = PORTC2;
|
encoder_init_config.a_gpio_number = PORTC2;
|
||||||
encoder_init_config.b_gpio_number = PORTC3;
|
encoder_init_config.b_gpio_number = PORTC3;
|
||||||
encoder_init_config.encoder_min_value = 1;
|
encoder_init_config.encoder_min_value = 0;
|
||||||
encoder_init_config.encoder_max_value = 100; // Check.
|
encoder_init_config.encoder_max_value = (sizeof(component) / sizeof(component[0])) - 1;
|
||||||
encoder_init_config.encoder_number = COMPONENT_ENCODER;
|
encoder_init_config.encoder_number = COMPONENT_ENCODER;
|
||||||
zh_avr_encoder_init(&encoder_init_config, &component_encoder_handle);
|
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 **/
|
//** AC dimmer init **/
|
||||||
zh_avr_ac_dimmer_init_config_t ac_dimmer_init_config = ZH_AVR_AC_DIMMER_INIT_CONFIG_DEFAULT();
|
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.ac_dimmer_frequency = ZH_50HZ;
|
||||||
ac_dimmer_init_config.zero_cross_port = AVR_PORTD;
|
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_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);
|
zh_avr_ac_dimmer_init(&ac_dimmer_init_config);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
UBRR0H = (BAUD_PRESCALE >> 8);
|
UBRR0H = (BAUD_PRESCALE >> 8);
|
||||||
@@ -95,7 +121,7 @@ int main(void)
|
|||||||
stdout = &uart;
|
stdout = &uart;
|
||||||
xTaskCreate(system_setup_task, "system_setup", 107, NULL, tskIDLE_PRIORITY, &system_setup_task_handle);
|
xTaskCreate(system_setup_task, "system_setup", 107, NULL, tskIDLE_PRIORITY, &system_setup_task_handle);
|
||||||
#else
|
#else
|
||||||
xTaskCreate(system_setup_task, NULL, 107, NULL, tskIDLE_PRIORITY, NULL);
|
xTaskCreate(system_setup_task, NULL, 150, NULL, tskIDLE_PRIORITY, NULL);
|
||||||
#endif
|
#endif
|
||||||
vTaskStartScheduler();
|
vTaskStartScheduler();
|
||||||
return 0;
|
return 0;
|
||||||
@@ -105,6 +131,7 @@ 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 = 255;
|
||||||
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, 0xFF);
|
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)
|
if (is_dmm == true)
|
||||||
{
|
{
|
||||||
// DMM Bypas Relay ON.
|
zh_avr_pcf8574_write_gpio(&relay_handle, DMM_RELAY, HIGH);
|
||||||
// DMM LED Red ON.
|
zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_RED, LED_ON);
|
||||||
// DMM LED Green OFF.
|
zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_GRN, LED_OFF);
|
||||||
is_dmm = false;
|
is_dmm = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// DMM Bypas Relay OFF.
|
zh_avr_pcf8574_write_gpio(&relay_handle, DMM_RELAY, LOW);
|
||||||
// DMM LED Red OFF.
|
zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_RED, LED_OFF);
|
||||||
// DMM LED Green ON.
|
zh_avr_pcf8574_write_gpio(&led1_handle, DMM_LED_GRN, LED_ON);
|
||||||
is_dmm = true;
|
is_dmm = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -182,14 +209,14 @@ void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event)
|
|||||||
case FIX_BUTTON:
|
case FIX_BUTTON:
|
||||||
if (event->gpio_level == LOW)
|
if (event->gpio_level == LOW)
|
||||||
{
|
{
|
||||||
// Fix LED Red OFF.
|
zh_avr_pcf8574_write_gpio(&led1_handle, FIX_LED_BLUE, LED_OFF);
|
||||||
// Fix LED Green ON.
|
zh_avr_pcf8574_write_gpio(&led1_handle, FIX_LED_GRN, LED_ON);
|
||||||
is_fix = true;
|
is_fix = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Fix LED Red ON.
|
zh_avr_pcf8574_write_gpio(&led1_handle, FIX_LED_BLUE, LED_ON);
|
||||||
// Fix LED Green OFF.
|
zh_avr_pcf8574_write_gpio(&led1_handle, FIX_LED_GRN, LED_OFF);
|
||||||
is_fix = false;
|
is_fix = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -254,6 +281,7 @@ ISR(PCINT1_vect)
|
|||||||
ISR(PCINT2_vect)
|
ISR(PCINT2_vect)
|
||||||
{
|
{
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
|
zh_avr_ac_dimmer_isr_handler();
|
||||||
if (zh_avr_pcf8574_isr_handler() == pdTRUE)
|
if (zh_avr_pcf8574_isr_handler() == pdTRUE)
|
||||||
{
|
{
|
||||||
xHigherPriorityTaskWoken = pdTRUE;
|
xHigherPriorityTaskWoken = pdTRUE;
|
||||||
|
Reference in New Issue
Block a user