Skip to content
This repository was archived by the owner on Apr 16, 2021. It is now read-only.

Commit 2598b9c

Browse files
committed
analogWrite() range should be 0-255, not 0-256.
1 parent 49ca91d commit 2598b9c

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

cores/arduino/wiring_analog.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ static mbed::PwmOut* PinNameToPwmObj(PinName P) {
4040

4141
void analogWrite(PinName pin, int val)
4242
{
43-
float percent = (float)val/(float)(1 << write_resolution);
43+
float percent = (float)val/(float)((1 << write_resolution)-1);
4444
#ifdef digitalPinToPwmObj
4545
mbed::PwmOut* pwm = PinNameToPwmObj(pin);
4646
if (pwm == NULL) {
@@ -57,7 +57,7 @@ void analogWrite(PinName pin, int val)
5757

5858
void analogWrite(pin_size_t pin, int val)
5959
{
60-
float percent = (float)val/(float)(1 << write_resolution);
60+
float percent = (float)val/(float)((1 << write_resolution)-1);
6161
#ifdef digitalPinToPwmObj
6262
mbed::PwmOut* pwm = digitalPinToPwmObj(pin);
6363
if (pwm == NULL) {
@@ -95,4 +95,4 @@ int analogRead(pin_size_t pin)
9595
void analogReadResolution(int bits)
9696
{
9797
read_resolution = bits;
98-
}
98+
}

0 commit comments

Comments
 (0)