Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf2d83ba

Browse files
authored
allow to set pin to OUTPUT_OPEN_DRAIN in analogWriteMode (#7841)
* allow to set pin to OUTPUT_OPEN_DRAIN in analogWrite* remove parameter with default value* Update core_esp8266_wiring_pwm.cpp* update documentation accordingly
1 parent53e5688 commitf2d83ba

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

‎cores/esp8266/Arduino.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ int digitalRead(uint8_t pin);
171171
intanalogRead(uint8_t pin);
172172
voidanalogReference(uint8_t mode);
173173
voidanalogWrite(uint8_t pin,int val);
174+
voidanalogWriteMode(uint8_t pin,int val,bool openDrain);
174175
voidanalogWriteFreq(uint32_t freq);
175176
voidanalogWriteResolution(int res);
176177
voidanalogWriteRange(uint32_t range);

‎cores/esp8266/core_esp8266_wiring_pwm.cpp‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ extern void __analogWriteFreq(uint32_t freq) {
4444
}
4545

4646
externvoid__analogWrite(uint8_t pin,int val) {
47+
analogWriteMode(pin, val,false);
48+
}
49+
50+
externvoid__analogWriteMode(uint8_t pin,int val,bool openDrain) {
4751
if (pin >16) {
4852
return;
4953
}
@@ -62,7 +66,11 @@ extern void __analogWrite(uint8_t pin, int val) {
6266
analogMap &= ~(1 << pin);
6367
}
6468
else {
65-
pinMode(pin, OUTPUT);
69+
if(openDrain) {
70+
pinMode(pin, OUTPUT_OPEN_DRAIN);
71+
}else {
72+
pinMode(pin, OUTPUT);
73+
}
6674
}
6775
uint32_t high = (analogPeriod * val) / analogScale;
6876
uint32_t low = analogPeriod - high;
@@ -88,6 +96,7 @@ extern void __analogWriteResolution(int res) {
8896
}
8997

9098
externvoidanalogWrite(uint8_t pin,int val) __attribute__((weak, alias("__analogWrite")));
99+
externvoidanalogWriteMode(uint8_t pin,int val,bool openDrain) __attribute__((weak, alias("__analogWriteMode")));
91100
externvoidanalogWriteFreq(uint32_t freq) __attribute__((weak, alias("__analogWriteFreq")));
92101
externvoidanalogWriteRange(uint32_t range) __attribute__((weak, alias("__analogWriteRange")));
93102
externvoidanalogWriteResolution(int res) __attribute__((weak, alias("__analogWriteResolution")));

‎doc/reference.rst‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ PWM range may be changed by calling ``analogWriteRange(new_range)`` or
109109
``analogWriteResolution(bits)``. ``new_range`` may be from 15...65535
110110
or ``bits`` may be from 4...16.
111111

112+
The function ``analogWriteMode(pin, value, openDrain)`` allows to sets
113+
the pin mode to ``OUTPUT_OPEN_DRAIN`` instead of ``OUTPUT``.
114+
112115
**NOTE:** The default ``analogWrite`` range was 1023 in releases before
113116
3.0, but this lead to incompatibility with external libraries which
114117
depended on the Arduino core default of 256. Existing applications which

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp