1
1
/* *********************************************************************************
2
- AnalogWrite Library for ESP32-ESP32S2 Arduino core - Version 2.0.8
2
+ AnalogWrite Library for ESP32-ESP32S2 Arduino core - Version 2.0.9
3
3
by dlloydev https://github.com/Dlloydev/ESP32-ESP32S2-AnalogWrite
4
4
This Library is licensed under the MIT License
5
5
**********************************************************************************/
@@ -29,15 +29,6 @@ pinStatus_t pinsStatus[8] = {
29
29
const uint8_t chd = 2 ;
30
30
#endif
31
31
32
- float awLedcSetup (uint8_t ch, double frequency, uint8_t bits) {
33
- #if (CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3)
34
- frequency *= 80 ; // workaround for issue 5050
35
- return ledcSetup (ch, frequency, bits) / 80 ;
36
- #else // ESP32
37
- return ledcSetup (ch, frequency, bits);
38
- #endif
39
- }
40
-
41
32
void awDetachPin (uint8_t pin, uint8_t ch) {
42
33
pinsStatus[ch / chd].pin = -1 ;
43
34
pinsStatus[ch / chd].value = 0 ;
@@ -50,14 +41,6 @@ void awDetachPin(uint8_t pin, uint8_t ch) {
50
41
REG_SET_FIELD (GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
51
42
}
52
43
53
- float awLedcReadFreq (uint8_t ch) {
54
- #if (CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3)
55
- return ledcReadFreq (ch) / 80 ; // workaround for issue 5050
56
- #else // ESP32
57
- return ledcReadFreq (ch);
58
- #endif
59
- }
60
-
61
44
int8_t awGetChannel (int8_t pin) {
62
45
if (!((pinMask >> pin) & 1 )) return -1 ; // not pwm pin
63
46
for (int8_t i = 0 ; i < 8 ; i++) {
@@ -73,7 +56,7 @@ int8_t awGetChannel(int8_t pin) {
73
56
if (pinsStatus[ch / chd].pin == -1 ) { // free channel
74
57
if ((ledcRead (ch) < 1 ) && (ledcReadFreq (ch) < 1 )) { // free timer
75
58
pinsStatus[ch / chd].pin = pin;
76
- aw::awLedcSetup (ch, pinsStatus[ch / chd].frequency , pinsStatus[ch / chd].resolution );
59
+ ledcSetup (ch, pinsStatus[ch / chd].frequency , pinsStatus[ch / chd].resolution );
77
60
ledcAttachPin (pin, ch);
78
61
return ch;
79
62
break ;
@@ -109,7 +92,7 @@ float analogWrite(int8_t pin, int32_t value) {
109
92
aw::pinsStatus[ch / aw::chd].value = value;
110
93
}
111
94
}
112
- return aw::awLedcReadFreq (ch);
95
+ return ledcReadFreq (ch);
113
96
}
114
97
return 0 ;
115
98
}
@@ -128,7 +111,7 @@ float analogWrite(int8_t pin, int32_t value, float frequency) {
128
111
if (value > ((1 << bits) - 1 )) value = (1 << bits); // constrain
129
112
if ((bits > 7 ) && (value == ((1 << bits) - 1 ))) value = (1 << bits); // keep PWM high
130
113
if (aw::pinsStatus[ch / aw::chd].frequency != frequency) {
131
- aw::awLedcSetup (ch, frequency, bits);
114
+ ledcSetup (ch, frequency, bits);
132
115
ledcWrite (ch, value);
133
116
aw::pinsStatus[ch / aw::chd].frequency = frequency;
134
117
}
@@ -138,7 +121,7 @@ float analogWrite(int8_t pin, int32_t value, float frequency) {
138
121
}
139
122
}
140
123
}
141
- return aw::awLedcReadFreq (ch);
124
+ return ledcReadFreq (ch);
142
125
}
143
126
return 0 ;
144
127
}
@@ -157,7 +140,7 @@ float analogWrite(int8_t pin, int32_t value, float frequency, uint8_t resolution
157
140
if (value > ((1 << bits) - 1 )) value = (1 << bits); // constrain
158
141
if ((bits > 7 ) && (value == ((1 << bits) - 1 ))) value = (1 << bits); // keep PWM high
159
142
if ((aw::pinsStatus[ch / aw::chd].frequency != frequency) || (aw::pinsStatus[ch / aw::chd].resolution != bits)) {
160
- aw::awLedcSetup (ch, frequency, bits);
143
+ ledcSetup (ch, frequency, bits);
161
144
ledcWrite (ch, value);
162
145
aw::pinsStatus[ch / aw::chd].frequency = frequency;
163
146
aw::pinsStatus[ch / aw::chd].resolution = bits;
@@ -168,7 +151,7 @@ float analogWrite(int8_t pin, int32_t value, float frequency, uint8_t resolution
168
151
}
169
152
}
170
153
}
171
- return aw::awLedcReadFreq (ch);
154
+ return ledcReadFreq (ch);
172
155
}
173
156
return 0 ;
174
157
}
@@ -187,7 +170,7 @@ float analogWrite(int8_t pin, int32_t value, float frequency, uint8_t resolution
187
170
if (value > ((1 << bits) - 1 )) value = (1 << bits); // constrain
188
171
if ((bits > 7 ) && (value == ((1 << bits) - 1 ))) value = (1 << bits); // keep PWM high
189
172
if ((aw::pinsStatus[ch / aw::chd].frequency != frequency) || (aw::pinsStatus[ch / aw::chd].resolution != bits)) {
190
- aw::awLedcSetup (ch, frequency, bits);
173
+ ledcSetup (ch, frequency, bits);
191
174
ledcWrite (ch, value);
192
175
aw::pinsStatus[ch / aw::chd].frequency = frequency;
193
176
aw::pinsStatus[ch / aw::chd].resolution = bits;
@@ -213,7 +196,7 @@ float analogWrite(int8_t pin, int32_t value, float frequency, uint8_t resolution
213
196
}
214
197
}
215
198
}
216
- return aw::awLedcReadFreq (ch);
199
+ return ledcReadFreq (ch);
217
200
}
218
201
return 0 ;
219
202
}
@@ -223,12 +206,12 @@ float analogWriteFrequency(int8_t pin, float frequency) {
223
206
if (ch >= 0 ) {
224
207
if ((aw::pinsStatus[ch / aw::chd].pin ) > 47 ) return -1 ;
225
208
if (aw::pinsStatus[ch / aw::chd].frequency != frequency) {
226
- aw::awLedcSetup (ch, frequency, aw::pinsStatus[ch / aw::chd].resolution );
209
+ ledcSetup (ch, frequency, aw::pinsStatus[ch / aw::chd].resolution );
227
210
ledcWrite (ch, aw::pinsStatus[ch / aw::chd].value );
228
211
aw::pinsStatus[ch / aw::chd].frequency = frequency;
229
212
}
230
213
}
231
- return aw::awLedcReadFreq (ch);
214
+ return ledcReadFreq (ch);
232
215
}
233
216
234
217
int32_t analogWriteResolution (int8_t pin, uint8_t resolution) {
@@ -237,7 +220,7 @@ int32_t analogWriteResolution(int8_t pin, uint8_t resolution) {
237
220
if ((aw::pinsStatus[ch / aw::chd].pin ) > 47 ) return -1 ;
238
221
if (aw::pinsStatus[ch / aw::chd].resolution != resolution) {
239
222
ledcDetachPin (pin);
240
- aw::awLedcSetup (ch, aw::pinsStatus[ch / aw::chd].frequency , resolution & 0xF );
223
+ ledcSetup (ch, aw::pinsStatus[ch / aw::chd].frequency , resolution & 0xF );
241
224
ledcAttachPin (pin, ch);
242
225
ledcWrite (ch, aw::pinsStatus[ch / aw::chd].value );
243
226
aw::pinsStatus[ch / aw::chd].resolution = resolution & 0xF ;
@@ -256,41 +239,41 @@ void setPinsStatusDefaults(int32_t value, float frequency, uint8_t resolution, u
256
239
}
257
240
258
241
void printPinsStatus () {
259
- Serial.print (" PWM pins: " );
242
+ Serial.print (F ( " PWM pins: " ) );
260
243
for (int i = 0 ; i < aw::muxSize; i++) {
261
244
if ((aw::pinMask >> i) & 1 ) {
262
- Serial.print (i); Serial.print (" , " );
245
+ Serial.print (i); Serial.print (F ( " , " ) );
263
246
}
264
247
}
265
248
Serial.println ();
266
249
267
250
Serial.println ();
268
251
for (int i = 0 ; i < 8 ; i++) {
269
252
int ch = aw::pinsStatus[i].channel ;
270
- Serial.print (" ch: " );
271
- if (ch < 10 ) Serial.print (" " ); Serial.print (ch); Serial.print (" " );
272
- Serial.print (" Pin: " );
273
- if ((aw::pinsStatus[ch / aw::chd].pin >= 0 ) && (aw::pinsStatus[ch / aw::chd].pin < 10 )) Serial.print (" " );
274
- Serial.print (aw::pinsStatus[ch / aw::chd].pin ); Serial.print (" " );
275
- Serial.print (" Hz: " );
276
- if (aw::awLedcReadFreq (ch) < 10000 ) Serial.print (" " );
277
- if (aw::awLedcReadFreq (ch) < 1000 ) Serial.print (" " );
278
- if (aw::awLedcReadFreq (ch) < 100 ) Serial.print (" " );
279
- if (aw::awLedcReadFreq (ch) < 10 ) Serial.print (" " );
280
- Serial.print (aw::awLedcReadFreq (ch)); Serial.print (" " );
281
- Serial.print (" Bits: " );
282
- if (aw::pinsStatus[ch / aw::chd].resolution < 10 ) Serial.print (" " );
283
- Serial.print (aw::pinsStatus[ch / aw::chd].resolution ); Serial.print (" " );
284
- Serial.print (" Duty: " );
285
- if (aw::pinsStatus[ch / aw::chd].value < 10000 ) Serial.print (" " );
286
- if (aw::pinsStatus[ch / aw::chd].value < 1000 ) Serial.print (" " );
287
- if (aw::pinsStatus[ch / aw::chd].value < 100 ) Serial.print (" " );
288
- if (aw::pinsStatus[ch / aw::chd].value < 10 ) Serial.print (" " );
289
- Serial.print (aw::pinsStatus[ch / aw::chd].value ); Serial.print (" " );
290
- Serial.print (" Ø: " );
291
- if (aw::pinsStatus[ch / aw::chd].phase < 1000 ) Serial.print (" " );
292
- if (aw::pinsStatus[ch / aw::chd].phase < 100 ) Serial.print (" " );
293
- if (aw::pinsStatus[ch / aw::chd].phase < 10 ) Serial.print (" " );
253
+ Serial.print (F ( " ch: " ) );
254
+ if (ch < 10 ) Serial.print (F ( " " )) ; Serial.print (ch); Serial.print (F ( " " ) );
255
+ Serial.print (F ( " Pin: " ) );
256
+ if ((aw::pinsStatus[ch / aw::chd].pin >= 0 ) && (aw::pinsStatus[ch / aw::chd].pin < 10 )) Serial.print (F ( " " ) );
257
+ Serial.print (aw::pinsStatus[ch / aw::chd].pin ); Serial.print (F ( " " ) );
258
+ Serial.print (F ( " Hz: " ) );
259
+ if (ledcReadFreq (ch) < 10000 ) Serial.print (F ( " " ) );
260
+ if (ledcReadFreq (ch) < 1000 ) Serial.print (F ( " " ) );
261
+ if (ledcReadFreq (ch) < 100 ) Serial.print (F ( " " ) );
262
+ if (ledcReadFreq (ch) < 10 ) Serial.print (F ( " " ) );
263
+ Serial.print (ledcReadFreq (ch)); Serial.print (F ( " " ) );
264
+ Serial.print (F ( " Bits: " ) );
265
+ if (aw::pinsStatus[ch / aw::chd].resolution < 10 ) Serial.print (F ( " " ) );
266
+ Serial.print (aw::pinsStatus[ch / aw::chd].resolution ); Serial.print (F ( " " ) );
267
+ Serial.print (F ( " Duty: " ) );
268
+ if (aw::pinsStatus[ch / aw::chd].value < 10000 ) Serial.print (F ( " " ) );
269
+ if (aw::pinsStatus[ch / aw::chd].value < 1000 ) Serial.print (F ( " " ) );
270
+ if (aw::pinsStatus[ch / aw::chd].value < 100 ) Serial.print (F ( " " ) );
271
+ if (aw::pinsStatus[ch / aw::chd].value < 10 ) Serial.print (F ( " " ) );
272
+ Serial.print (aw::pinsStatus[ch / aw::chd].value ); Serial.print (F ( " " ) );
273
+ Serial.print (F ( " Ø: " ) );
274
+ if (aw::pinsStatus[ch / aw::chd].phase < 1000 ) Serial.print (F ( " " ) );
275
+ if (aw::pinsStatus[ch / aw::chd].phase < 100 ) Serial.print (F ( " " ) );
276
+ if (aw::pinsStatus[ch / aw::chd].phase < 10 ) Serial.print (F ( " " ) );
294
277
Serial.print (aw::pinsStatus[ch / aw::chd].phase );
295
278
Serial.println ();
296
279
}
0 commit comments