30 :
Actuator(axis), pins(pins), pins_count(pins_count),
31 active_high(active_high) {
38 log->
error(
"failed to create mutex");
41 log->
error(
"failed to create stepper timer task");
67 uint16_t delay_ms = 0;
68 bool first_time =
true;
74 ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
76 if (ulTaskNotifyTake(pdTRUE, 0) or first_time) {
88 delay_ms = 65536 -
speed;
95 vTaskDelay(delay_ms / portTICK_PERIOD_MS);
102 (
static_cast<Stepper *
>(_this))->timer_task();
static void _timer_task_wrapper(void *_this)
wrapper for timer_task(), as FreeRTOS only wants to create tasks from static functions ...
void timer_task()
task to set the next phase on time.
const std::map< err_t, char * > err_to_char
Stepper(uint8_t *pins, size_t pins_count, movement::axis_mask_t axis, bool active_high)
Stepper motor.
virtual err_t init_pin(uint8_t pin_nr)=0
init single pin as output
TaskHandle_t timer_task_handle
err_t clear_pins()
reset the pins back to initial state (run when program is finished)
movement::axis_mask_t asked_direction
Actuator(axis_mask_t axis=axis_mask_t::NONE)
Actuator object, used by the movement module for vehicle movement.
err_t init_pins()
initialize the pins for output
void do_steps(int32_t steps)
Do an x number of steps.
err_t do_step(movement::axis_mask_t direction)
Do a single step in a direction.
err_t _set(movement::axis_mask_t axisMask, int16_t speed) override
Implementation of axis movement, this function is called from set(...).
virtual err_t clear_pin(uint8_t pin_nr)
clear single pin after program is finished
err_t startup_error
error when constructing gets put here, read before usage.
int error(const char *format,...)
log error message
SemaphoreHandle_t asked_set_mutex
void set_speed(int16_t speed)
Set speed of the stepper motor.
virtual err_t set_pin(uint8_t pin_nr, bool value)=0
set pin level high or low
uint8_t get_pin(movement::axis_mask_t direction, uint8_t n=0)
pop pin from circular array buffer.