Hi,
I try to buid a "3 AXIS MOTORIZED CAMERA SLIDER" from this link :
GitHub - clehn8ok/DIY3AxisCameraSlider: 3D Printed 3 Axis Camera Slider, remote controlled via Bluetooth a 2021 project by Christoph Lehner.
I am using Arduino IDE 2.1.1
the board is an ESP32 DEVKIT 32D
I have been careful to include the FastAccelStepper and Ps3Control libraries that are joined with the github folder, and not the most recent versions.
When I execute a "verify" process I have a long list of errors which only mean for me that I better forget about the whole project since my programming skills are none....
I have a last hope that some solution may come from somebody here.
Christophe Lehner doesn't seem to respond on this project anymore.
code and errors log following
Thank you
the main code is
#include <Arduino.h>
#include "FastAccelStepper.h"
#include "Ps3Controller.h"
#include "algorithm"
#define PAN_MOTOR_STEP_PIN 23
#define PAN_MOTOR_DIRECTION_PIN 22
#define TILT_MOTOR_STEP_PIN 16
#define TILT_MOTOR_DIRECTION_PIN 4
#define SLIDE_MOTOR_STEP_PIN 21
#define SLIDE_MOTOR_DIRECTION_PIN 19
#define MOTOR_EN_PIN 18
#define MOTOR_MS1_PIN 5
#define MOTOR_MS2_PIN 17
#define PAN_HALL_PIN 36
#define TILT_HALL_PIN 39
#define SLIDE_HALL_PIN 34
#define PAN_MAX_SPEED 2500
#define PAN_MAX_ACCELERATION 8000
#define TILT_MAX_SPEED 1250
#define TILT_MAX_ACCELERATION 8000
#define SLIDE_MAX_SPEED 2500
#define SLIDE_MAX_ACCELERATION 8000
#define KEYFRAME_ARRAY_LENGTH 10
unsigned long previousMillis = 0;
const long debouncedelay = 100;
float speedfactor=1;
float accelerationfactor=1;
float panspeed_current=0;
float tiltspeed_current=0;
float slidespeed_current=0;
int keyframe_elements = 0;
int current_keyframe_index = -1;
int last_movedto_keyframe_index=-1;
int cntr_moves=0;
int cntr_moves_continous=0;
bool pan_is_moving=true;
bool tilt_is_moving=true;
bool slide_is_moving=true;
long pan_steps_to_move=0;
long tilt_steps_to_move=0;
long slide_steps_to_move=0;
long steps_to_move[3]={0,0,0};
double pan_time_motion_complete=0;
double tilt_time_motion_complete=0;
double slide_time_motion_complete=0;
int pan_speed_motion_complete=0;
int tilt_speed_motion_complete=0;
int slide_speed_motion_complete=0;
bool continous_mode=false;
int delay_continous_mode=0;
struct KeyframeElement {
long panStepCount = 0;
float panSpeed = 0;
long tiltStepCount = 0;
float tiltSpeed = 0;
long sliderStepCount = 0;
float sliderSpeed = 0;
int msDelay = 0;
};
KeyframeElement keyframe_array[KEYFRAME_ARRAY_LENGTH];
FastAccelStepperEngine engine = FastAccelStepperEngine();
FastAccelStepper *pan_stepper = NULL;
FastAccelStepper *tilt_stepper = NULL;
FastAccelStepper *slide_stepper = NULL;
class Stick {
private:
bool _state;
bool _2ndstate;
int _pin;
int _value;
public:
Stick(int pin) : _pin(pin) {}
int ps3stickread(int pin2read)
{
switch(pin2read)
{
case 0:
_value=Ps3.data.analog.stick.lx;
break;
case 1:
_value=Ps3.data.analog.stick.ly;
break;
case 2:
_value=Ps3.data.analog.stick.rx;
break;
case 3:
_value=Ps3.data.analog.stick.ry;
break;
}
if(_value<-1 || _value>1)
{
_2ndstate=true;
}
if(_value==0 || _value==-1 || _value==1)
{
_2ndstate=false;
}
return _2ndstate;
}
void begin()
{
_state = ps3stickread(_pin);
}
bool isPressed()
{
bool v = ps3stickread(_pin);
return v;
/*
bool v = ps3stickread(_pin);
if (v != _state) {
_state = v;
if (_state) {
return true;
}
}
return false;
*/
}
int getValue()
{
return _value;
}
};
class Button {
private:
bool _state;
bool _2ndstate;
int _pin;
int _value;
public:
Button(int pin) : _pin(pin) {}
bool ps3readpin(int pin2read)
{
switch(pin2read)
{
case 0:
_value=Ps3.data.analog.button.up;
break;
case 1:
_value=Ps3.data.analog.button.down;
break;
case 2:
_value=Ps3.data.analog.button.left;
break;
case 3:
_value=Ps3.data.analog.button.right;
break;
case 4:
_value=Ps3.data.analog.button.cross;
break;
case 5:
_value=Ps3.data.analog.button.square;
break;
case 6:
_value=Ps3.data.analog.button.triangle;
break;
case 7:
_value=Ps3.data.analog.button.circle;
break;
case 8:
_value=Ps3.data.analog.button.l1;
break;
case 9:
_value=Ps3.data.analog.button.r1;
break;
case 10:
_value=Ps3.data.button.l3;
break;
case 11:
_value=Ps3.data.button.r3;
break;
case 12:
_value=Ps3.data.button.select;
break;
case 13:
_value=Ps3.data.button.start;
break;
case 14:
_value=Ps3.data.button.l2;
break;
case 15:
_value=Ps3.data.button.r2;
break;
}
if(_value!=0)
{
_2ndstate=true;
}
if(_value==0)
{
_2ndstate=false;
}
return _2ndstate;
}
void begin()
{
_state = ps3readpin(_pin);
}
bool isReleased()
{
bool v = ps3readpin(_pin);
if (v != _state) {
_state = v;
if (_state) {
return true;
}
}
return false;
}
};
Button button_dPadUP(0);
Button button_dPadDOWN(1);
Button button_dPadLEFT(2);
Button button_dPadRIGHT(3);
Button button_CROSS(4);
Button button_SQUARE(5);
Button button_TRIANGLE(6);
Button button_CIRCLE(7);
Button button_L1(8);
Button button_R1(9);
Button button_L3(10);
Button button_R3(11);
Button button_SELCET(12);
Button button_START(13);
Button button_L2(14);
Button button_R2(15);
Stick stick_LX(0);
Stick stick_LY(1);
Stick stick_RX(2);
Stick stick_RY(3);
void onConnect()
{
Serial.println("Connected.");
}
int add_Position(void) {
if (keyframe_elements >= 0 && keyframe_elements < KEYFRAME_ARRAY_LENGTH) {
keyframe_array[keyframe_elements].panStepCount = pan_stepper->getCurrentPosition();
keyframe_array[keyframe_elements].tiltStepCount = tilt_stepper->getCurrentPosition();
keyframe_array[keyframe_elements].sliderStepCount = slide_stepper->getCurrentPosition();
keyframe_array[keyframe_elements].panSpeed = PAN_MAX_SPEED;
keyframe_array[keyframe_elements].tiltSpeed = TILT_MAX_SPEED;
keyframe_array[keyframe_elements].sliderSpeed = SLIDE_MAX_SPEED;
keyframe_array[keyframe_elements].msDelay = 0;
Serial.print("Pan: ");
Serial.println(keyframe_array[keyframe_elements].panStepCount);
Serial.print("Tilt: ");
Serial.println(keyframe_array[keyframe_elements].tiltStepCount);
Serial.print("Slide: ");
Serial.println(keyframe_array[keyframe_elements].sliderStepCount);
current_keyframe_index = keyframe_elements;
keyframe_elements++;
Serial.print("Added at index: ");
Serial.println(current_keyframe_index);
return 0;
}
else {
Serial.println("Max number of keyframes reached");
}
return -1;
}
void set_Speed(char _pts)
{
switch(_pts)
{
case 'p':
{
pan_time_motion_complete=double(steps_to_move[2])/double(PAN_MAX_SPEED);
Serial.print("time to complete pan movement: ");
Serial.println(pan_time_motion_complete,5);
pan_speed_motion_complete=PAN_MAX_SPEED;
tilt_speed_motion_complete=abs(tilt_steps_to_move)/pan_time_motion_complete;
Serial.print("tilt steps to move: ");
Serial.println(tilt_steps_to_move);
Serial.print("tilt speed according to pan: ");
Serial.println(tilt_speed_motion_complete);
slide_speed_motion_complete=abs(slide_steps_to_move)/pan_time_motion_complete;
Serial.print("slide steps to move: ");
Serial.println(slide_steps_to_move);
Serial.print("slide speed according to pan: ");
Serial.println(slide_speed_motion_complete);
break;
}
case 't':
{
tilt_time_motion_complete=double(steps_to_move[2])/double(TILT_MAX_SPEED);
Serial.print("time to complete tilt movement: ");
Serial.println(tilt_time_motion_complete,5);
tilt_speed_motion_complete=TILT_MAX_SPEED;
pan_speed_motion_complete=abs(pan_steps_to_move)/tilt_time_motion_complete;
Serial.print("pan steps to move: ");
Serial.println(pan_steps_to_move);
Serial.print("pan speed according to tilt: ");
Serial.println(pan_speed_motion_complete);
slide_speed_motion_complete=abs(slide_steps_to_move)/tilt_time_motion_complete;
Serial.print("slide steps to move: ");
Serial.println(slide_steps_to_move);
Serial.print("slide speed according to tilt: ");
Serial.println(slide_speed_motion_complete);
break;
}
case 's':
{
slide_time_motion_complete=double(steps_to_move[2])/double(SLIDE_MAX_SPEED);
Serial.print("time to complete slide movement: ");
Serial.println(slide_time_motion_complete,5);
slide_speed_motion_complete=SLIDE_MAX_SPEED;
pan_speed_motion_complete=abs(pan_steps_to_move)/slide_time_motion_complete;
Serial.print("pan steps to move: ");
Serial.println(pan_steps_to_move);
Serial.print("pan speed according to slide: ");
Serial.println(pan_speed_motion_complete);
tilt_speed_motion_complete=abs(tilt_steps_to_move)/slide_time_motion_complete;
Serial.print("tilt steps to move: ");
Serial.println(tilt_steps_to_move);
Serial.print("tilt speed according to slide: ");
Serial.println(tilt_speed_motion_complete);
break;
}
}
}
void move_toPosition(int index)
{
using namespace std;
if(index >= 0 && index<KEYFRAME_ARRAY_LENGTH)
{
pan_steps_to_move=pan_stepper->getCurrentPosition()-keyframe_array[index].panStepCount;
tilt_steps_to_move=tilt_stepper->getCurrentPosition()-keyframe_array[index].tiltStepCount;
slide_steps_to_move=slide_stepper->getCurrentPosition()-keyframe_array[index].sliderStepCount;
steps_to_move[0]=abs(pan_steps_to_move);
steps_to_move[1]=abs(tilt_steps_to_move);
steps_to_move[2]=abs(slide_steps_to_move);
sort(steps_to_move,steps_to_move+3);
if(steps_to_move[2]==abs(pan_steps_to_move))
{
Serial.println("most steps 2 move on pan axis");
set_Speed('p');
}
if(steps_to_move[2]==abs(tilt_steps_to_move))
{
Serial.println("most steps 2 move on tilt axis");
set_Speed('t');
}
if(steps_to_move[2]==abs(slide_steps_to_move))
{
Serial.println("most steps 2 move on slide axis");
set_Speed('s');
}
Serial.println(pan_speed_motion_complete*speedfactor);
Serial.println(tilt_speed_motion_complete*speedfactor);
Serial.println(slide_speed_motion_complete*speedfactor);
pan_stepper->setSpeedInHz(pan_speed_motion_complete*speedfactor);
tilt_stepper->setSpeedInHz(tilt_speed_motion_complete*speedfactor);
slide_stepper->setSpeedInHz(slide_speed_motion_complete*speedfactor);
pan_stepper->moveTo(keyframe_array[index].panStepCount);
tilt_stepper->moveTo(keyframe_array[index].tiltStepCount);
slide_stepper->moveTo(keyframe_array[index].sliderStepCount);
Serial.print("moving to target index:");
Serial.println(index);
current_keyframe_index = index;
}
else
{
Serial.println("cant move to invalid index");
}
}
void clearKeyframes(void)
{
keyframe_elements = 0;
current_keyframe_index = -1;
last_movedto_keyframe_index=-1;
Serial.println("Keyframes cleared");
}
void setup()
{
Serial.begin(112500);
button_dPadUP.begin();
button_dPadDOWN.begin();
button_dPadLEFT.begin();
button_dPadRIGHT.begin();
button_CROSS.begin();
button_SQUARE.begin();
button_TRIANGLE.begin();
button_CIRCLE.begin();
button_L1.begin();
button_R1.begin();
button_L3.begin();
button_R3.begin();
button_SELCET.begin();
button_START.begin();
button_L2.begin();
button_R2.begin();
stick_LX.begin();
stick_LY.begin();
stick_RX.begin();
stick_RY.begin();
Ps3.attachOnConnect(onConnect);
Ps3.begin("20:c9:d0:d5:92:3c");
Serial.println("Ready.");
engine.init();
pan_stepper = engine.stepperConnectToPin(PAN_MOTOR_STEP_PIN);
tilt_stepper = engine.stepperConnectToPin(TILT_MOTOR_STEP_PIN);
slide_stepper = engine.stepperConnectToPin(SLIDE_MOTOR_STEP_PIN);
if (pan_stepper)
{
pan_stepper->setDirectionPin(PAN_MOTOR_DIRECTION_PIN);
pan_stepper->setEnablePin(MOTOR_EN_PIN);
pan_stepper->setAutoEnable(true);
pan_stepper->setSpeedInHz(PAN_MAX_SPEED); // 500 steps/s
pan_stepper->setAcceleration(PAN_MAX_ACCELERATION); // 100 steps/s²
}
if (tilt_stepper)
{
tilt_stepper->setDirectionPin(TILT_MOTOR_DIRECTION_PIN);
tilt_stepper->setEnablePin(MOTOR_EN_PIN);
tilt_stepper->setAutoEnable(true);
tilt_stepper->setSpeedInHz(TILT_MAX_SPEED); // 500 steps/s
tilt_stepper->setAcceleration(TILT_MAX_ACCELERATION); // 100 steps/s²
}
if (slide_stepper)
{
slide_stepper->setDirectionPin(SLIDE_MOTOR_DIRECTION_PIN);
slide_stepper->setEnablePin(MOTOR_EN_PIN);
slide_stepper->setAutoEnable(true);
slide_stepper->setSpeedInHz(SLIDE_MAX_SPEED); // 500 steps/s
slide_stepper->setAcceleration(SLIDE_MAX_ACCELERATION); // 100 steps/s²
}
}
void loop()
{
// only runs code, if the controller is connected, otherwise everything stops
if(Ps3.isConnected())
{
if(continous_mode)
{
if(!(pan_stepper->isRunning()) && !(tilt_stepper->isRunning()) && !(slide_stepper->isRunning()) && keyframe_elements>1 )
{
delay(delay_continous_mode);
move_toPosition(cntr_moves_continous);
if(keyframe_elements>cntr_moves_continous+1)
{
cntr_moves_continous++;
}
else
{
cntr_moves_continous=0;
}
}
}
//debouncing of PS3 input
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= debouncedelay)
{
previousMillis = currentMillis;
//DPAD
if(button_dPadUP.isReleased())
{
Serial.println("pressed button_dPadUP");
if(delay_continous_mode<1000)
{
delay_continous_mode=delay_continous_mode+100;
}
Serial.print("increased delay to");
Serial.println(delay_continous_mode);
}
if(button_dPadDOWN.isReleased())
{
Serial.println("pressed button_dPadDOWN");
if(delay_continous_mode>=100)
{
delay_continous_mode=delay_continous_mode-100;
}
Serial.print("decreased delay to");
Serial.println(delay_continous_mode);
}
if(button_dPadLEFT.isReleased())
{
Serial.println("pressed button_dPadLEFT");
}
if(button_dPadRIGHT.isReleased())
{
Serial.println("pressed button_dPadRIGHT");
}
//Buttons
if(button_CROSS.isReleased())
{
Serial.println("pressed button_CROSS");
if(keyframe_elements!=0)
{
last_movedto_keyframe_index=cntr_moves;
move_toPosition(last_movedto_keyframe_index);
if(keyframe_elements>last_movedto_keyframe_index+1)
{
cntr_moves++;
}
else
{
cntr_moves=0;
}
}
}
if(button_SQUARE.isReleased())
{
Serial.println("pressed button_SQUARE");
add_Position();
last_movedto_keyframe_index=current_keyframe_index;
}
if(button_TRIANGLE.isReleased())
{
Serial.println("pressed button_TRIANGLE");
continous_mode=true;
}
if(button_CIRCLE.isReleased())
{
continous_mode=false;
pan_stepper->stopMove();
tilt_stepper->stopMove();
slide_stepper->stopMove();
Serial.println("pressed button_CIRCLE");
}
//shoulder Buttons
if(button_L1.isReleased())
{
Serial.println("pressed button_L1");
if(speedfactor>0.001)
{
speedfactor=speedfactor*0.5;
}
Serial.println(speedfactor);
/*
pan_stepper->setSpeedInMilliHz(pan_stepper->getSpeedInMilliHz()*speedfactor);
tilt_stepper->setSpeedInMilliHz(tilt_stepper->getSpeedInMilliHz()*speedfactor);
slide_stepper->setSpeedInMilliHz(slide_stepper->getSpeedInMilliHz()*speedfactor);
*/
}
if(button_R1.isReleased())
{
Serial.println("pressed button_R1");
if(speedfactor<1)
{
speedfactor=speedfactor/0.5;
}
Serial.println(speedfactor);
/*
pan_stepper->setSpeedInMilliHz(pan_stepper->getSpeedInMilliHz()*speedfactor);
tilt_stepper->setSpeedInMilliHz(tilt_stepper->getSpeedInMilliHz()*speedfactor);
slide_stepper->setSpeedInMilliHz(slide_stepper->getSpeedInMilliHz()*speedfactor);
*/
}
if(button_L2.isReleased())
{
Serial.println("pressed stick_L2");
if(accelerationfactor>0.001)
{
accelerationfactor=accelerationfactor*0.5;
}
Serial.println(accelerationfactor);
pan_stepper->setAcceleration(PAN_MAX_ACCELERATION*accelerationfactor);
tilt_stepper->setAcceleration(TILT_MAX_ACCELERATION*accelerationfactor);
slide_stepper->setAcceleration(SLIDE_MAX_ACCELERATION*accelerationfactor);
}
if(button_R2.isReleased())
{
Serial.println("pressed stick_R2");
if(accelerationfactor<1)
{
accelerationfactor=accelerationfactor/0.5;
}
Serial.println(accelerationfactor);
pan_stepper->setAcceleration(PAN_MAX_ACCELERATION*accelerationfactor);
tilt_stepper->setAcceleration(TILT_MAX_ACCELERATION*accelerationfactor);
slide_stepper->setAcceleration(SLIDE_MAX_ACCELERATION*accelerationfactor);
}
if(button_L3.isReleased())
{
Serial.println("pressed button_L3");
}
if(button_R3.isReleased())
{
Serial.println("pressed button_R3");
clearKeyframes();
//Serial.println(slide_stepper->getCurrentPosition());
}
//start select
if(button_SELCET.isReleased())
{
Serial.println("pressed button_SELCET");
}
if(button_START.isReleased())
{
Serial.println("pressed button_START");
}
//////////////////////////////////////////////////////////
//STICK INPUT
if(stick_LX.isPressed())
{
pan_is_moving=true;
panspeed_current=speedfactor*PAN_MAX_SPEED*float(0.0078125)*abs(stick_LX.getValue());
Serial.println("pressed stick_LX");
Serial.println(stick_LX.getValue());
pan_stepper->setSpeedInHz(panspeed_current);
Serial.println("maxspeed:");
Serial.println(panspeed_current);
if(stick_LX.getValue()>1)
{
pan_stepper->runForward();
}
else
{
pan_stepper->runBackward();
}
}
else
{
if(pan_is_moving)
{
pan_stepper->stopMove();
//pan_stepper->setSpeedInHz(0);
pan_stepper->setDelayToDisable(65535);
pan_is_moving=false;
}
}
if(stick_LY.isPressed())
{
tilt_is_moving=true;
tiltspeed_current=speedfactor*TILT_MAX_SPEED*float(0.0078125)*abs(stick_LY.getValue());
Serial.println("pressed stick_LY");
Serial.println(stick_LY.getValue());
tilt_stepper->setSpeedInHz(tiltspeed_current);
Serial.println("maxspeed:");
Serial.println(tiltspeed_current);
if(stick_LY.getValue()>1)
{
tilt_stepper->runForward();
}
else
{
tilt_stepper->runBackward();
}
}
else
{
if(tilt_is_moving)
{
tilt_stepper->stopMove();
tilt_stepper->setDelayToDisable(65535);
//tilt_stepper->setSpeedInHz(0);
tilt_is_moving=false;
}
}
if(stick_RX.isPressed())
{
slide_is_moving=true;
slidespeed_current=speedfactor*SLIDE_MAX_SPEED*float(0.0078125)*abs(stick_RX.getValue());
Serial.println("pressed stick_RX");
Serial.println(stick_RX.getValue());
slide_stepper->setSpeedInHz(slidespeed_current);
Serial.println("maxspeed:");
Serial.println(slidespeed_current);
if(stick_RX.getValue()>1)
{
slide_stepper->runBackward();
}
else
{
slide_stepper->runForward();
}
}
else
{
if(slide_is_moving)
{
slide_stepper->stopMove();
//slide_stepper->setSpeedInHz(0);
slide_stepper->setDelayToDisable(65535);
slide_is_moving=false;
}
}
if(stick_RY.isPressed())
{
Serial.println("pressed stick_RY");
Serial.println(stick_RY.getValue());
}
}
}
else
{
pan_stepper->stopMove();
tilt_stepper->stopMove();
slide_stepper->stopMove();
}
}
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
the error log :
In file included from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampCalculator.h:3,
from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampGenerator.cpp:10:
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampGenerator.cpp: In function 'void _getNextCommand(const ramp_ro_s*, const ramp_rw_s*, const queue_end_s*, NextCommand*)':
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampGenerator.cpp:469:41: error: call of overloaded 'abs(uint32_t&)' is ambiguous
steps = min(steps, abs(remaining_steps)); // This could be problematic
^
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\PoorManFloat.h:3:27: note: in definition of macro 'min'
#define min(a, b) ((a) > (b) ? (b) : (a))
^
In file included from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\cstdlib:75,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\stdlib.h:36,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/newlib/platform_include/assert.h:21,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\sys\reent.h:503,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\stdio.h:60,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32/Arduino.h:27,
from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\FastAccelStepper.h:4,
from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampGenerator.cpp:3:
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\stdlib.h:74:5: note: candidate: 'int abs(int)'
int abs (int);
^~~
In file included from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\cstdlib:77,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\stdlib.h:36,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/newlib/platform_include/assert.h:21,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\sys\reent.h:503,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\stdio.h:60,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32/Arduino.h:27,
from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\FastAccelStepper.h:4,
from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampGenerator.cpp:3:
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\bits\std_abs.h:78:3: note: candidate: 'constexpr long double std::abs(long double)'
abs(long double __x)
^~~
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\bits\std_abs.h:74:3: note: candidate: 'constexpr float std::abs(float)'
abs(float __x)
^~~
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\bits\std_abs.h:70:3: note: candidate: 'constexpr double std::abs(double)'
abs(double __x)
^~~
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\bits\std_abs.h:61:3: note: candidate: 'long long int std::abs(long long int)'
abs(long long __x) { return __builtin_llabs (__x); }
^~~
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\bits\std_abs.h:56:3: note: candidate: 'long int std::abs(long int)'
abs(long __i) { return __builtin_labs(__i); }
^~~
In file included from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampCalculator.h:3,
from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampGenerator.cpp:10:
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampGenerator.cpp:469:41: error: call of overloaded 'abs(uint32_t&)' is ambiguous
steps = min(steps, abs(remaining_steps)); // This could be problematic
^
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\PoorManFloat.h:3:33: note: in definition of macro 'min'
#define min(a, b) ((a) > (b) ? (b) : (a))
^
In file included from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\cstdlib:75,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\stdlib.h:36,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/newlib/platform_include/assert.h:21,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\sys\reent.h:503,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\stdio.h:60,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32/Arduino.h:27,
from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\FastAccelStepper.h:4,
from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampGenerator.cpp:3:
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\stdlib.h:74:5: note: candidate: 'int abs(int)'
int abs (int);
^~~
In file included from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\cstdlib:77,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\stdlib.h:36,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/newlib/platform_include/assert.h:21,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\sys\reent.h:503,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\sys-include\stdio.h:60,
from C:\Users\philp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32/Arduino.h:27,
from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\FastAccelStepper.h:4,
from c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\RampGenerator.cpp:3:
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\bits\std_abs.h:78:3: note: candidate: 'constexpr long double std::abs(long double)'
abs(long double __x)
^~~
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\bits\std_abs.h:74:3: note: candidate: 'constexpr float std::abs(float)'
abs(float __x)
^~~
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\bits\std_abs.h:70:3: note: candidate: 'constexpr double std::abs(double)'
abs(double __x)
^~~
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\bits\std_abs.h:61:3: note: candidate: 'long long int std::abs(long long int)'
abs(long long __x) { return __builtin_llabs (__x); }
^~~
c:\users\philp\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\include\c++\8.4.0\bits\std_abs.h:56:3: note: candidate: 'long int std::abs(long int)'
abs(long __i) { return __builtin_labs(__i); }
^~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp: In function 'void apply_command(StepperQueue*, const queue_entry*)':
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:110:27: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'status'; did you mean 'timer_status'?
if (mcpwm->timer[timer].status.value <= 1) { // mcpwm Timer is stopped ?
^~~~~~
timer_status
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:111:25: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
mcpwm->timer[timer].period.upmethod = 0; // 0 = immediate update, 1 = TEZ
^~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:113:25: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
mcpwm->timer[timer].period.upmethod = 1; // 0 = immediate update, 1 = TEZ
^~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:115:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
mcpwm->timer[timer].period.period = ticks;
^~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:118:12: error: 'struct mcpwm_dev_t' has no member named 'channel'
mcpwm->channel[timer].generator[0].utea = 1;
^~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:170:12: error: 'struct mcpwm_dev_t' has no member named 'channel'
mcpwm->channel[timer].generator[0].utea = 2;
^~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp: In function 'void init_stop(StepperQueue*)':
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:182:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
mcpwm->timer[timer].mode.start = 0; // 0: stop at TEZ
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp: In function 'void mcpwm0_isr_service(void*)':
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr0_tea_int_st'
if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:233:3: note: in expansion of macro 'MCPWM_SERVICE'
MCPWM_SERVICE(MCPWM0, 0, 0);
^~~~~~~~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr1_tea_int_st'
if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:234:3: note: in expansion of macro 'MCPWM_SERVICE'
MCPWM_SERVICE(MCPWM0, 1, 1);
^~~~~~~~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr2_tea_int_st'
if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:235:3: note: in expansion of macro 'MCPWM_SERVICE'
MCPWM_SERVICE(MCPWM0, 2, 2);
^~~~~~~~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp: In function 'void mcpwm1_isr_service(void*)':
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr0_tea_int_st'
if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:238:3: note: in expansion of macro 'MCPWM_SERVICE'
MCPWM_SERVICE(MCPWM1, 0, 3);
^~~~~~~~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr1_tea_int_st'
if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:239:3: note: in expansion of macro 'MCPWM_SERVICE'
MCPWM_SERVICE(MCPWM1, 1, 4);
^~~~~~~~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr2_tea_int_st'
if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:240:3: note: in expansion of macro 'MCPWM_SERVICE'
MCPWM_SERVICE(MCPWM1, 2, 5);
^~~~~~~~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp: In member function 'void StepperQueue::init(uint8_t, uint8_t)':
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:288:55: error: 'PERIPH_PWM0_MODULE' was not declared in this scope
periph_module_enable(mcpwm_unit == MCPWM_UNIT_0 ? PERIPH_PWM0_MODULE
^~~~~~~~~~~~~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:288:55: note: suggested alternative: 'PERIPHS_IO_MUX_MTDO_U'
periph_module_enable(mcpwm_unit == MCPWM_UNIT_0 ? PERIPH_PWM0_MODULE
^~~~~~~~~~~~~~~~~~
PERIPHS_IO_MUX_MTDO_U
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:289:55: error: 'PERIPH_PWM1_MODULE' was not declared in this scope
: PERIPH_PWM1_MODULE);
^~~~~~~~~~~~~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:289:55: note: suggested alternative: 'PERIPHS_IO_MUX_MTDO_U'
: PERIPH_PWM1_MODULE);
^~~~~~~~~~~~~~~~~~
PERIPHS_IO_MUX_MTDO_U
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:288:5: error: 'periph_module_enable' was not declared in this scope
periph_module_enable(mcpwm_unit == MCPWM_UNIT_0 ? PERIPH_PWM0_MODULE
^~~~~~~~~~~~~~~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:288:5: note: suggested alternative: 'esp_intr_enable'
periph_module_enable(mcpwm_unit == MCPWM_UNIT_0 ? PERIPH_PWM0_MODULE
^~~~~~~~~~~~~~~~~~~~
esp_intr_enable
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:297:20: error: 'volatile union mcpwm_clk_cfg_reg_t' has no member named 'prescale'
mcpwm->clk_cfg.prescale = 5 - 1;
^~~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:299:12: error: 'struct mcpwm_dev_t' has no member named 'timer_sel'; did you mean 'timer'?
mcpwm->timer_sel.operator0_sel = 0; // timer 0 is input for operator 0
^~~~~~~~~
timer
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:300:12: error: 'struct mcpwm_dev_t' has no member named 'timer_sel'; did you mean 'timer'?
mcpwm->timer_sel.operator1_sel = 1; // timer 1 is input for operator 1
^~~~~~~~~
timer
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:301:12: error: 'struct mcpwm_dev_t' has no member named 'timer_sel'; did you mean 'timer'?
mcpwm->timer_sel.operator2_sel = 2; // timer 2 is input for operator 2
^~~~~~~~~
timer
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:303:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
mcpwm->timer[timer].period.upmethod = 1; // 0 = immediate update, 1 = TEZ
^~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:304:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
mcpwm->timer[timer].period.prescale = TIMER_PRESCALER;
^~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:305:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
mcpwm->timer[timer].period.period = 400; // Random value
^~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:306:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
mcpwm->timer[timer].mode.mode = 3; // 3=up/down counting
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:307:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
mcpwm->timer[timer].mode.start = 0; // 0: stop at TEZ
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:310:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'sync'
mcpwm->timer[timer].sync.timer_phase = 0; // prepare value of 0
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:311:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'sync'
mcpwm->timer[timer].sync.in_en = 1; // enable sync
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:312:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'sync'
mcpwm->timer[timer].sync.sync_sw ^= 1; // force a sync
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:313:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'sync'
mcpwm->timer[timer].sync.in_en = 0; // disable sync
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:315:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
mcpwm->channel[timer].cmpr_cfg.a_upmethod = 0; // 0 = immediate update
^~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:316:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
mcpwm->channel[timer].cmpr_value[0].cmpr_val = 1; // set compare value A
^~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:317:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
mcpwm->channel[timer].generator[0].val = 0; // clear all trigger actions
^~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:318:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
mcpwm->channel[timer].generator[1].val = 0; // clear all trigger actions
^~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:319:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
mcpwm->channel[timer].generator[0].dtep = 1; // low at period
^~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:320:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
mcpwm->channel[timer].db_cfg.val = 0; // edge delay disabled
^~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:321:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
mcpwm->channel[timer].carrier_cfg.val = 0; // carrier disabled
^~~~~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp: In member function 'bool StepperQueue::isRunning()':
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:367:27: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'status'; did you mean 'timer_status'?
if (mcpwm->timer[timer].status.value > 1) {
^~~~~~
timer_status
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:370:31: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
return (mcpwm->timer[timer].mode.start == 2); // 2=run continuous
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp: In member function 'void StepperQueue::commandAddedToQueue(bool)':
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:408:25: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
mcpwm->timer[timer].mode.start = 2; // 2=run continuous
^~~~
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp: In member function 'int8_t StepperQueue::startPreparedQueue()':
c:\Users\philp\Documents\Arduino\libraries\FastAccelStepper\src\StepperISR_esp32.cpp:418:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
mcpwm->timer[timer].mode.start = 2; // 2=run continuous
^~~~
exit status 1
Compilation error: exit status 1