* Fix analogWrite channel available verification
The last channel allocated is number 0, which conflicted with the value given to an uninitialized pin, giving the "No more analogWrite channels available!" error when trying to use it
Pins are now given the value -1 to indicate that they are not used so channel 0 can be used without errors.
* Fix incorrect array initialization
Keeping array of zeros for `pin_to_channel` and shifting stored channel
values by +1 to keep the pin with channel 0 from being interpreted as unused.
ref: https://github.com/espressif/arduino-esp32/pull/8509#issuecomment-1676103452
The constants that need to be passed to gpio_matrix_in and gpio_matrix_out
to detach an input or output pin from a peripheral vary by platform. Use
SIG_GPIO_OUT_IDX to detach an output, and GPIO_MATRIX_CONST_ONE_INPUT
and GPIO_MATRIX_CONST_ZERO_INPUT to detach an input. ESP32 before IDF 4.0
didn't define GPIO_MATRIX_CONST_*_INPUT, so add compatibility #defines
for GPIO_FUNC_IN_LOW/HIGH. GPIO_FUNC_IN_LOW/HIGH exist in IDF 4.0+, but
can't be used because they have the wrong values for ESP32-C3 at least
in IDF 4.4.3 (https://github.com/espressif/esp-idf/issues/11737).
* HardwareSerial: fix begin() lock issue on error path
If the user supplied a wrong UART number, the begin() method would
return without releasing the lock. Add missing unlock call.
* removing unsed Case test
---------
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
* Fix the F_CPU frequency for the ESP32-S3
Hello, I was using the FastLED library and it was complaining about F_CPU not being defined. So, I just noticed that it is not defined for the ESP32-S3 module. So I made this change in the header file and it compiled. Therefore I wanted to propose this change to the HAL library to improve compatibility. Thank you for your time.
* Makes F_CPU generic based on the SoC frequency
Works for ESP32, ESP32C3, ESP32S2, ESP32S3
* Includes ESP32C3 in the F_CPU definition
Necessary for ESP32 Arduino Core 2.0.x based on IDF 4.4
---------
Co-authored-by: Ali Devrim OGUZ <11381547+devrim-oguz@users.noreply.github.com>
* Remove __FlashStringHelper from ESP32, it's not needed - all the files using it are different from their ESP8266 counterparts anyway.
* Revert removal of class __FlashStringHelper forward for continued compatibility with external libs
* Improved fix, works for libs that return const __FlashStringHelper*
* Inline all wrappers using const __FlashStringHelper*.
WString Fix int64_t
Fixed int64_t String support. Resolves issue #7760.
Background:
sprintf on esp32 doesn't support "%lld" parameter. It's possible to recompile the underlying libraries to add that option, but I have an easier solution.
This has already been solved in ESP8266 version of WString by replacing sprintf() with itoa/ltoa/lltoa.
This PR does the following:
Fixes integer print issues by replacing sprintf() with itoa/ltoa/lltoa
Moves concat(long long num), concat(unsigned long long num) location (match ESP8266)
Cleans up code formatting (matches ESP8266)
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* adds extended HardwareSerial examples
* Adds new example with Serial RxTimeout
* adds and improves Serial onReceive expamples
* adjust includes CMake - UART example
* adjust includes CMake - UART example
* fixes CMake and CI
* adds ESP/Serial to CMakeList
* adds ESP/Serial to CMakeList
* fixes demo include
* fixes BREAK demo
* fixes onReceive demo
* Changes FIFO Full criteria
Changed the "1-by-1" Serial only when baud rate is 57600 or lower.
* example code replacement
* replaces functions in hal
* Workaround for when USB CDC is unplugged
* Considers default TX timeout
Sets back default TX timeout whenever USB is plugged, otherwise it is kept as zero.
* fixed left over code
Issue: Serial data sent during frequency change is corrupted.
Fixes corrupt debug message by printing the message after the frequency change is completed.
* Changes UART ISR to only trigger on RX FIFO Full and timeout
* changes initial RX timeout
* Eliminates extra testing for _uart != NULL
* reconfiguration with "uartSetFastReading()"
* Adds new function "uartSetFastReading()"
* changed default onReceive() behaviour
* forces User callback in case of error
* Error Code Order
Set NO_ERROR as first error code, same as ESP_OK = 0
* Adds an error message to HardwareSerial::setPins()
In order to avoid problems if the user tries to setPins() before initializing the Serial port with begin()