Fix Pin is not configured as analog channel
error
#458
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Forum conversation on the issue here: https://community.simplefoc.com/t/pin-is-not-configured-as-analog-channel/6751/5
Current sense align is currently not working on ESP32 boards due to a
__analogChannelConfig(): Pin is not configured as analog channel
error duringcurrent_sense.init()
.The error is coming from this function in the
arduino-esp32
framework. It is checking to see if the pin type isESP32_BUS_TYPE_ADC_ONESHOT
.In
arduino-esp32
, it appears that theESP32_BUS_TYPE_ADC_ONESHOT
setting is only applied to a pin in the__analogInit
function, which in turn is only ever invoked during ananalogRead
(oranalogReadMilliVolts
, which SimpleFOC doesn’t use).This is mainly a bug in
arduino-esp32
(sinceanalogSetPinAttenuation
should be able to work before ananalogRead
is called). But we can (and should) work around this in the SimpleFOC library since it may be a long time until a fix is released upstream. We can ensure the pin is initialised correctly by reversing the order of theanalogSetPinAttenuation
and theanalogRead
calls in the hardware specific driver for ESP32.