#ifndef STEPGEN #define STEPGEN #include class StepGen { private: volatile uint8_t timerIsRunning; volatile int32_t timerStepPosition; volatile int32_t timerStepDirection; volatile int32_t timerStepPositionAtEnd; volatile int32_t timerNewEndStepPosition; volatile uint32_t timerNewCycleTime; volatile double_t actualPosition; volatile double_t requestedPosition; volatile uint8_t enabled; HardwareTimer *MyTim; HardwareTimer *MyTim2; uint16_t stepsPerMM; uint8_t dirPin; PinName stepPin; uint32_t timerChan; const uint32_t maxFreq = 100000; volatile uint32_t prevFreq1 = 0; volatile uint32_t prevFreq2 = 0; public: static uint32_t sync0CycleTime; volatile uint32_t pwmCycleTime; StepGen(TIM_TypeDef *Timer, uint32_t timerChannel, PinName stepPin, uint8_t dirPin, void irq(void)); void reqPos(double_t pos); double reqPos(); void actPos(double_t pos); double actPos(); void handleStepper(void); void timerCB(); void setScale(int16_t spm); void enable(uint8_t yes); }; #endif