From dd639c4a029b3b31559bb4243a066e2005bdbc18 Mon Sep 17 00:00:00 2001 From: mmone Date: Mon, 14 May 2018 13:18:03 +0200 Subject: [PATCH] Fix wrong range of duty cycle (#1353) The esp-idf expects duty values for the the sigma delta modulator in the range of -128 to 127 The arduino framework is supposed to use the range 0-255 thus the offset caclulation was wrong. --- cores/esp32/esp32-hal-sigmadelta.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cores/esp32/esp32-hal-sigmadelta.c b/cores/esp32/esp32-hal-sigmadelta.c index 78d8c40f..4c26adaa 100644 --- a/cores/esp32/esp32-hal-sigmadelta.c +++ b/cores/esp32/esp32-hal-sigmadelta.c @@ -60,7 +60,7 @@ void sigmaDeltaWrite(uint8_t channel, uint8_t duty) //chan 0-7 duty 8 bit if(channel > 7) { return; } - duty += 128; + duty -= 128; SD_MUTEX_LOCK(); SIGMADELTA.channel[channel].duty = duty; SD_MUTEX_UNLOCK(); @@ -72,7 +72,7 @@ uint8_t sigmaDeltaRead(uint8_t channel) //chan 0-7 return 0; } SD_MUTEX_LOCK(); - uint8_t duty = SIGMADELTA.channel[channel].duty - 128; + uint8_t duty = SIGMADELTA.channel[channel].duty + 128; SD_MUTEX_UNLOCK(); return duty; }