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 +}