Ejemplo n.º 1
0
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);
}
Ejemplo n.º 3
0
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);
}