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

Commit 1716fe5

Browse files
authored
Merge pull request #75 from philj404/bugfix/analogWriteRange
analogWrite() range should be 0-255, not 0-256.
2 parents 49ca91d + 2598b9c commit 1716fe5

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)