Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error during compilation of example code for testing communication #65

Open
aagum-bae opened this issue May 11, 2024 · 7 comments
Open

Comments

@aagum-bae
Copy link

aagum-bae commented May 11, 2024

I am using ESP32, the same code with 0 modification was working just fine yesterday, since today morning I have been running into this error and idk what to do.

Error message displayed:

c:\Users\user\Documents\Arduino\libraries\TMC2209\src\TMC2209\TMC2209.cpp: In member function 'void TMC2209::setup(HardwareSerial&, long int, TMC2209::SerialAddress, int16_t, int16_t)':
c:\Users\user\Documents\Arduino\libraries\TMC2209\src\TMC2209\TMC2209.cpp:32:36: error: no matching function for call to 'HardwareSerial::end(bool)'
     hardware_serial_ptr_->end(false);
                                    ^
In file included from C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.15\cores\esp32/Arduino.h:196,
                 from c:\Users\user\Documents\Arduino\libraries\TMC2209\src/TMC2209.h:10,
                 from c:\Users\user\Documents\Arduino\libraries\TMC2209\src\TMC2209\TMC2209.cpp:7:
C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.15\cores\esp32/HardwareSerial.h:232:10: note: candidate: 'void HardwareSerial::end()'
     void end(void);
          ^~~
C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.15\cores\esp32/HardwareSerial.h:232:10: note:   candidate expects 0 arguments, 1 provided

exit status 1

Compilation error: exit status 1

For the example code:

#include <TMC2209.h>

// This example will not work on Arduino boards without HardwareSerial ports,
// such as the Uno, Nano, and Mini.
//
// See this reference for more details:
// https://www.arduino.cc/reference/en/language/functions/communication/serial/

HardwareSerial & serial_stream = Serial2;

const long SERIAL_BAUD_RATE = 115200;
const int RX_PIN = 16;
const int TX_PIN = 17;
const int DELAY = 3000;

// Instantiate TMC2209
TMC2209 stepper_driver;


void setup()
{
  Serial.begin(SERIAL_BAUD_RATE);
  stepper_driver.setup(serial_stream, SERIAL_BAUD_RATE, TMC2209::SERIAL_ADDRESS_0, RX_PIN, TX_PIN);
  
}

void loop()
{
  //stepper_driver.setup(serial_stream, SERIAL_BAUD_RATE, TMC2209::SERIAL_ADDRESS_0, RX_PIN, TX_PIN);
  if (stepper_driver.isSetupAndCommunicating())
  {
    Serial.println("Stepper driver is setup and communicating!");
    Serial.println("Try turning driver power off to see what happens.");
  }
  else if (stepper_driver.isCommunicatingButNotSetup())
  {
    Serial.println("Stepper driver is communicating but not setup!");
    Serial.println("Running setup again...");
    stepper_driver.setup(serial_stream, SERIAL_BAUD_RATE, TMC2209::SERIAL_ADDRESS_0, RX_PIN, TX_PIN);
  }
  else
  {
    Serial.println("Stepper driver is not communicating!");
    Serial.println("Try turning driver power on to see what happens.");
  }
  Serial.println();
  delay(DELAY);
}
@aagum-bae aagum-bae changed the title Error during compilation of exmaple code for tetsing communication Error during compilation of example code for tetsing communication May 11, 2024
@aagum-bae aagum-bae changed the title Error during compilation of example code for tetsing communication Error during compilation of example code for testing communication May 11, 2024
@Luro02
Copy link

Luro02 commented May 12, 2024

That happens because you updated to the 3.0.0-rc1 version:
image

Can reproduce it by installing that version

d:\Users\Lucas\Documents\Arduino\libraries\TMC2209\src\TMC2209\TMC2209.cpp: In member function 'void TMC2209::setup(HardwareSerial&, long int, SerialAddress, int16_t, int16_t)':
d:\Users\Lucas\Documents\Arduino\libraries\TMC2209\src\TMC2209\TMC2209.cpp:32:30: error: no matching function for call to 'HardwareSerial::end(bool)'
   32 |     hardware_serial_ptr_->end(false);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
In file included from C:\Users\Lucas\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.0-rc1\cores\esp32/Arduino.h:197,
                 from d:\Users\Lucas\Documents\Arduino\libraries\TMC2209\src/TMC2209.h:10,
                 from d:\Users\Lucas\Documents\Arduino\libraries\TMC2209\src\TMC2209\TMC2209.cpp:7:
C:\Users\Lucas\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.0-rc1\cores\esp32/HardwareSerial.h:255:10: note: candidate: 'void HardwareSerial::end()'
  255 |     void end(void);
      |          ^~~
C:\Users\Lucas\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.0-rc1\cores\esp32/HardwareSerial.h:255:10: note:   candidate expects 0 arguments, 1 provided

exit status 1

Compilation error: exit status 1

Just downgrade to 3.0.0-alpha3 and it should work again.

Not sure if this is a bug in the esp32-arduino library or this project.

@aagum-bae
Copy link
Author

aagum-bae commented May 12, 2024

Thanks for the reply, however I am using 2.0.16, will try updating to 3.0.0 alpha 3

@aagum-bae
Copy link
Author

Hi all, problem solved, thanks @Luro02

@peterpolidoro
Copy link
Member

Do you have any recommendations on how I can change the library to best work with the various versions of ESP32? I will take a look at this when I have a chance.

@Luro02
Copy link

Luro02 commented May 15, 2024

One could adjust the code only for the esp32 3.x version;

#if ESP_ARDUINO_VERSION_MAJOR >= 3
hardware_serial_ptr_->end();
#else
hardware_serial_ptr_->end(false);
#endif

Where is the false argument from and what does it do? Neither the ESP32 nor the Arduino Core AVR implementation has a HardwareSerial::end(bool) defined?

@aagum-bae
Copy link
Author

That works, but need to hit the reset button on the ESP32, figured it out after just messing around.

@peterpolidoro
Copy link
Member

I remember I needed to add end(false) to fix some bug, but I should have made a comment in the code about it because now I forget why I thought that was necessary. I think I will just replace that line with end() and people can upgrade to the newest esp32 3.x version if they run into any problems. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants