From 2598b9c0397415ab0b1fa8faa98ebd6fd0e52b62 Mon Sep 17 00:00:00 2001 From: Phil Jansen Date: Sat, 16 May 2020 10:44:35 -0700 Subject: [PATCH] analogWrite() range should be 0-255, not 0-256. --- cores/arduino/wiring_analog.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cores/arduino/wiring_analog.cpp b/cores/arduino/wiring_analog.cpp index 5c694cb7..f155c637 100644 --- a/cores/arduino/wiring_analog.cpp +++ b/cores/arduino/wiring_analog.cpp @@ -40,7 +40,7 @@ static mbed::PwmOut* PinNameToPwmObj(PinName P) { void analogWrite(PinName pin, int val) { - float percent = (float)val/(float)(1 << write_resolution); + float percent = (float)val/(float)((1 << write_resolution)-1); #ifdef digitalPinToPwmObj mbed::PwmOut* pwm = PinNameToPwmObj(pin); if (pwm == NULL) { @@ -57,7 +57,7 @@ void analogWrite(PinName pin, int val) void analogWrite(pin_size_t pin, int val) { - float percent = (float)val/(float)(1 << write_resolution); + float percent = (float)val/(float)((1 << write_resolution)-1); #ifdef digitalPinToPwmObj mbed::PwmOut* pwm = digitalPinToPwmObj(pin); if (pwm == NULL) { @@ -95,4 +95,4 @@ int analogRead(pin_size_t pin) void analogReadResolution(int bits) { read_resolution = bits; -} \ No newline at end of file +}