From d547b1e68ee6f956d194d5876d9d07fcf27245e3 Mon Sep 17 00:00:00 2001 From: mmone Date: Wed, 25 Apr 2018 18:48:33 +0200 Subject: [PATCH] Fix wrong range of duty cycle 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 78d8c40f606..4c26adaa2dc 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; }