void stepper_check_error_signals(void) { if(stepper_tick_counter % 1000 != 0 || stepper_state == STEPPER_STATE_OFF) { return; } const uint16_t external_voltage = stepper_get_external_voltage(); const uint16_t stack_voltage = stepper_get_stack_voltage(); // Under Voltage if external voltage is below minimum voltage (regardless // of stack voltage), or if external voltage is zero and stack velotage is // below minimum voltage if((external_voltage > STEPPER_VOLTAGE_EPSILON && external_voltage < stepper_minimum_voltage) || (external_voltage < STEPPER_VOLTAGE_EPSILON && stack_voltage > STEPPER_VOLTAGE_EPSILON && stack_voltage < stepper_minimum_voltage)) { UnderVoltageSignal uvs = { com_stack_id, TYPE_UNDER_VOLTAGE, sizeof(UnderVoltageSignal), external_voltage < STEPPER_VOLTAGE_EPSILON ? stack_voltage : external_voltage }; send_blocking_with_timeout(&uvs, sizeof(UnderVoltageSignal), com_current); led_on(LED_STD_RED); } else { led_off(LED_STD_RED); } }
void get_stack_input_voltage(const ComType com, const GetStackInputVoltage *data) { GetStackInputVoltageReturn gsivr; gsivr.header = data->header; gsivr.header.length = sizeof(GetStackInputVoltageReturn); gsivr.voltage = stepper_get_stack_voltage(); send_blocking_with_timeout(&gsivr, sizeof(GetStackInputVoltageReturn), com); }
void get_stack_input_voltage(uint8_t com, const GetStackInputVoltage *data) { GetStackInputVoltageReturn gsivr; gsivr.stack_address = data->stack_address; gsivr.type = data->type; gsivr.length = sizeof(GetStackInputVoltageReturn); gsivr.voltage = stepper_get_stack_voltage(); send_blocking_with_timeout(&gsivr, sizeof(GetStackInputVoltageReturn), com); }