Unverified Commit f2a5041c authored by Rodrigo Garcia's avatar Rodrigo Garcia Committed by GitHub

Fix(sigmaDelta): fixes sigmaDeltaAttach() when another peripheral is already attached (#9268)

parent 72f9fe3b
...@@ -27,11 +27,13 @@ static bool sigmaDeltaDetachBus(void * bus){ ...@@ -27,11 +27,13 @@ static bool sigmaDeltaDetachBus(void * bus){
bool sigmaDeltaAttach(uint8_t pin, uint32_t freq) //freq 1220-312500 bool sigmaDeltaAttach(uint8_t pin, uint32_t freq) //freq 1220-312500
{ {
perimanSetBusDeinit(ESP32_BUS_TYPE_SIGMADELTA, sigmaDeltaDetachBus); perimanSetBusDeinit(ESP32_BUS_TYPE_SIGMADELTA, sigmaDeltaDetachBus);
sdm_channel_handle_t bus = (sdm_channel_handle_t)perimanGetPinBus(pin, ESP32_BUS_TYPE_SIGMADELTA); sdm_channel_handle_t bus = NULL;
if(bus != NULL && !perimanClearPinBus(pin)){ // pin may be previously attached to other peripheral -> detach it.
// if attached to sigmaDelta, detach it and set the new frequency
if(perimanGetPinBusType(pin) != ESP32_BUS_TYPE_INIT && !perimanClearPinBus(pin)){
log_e("Pin %u could not be detached.", pin);
return false; return false;
} }
bus = NULL;
sdm_config_t config = { sdm_config_t config = {
.gpio_num = (int)pin, .gpio_num = (int)pin,
.clk_src = SDM_CLK_SRC_DEFAULT, .clk_src = SDM_CLK_SRC_DEFAULT,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment