rusefi-1/firmware/hw_layer/stepper.h

43 lines
1.0 KiB
C
Raw Normal View History

2015-07-10 06:01:56 -07:00
/**
* @file stepper.h
*
* @date Dec 24, 2014
2020-01-13 18:57:43 -08:00
* @author Andrey Belomutskiy, (c) 2012-2020
2015-07-10 06:01:56 -07:00
*/
#ifndef STEPPER_H_
#define STEPPER_H_
2018-09-16 19:26:57 -07:00
#include "global.h"
2019-03-29 06:11:13 -07:00
#include "efi_gpio.h"
#include "backup_ram.h"
2020-01-08 22:03:23 -08:00
#include "thread_controller.h"
2015-07-10 06:01:56 -07:00
2020-01-08 22:03:23 -08:00
class StepperMotor final : private ThreadController<UTILITY_THREAD_STACK_SIZE> {
2015-07-10 06:01:56 -07:00
public:
StepperMotor();
2020-01-08 22:03:23 -08:00
2017-06-13 06:28:05 -07:00
void initialize(brain_pin_e stepPin, brain_pin_e directionPin, pin_output_mode_e directionPinMode, float reactionTime, int totalSteps,
brain_pin_e enablePin, pin_output_mode_e enablePinMode, Logging *sharedLogger);
2020-01-08 22:03:23 -08:00
2015-07-10 06:01:56 -07:00
void pulse();
void setTargetPosition(int targetPosition);
int getTargetPosition() const;
void setDirection(bool isIncrementing);
2015-07-10 06:01:56 -07:00
OutputPin directionPin, stepPin, enablePin;
2020-01-08 22:03:23 -08:00
int m_currentPosition = 0;
bool m_currentDirection = false;
float m_reactionTime = 0;
int m_totalSteps = 0;
protected:
void ThreadTask() override;
2015-07-10 06:01:56 -07:00
private:
2020-01-08 22:03:23 -08:00
int m_targetPosition = 0;
pin_output_mode_e directionPinMode, stepPinMode, enablePinMode;
2015-07-10 06:01:56 -07:00
};
#endif /* STEPPER_H_ */