Skip to content

Commit 1dfae09

Browse files
philj404facchinm
authored andcommitted
analogWrite() range should be 0-255, not 0-256.
Porting of arduino/ArduinoCore-nRF528x-mbedos#75
1 parent 9548090 commit 1dfae09

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
@@ -34,7 +34,7 @@ void analogWriteDAC(PinName pin, int val) {
3434
if (dac == NULL) {
3535
dac = new mbed::AnalogOut(pin);
3636
}
37-
float percent = (float)val/(float)(1 << write_resolution);
37+
float percent = (float)val/(float)((1 << write_resolution)-1);
3838
if (percent > 1.0f) {
3939
percent = 1.0f;
4040
}
@@ -50,7 +50,7 @@ void analogWrite(PinName pin, int val)
5050
} else {
5151
mbed::PwmOut* pwm = new mbed::PwmOut(pin);
5252
pwm->period_ms(2); //500Hz
53-
float percent = (float)val/(float)(1 << write_resolution);
53+
float percent = (float)val/(float)((1 << write_resolution)-1);
5454
pwm->write(percent);
5555
}
5656
}
@@ -66,7 +66,7 @@ void analogWrite(pin_size_t pin, int val)
6666
return;
6767
}
6868
#endif
69-
float percent = (float)val/(float)(1 << write_resolution);
69+
float percent = (float)val/(float)((1 << write_resolution)-1);
7070
mbed::PwmOut* pwm = digitalPinToPwm(pin);
7171
if (pwm == NULL) {
7272
pwm = new mbed::PwmOut(digitalPinToPinName(pin));

0 commit comments

Comments
 (0)