Files
Leo-ElixirLights/components/movement/include/StepperDrv8833.hpp
T

42 lines
1.1 KiB
C++

/**
* @file StepperDrv8833.hpp
* @author Gustice
* @brief Software-driver for Stepper driver DRV8833
* @details https://www.ti.com/lit/ds/symlink/drv8833.pdf?ts=1726872460958&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252Fde-de%252FDRV8833
*
* @copyright Copyright (c) 2024
*/
#pragma once
#include "stepperDrv.hpp"
#include <array>
#include <vector>
class StepperDriverDrv8833 : public StepperDriver {
public:
struct Pins {
ledc_timer_t timer;
std::array<ledc_channel_t, 4> channels;
std::array<gpio_num_t, 4> pins;
};
StepperDriverDrv8833(Pins pins, int resolution);
StepCplx fullStep(int8_t cnt) override;
StepCplx step(int8_t cnt) override;
StepCplx setPos(uint8_t pos) override;
uint8_t getSubPos() {
return _position;
}
private:
PwmPort _pwmA1;
PwmPort _pwmA2;
PwmPort _pwmB1;
PwmPort _pwmB2;
std::vector<uint8_t> _outA1;
std::vector<uint8_t> _outA2;
std::vector<uint8_t> _outB1;
std::vector<uint8_t> _outB2;
void setOutput(uint8_t pos) override;
};