Servo compilation error on ESP32C3 - ESP32_ESP32S2_AnalogWrite

I have looked at previous questions relating to this, but none of the solutions seem to fix my problem.
I wish to drive a single servo from a ESP32 C3 Dev module.
I initially tried the generic Arduino servo.h library, but it fails to compile. I gather this chip may not work with the generic library. I have tried several other libraries, as with the same result.
The one I would really like to use (because of its elegance and functionality) is ESP32_ESP32S2_AnalogWrite, but this also will not compile. I do not even get past checking - it just returns a sizeable list of reasons for failing, but I cannot make sense of them.
I get similar messages for all of the examples sketches provided - I haven't even tried my own code yet.
The report below was attempting compile the Servo_Sweep example sketch provided with the library.
Can anyone help me, please?


/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'uint8_t Pwm::attach(int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:55:9: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
   55 |         ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
      |         ^~~~~~~~~
      |         ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:57:9: error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
   57 |         ledcAttachPin(pin, ch);
      |         ^~~~~~~~~~~~~
      |         ledcAttach
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'uint8_t Pwm::attach(int, int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:68:5: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
   68 |     ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
      |     ^~~~~~~~~
      |     ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:70:5: error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
   70 |     ledcAttachPin(pin, ch);
      |     ^~~~~~~~~~~~~
      |     ledcAttach
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'uint8_t Pwm::attachInvert(int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:78:3: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
   78 |   ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
      |   ^~~~~~~~~
      |   ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'uint8_t Pwm::attachInvert(int, int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:87:5: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
   87 |     ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
      |     ^~~~~~~~~
      |     ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'float Pwm::writeServo(int, float)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:180:9: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
  180 |         ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
      |         ^~~~~~~~~
      |         ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:182:9: error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
  182 |         ledcAttachPin(pin, ch);
      |         ^~~~~~~~~~~~~
      |         ledcAttach
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'void Pwm::detach(int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:253:5: error: 'ledcDetachPin' was not declared in this scope; did you mean 'ledcDetach'?
  253 |     ledcDetachPin(mem[ch].pin); // jitterless
      |     ^~~~~~~~~~~~~
      |     ledcDetach
In file included from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/assist_debug_reg.h:21,
                 from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/riscv/include/riscv/rv_utils.h:12,
                 from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/esp_hw_support/include/esp_cpu.h:18,
                 from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/esp_hw_support/include/spinlock.h:11,
                 from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/portmacro.h:45,
                 from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/freertos/FreeRTOS-Kernel/include/freertos/portable.h:59,
                 from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/freertos/FreeRTOS-Kernel/include/freertos/FreeRTOS.h:71,
                 from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/hardware/esp32/3.0.7/cores/esp32/Arduino.h:33,
                 from /Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:7:
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:19: error: 'GPIO_PIN_MUX_REG' was not declared in this scope; did you mean 'GPIO_PIN13_REG'?
  254 |     REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
      |                   ^~~~~~~~~~~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:37:37: note: in definition of macro 'REG_WRITE'
   37 |             (*(volatile uint32_t *)(_r)) = (_v);                                                                       \
      |                                     ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:5: note: in expansion of macro 'REG_SET_FIELD'
  254 |     REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
      |     ^~~~~~~~~~~~~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:42: error: 'MCU_SEL_V' was not declared in this scope
  254 |     REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
      |                                          ^~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:37:45: note: in definition of macro 'REG_WRITE'
   37 |             (*(volatile uint32_t *)(_r)) = (_v);                                                                       \
      |                                             ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:5: note: in expansion of macro 'REG_SET_FIELD'
  254 |     REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
      |     ^~~~~~~~~~~~~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:42: error: 'MCU_SEL_S' was not declared in this scope
  254 |     REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
      |                                          ^~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:37:45: note: in definition of macro 'REG_WRITE'
   37 |             (*(volatile uint32_t *)(_r)) = (_v);                                                                       \
      |                                             ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:5: note: in expansion of macro 'REG_SET_FIELD'
  254 |     REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
      |     ^~~~~~~~~~~~~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'bool Pwm::detached(int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:259:22: error: 'GPIO_PIN_MUX_REG' was not declared in this scope; did you mean 'GPIO_PIN13_REG'?
  259 |   if ((REG_GET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL)) == 0) return true;
      |                      ^~~~~~~~~~~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:42:37: note: in definition of macro 'REG_READ'
   42 |             (*(volatile uint32_t *)(_r));                                                                              \
      |                                     ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:259:8: note: in expansion of macro 'REG_GET_FIELD'
  259 |   if ((REG_GET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL)) == 0) return true;
      |        ^~~~~~~~~~~~~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:259:45: error: 'MCU_SEL_S' was not declared in this scope
  259 |   if ((REG_GET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL)) == 0) return true;
      |                                             ^~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:67:32: note: in definition of macro 'REG_GET_FIELD'
   67 |             ((REG_READ(_r) >> (_f##_S)) & (_f##_V));                                                                   \
      |                                ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:259:45: error: 'MCU_SEL_V' was not declared in this scope
  259 |   if ((REG_GET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL)) == 0) return true;
      |                                             ^~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:67:44: note: in definition of macro 'REG_GET_FIELD'
   67 |             ((REG_READ(_r) >> (_f##_S)) & (_f##_V));                                                                   \
      |                                            ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:259:55: error: invalid operands of types 'void' and 'int' to binary 'operator=='
  259 |   if ((REG_GET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL)) == 0) return true;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~ ~
      |                                                          |
      |                                                          int
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'float Pwm::setFrequency(int, uint32_t)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:283:7: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
  283 |       ledcSetup(ch, frequency, mem[ch].resolution);
      |       ^~~~~~~~~
      |       ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'uint8_t Pwm::setResolution(int, uint8_t)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:297:7: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
  297 |       ledcSetup(ch, mem[ch].frequency, resolution);
      |       ^~~~~~~~~
      |       ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'void Pwm::wr_servo(int, float, double, double)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:376:9: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
  376 |         ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
      |         ^~~~~~~~~
      |         ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:378:9: error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
  378 |         ledcAttachPin(pin, ch);
      |         ^~~~~~~~~~~~~
      |         ledcAttach
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'void Pwm::wr_freq_res(int, uint32_t, uint8_t)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:451:5: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
  451 |     ledcSetup(ch, frequency, resolution);
      |     ^~~~~~~~~
      |     ledc_stop
Multiple libraries were found for "Servo.h"
 Used: /Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite
 Not used: /Applications/Arduino.app/Contents/Java/libraries/Servo
 Not used: /Users/davidcdelahaye/Documents/Arduino/libraries/Servo
exit status 1
Error compiling for board ESP32C3 Dev Module.

If not mistaken the error indicates that the library is not compatible with the version of the ESP32 board package that you're using.

There is an ESP32Servo library; you could give that a try.

Note:
I'm not an ESP32 user.

There is a breaking change under way, see the Migration document. https://docs.espressif.com/projects/arduino-esp32/en/latest/migration_guides/2.x_to_3.0.html
A quick fix but problematic is to just roll back your esp32 boards to a release prior to 3, but if you auto update you will need to redo that. You can also do updates selectively both for libraries and boards. See attached pics. The IDE will also no longer auto-update so see 3rd pic



Thank you so much for those answers. Rolling back to an earlier pre v3 board version solved the problem. Compiled cleanly and test sketch working perfectly.

Make sure you mark my post as 'solved'

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.