diff --git a/Control/firmware/HendiCtrl/main.c b/Control/firmware/HendiCtrl/main.c index fd91033..6c13220 100755 --- a/Control/firmware/HendiCtrl/main.c +++ b/Control/firmware/HendiCtrl/main.c @@ -42,14 +42,23 @@ FILE uart_file = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); -int16_t adc_poti = 0; -int16_t adc_swin = 0; -int sw_in_last = 0; size_t cmdStrSize = 0; Fifo messageFifo; -uint16_t g_power = 0; int g_debug = 0; -int g_switch = 0; + +// Switch IN +int16_t g_switch_in_digits = 0; +int g_switch_in = 0; +int g_switch_in_last = 0; + +// Switch OUT +int g_switch_out = 0; + +// Poti IN +uint16_t g_poti_in_digits = 0; + +// Poti OUT +uint16_t g_poti_out_digits = 0; typedef enum _eState_t { @@ -72,7 +81,7 @@ typedef enum _eSwitch void setSwitch(int on) { - g_switch = on; + g_switch_out = on; const char *sw_str[2] = {"OFF", "ON"}; PRINT_DEBUG("Set switch to %s\n", sw_str[on != 0]); portSet(PwrSwitch_out, on != 0); @@ -84,12 +93,12 @@ typedef enum _ePower PowerMax = 0 } Power; -void setPower(uint16_t power) +void setPower(uint16_t digits) { - g_power = power; - PRINT_DEBUG("Set Power to %u\n", power); + g_poti_out_digits = digits; + PRINT_DEBUG("Set Power to %u digits\n", digits); uint8_t dac_cmd[] = {0x00, 0x00}; // 6.2 Write Volatile Memory (C2:C0 = ‘010’) - size_t res = MCP47x6_write_volatile_dac(power, dac_cmd, sizeof(dac_cmd)); + size_t res = MCP47x6_write_volatile_dac(digits, dac_cmd, sizeof(dac_cmd)); i2c_send(0x60, I2C_WRITE, dac_cmd, res); } @@ -157,7 +166,7 @@ int main(void) if ((*pArgs) == '?') { pArgs++; - PRINT_ANSWER("OK:%04u", g_power); + PRINT_ANSWER("OK:%04u", g_poti_out_digits); } else { @@ -169,7 +178,7 @@ int main(void) if (state == StateRemote) { setPower(arg); - PRINT_ANSWER("OK:%04u", g_power); + PRINT_ANSWER("OK:%04u", g_poti_out_digits); } } } @@ -181,7 +190,7 @@ int main(void) if ((*pArgs) == '?') { pArgs++; - PRINT_ANSWER("OK:%u", g_switch); + PRINT_ANSWER("OK:%u", g_switch_out); } else { @@ -194,7 +203,7 @@ int main(void) if (state == StateRemote) { setSwitch(arg); - PRINT_ANSWER("OK:%u", g_switch); + PRINT_ANSWER("OK:%u", g_switch_out); } } } @@ -308,18 +317,19 @@ int main(void) int16_t adc_curr = (int16_t)msg.m.adc.data; if (adc_ch == 0) { - if (((adc_curr - adc_poti) <= -(int16_t)POTI_HSYTERSE) || ((adc_curr - adc_poti) >= (int16_t)POTI_HSYTERSE)) + if (((adc_curr - (int16_t)g_poti_in_digits) <= -(int16_t)POTI_HSYTERSE) || ((adc_curr - (int16_t)g_poti_in_digits) >= (int16_t)POTI_HSYTERSE)) { if (state == StateNormal) { setPower(adc_curr << 2); } - adc_poti = adc_curr; + g_poti_in_digits = (uint16_t)adc_curr; } } if (adc_ch == 2) { - adc_swin = adc_curr; + g_switch_in_digits = adc_curr; + g_switch_in = (int)(g_switch_in_digits > 512); } } break; @@ -365,11 +375,10 @@ int main(void) case TIMER_ADC: { timer_start(timer_id, TIMER_SW_DELAY_MS(50)); - int sw_in = adc_swin > 512; - if (sw_in != sw_in_last) + if (g_switch_in != g_switch_in_last) { - PRINT_DEBUG ("PwrSwitch_in = %d\n", sw_in); - if (sw_in == 0) + PRINT_DEBUG ("PwrSwitch_in = %d\n", g_switch_in); + if (g_switch_in == 0) { if (state == StateError || state == StateRemote) { @@ -378,7 +387,7 @@ int main(void) } } } - sw_in_last = sw_in; + g_switch_in_last = g_switch_in; adc_enqueue_conversion(0); adc_enqueue_conversion(2); }