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

Appearance settings

Commit 0e8361c

Browse filesBrowse files
committed
Shed speed-up code that didn't speed up things.
1 parent e5c19ff commit 0e8361c
Copy full SHA for 0e8361c

File tree

Expand file treeCollapse file tree

1 file changed

+4
-29
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+4
-29
lines changed

‎cores/esp8266/core_esp8266_waveform.cpp

Copy file name to clipboardExpand all lines: cores/esp8266/core_esp8266_waveform.cpp
+4-29Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ namespace {
9696
// we can avoid looking at the other pins.
9797
int startPin = 0;
9898
int endPin = 0;
99-
int nextPin = 0;
10099
uint32_t nextEventCcy;
101100
} waveform;
102101

@@ -284,13 +283,11 @@ static ICACHE_RAM_ATTR void timer1Interrupt() {
284283
wave.nextPeriodCcy = waveform.pins[wave.alignPhase].nextPeriodCcy + wave.nextPeriodCcy;
285284
if (static_cast<int32_t>(waveform.nextEventCcy - wave.nextPeriodCcy) > 0) {
286285
waveform.nextEventCcy = wave.nextPeriodCcy;
287-
waveform.nextPin = waveform.toSet;
288286
}
289287
}
290288
else {
291289
wave.nextPeriodCcy = isrStartCcy;
292290
waveform.nextEventCcy = wave.nextPeriodCcy;
293-
waveform.nextPin = waveform.toSet;
294291
}
295292
if (!wave.expiryCcy) {
296293
wave.mode = WaveformMode::INFINITE;
@@ -310,31 +307,13 @@ static ICACHE_RAM_ATTR void timer1Interrupt() {
310307

311308
// Exit the loop if the next event, if any, is sufficiently distant.
312309
const uint32_t isrTimeoutCcy = isrStartCcy + ISRTIMEOUTCCYS;
313-
uint32_t isrNextEventCcy;
314-
uint32_t busyPins = waveform.enabled;
315-
if (waveform.enabled) {
316-
if (static_cast<int32_t>(waveform.nextEventCcy - isrTimeoutCcy) >= 0) {
317-
busyPins = 0;
318-
}
319-
else {
320-
isrNextEventCcy = waveform.nextEventCcy;
321-
waveform.nextEventCcy = isrStartCcy + MAXIRQTICKSCCYS;
322-
if (!(waveform.enabled & (1UL << waveform.nextPin))) {
323-
waveform.nextPin = waveform.startPin;
324-
}
325-
}
326-
}
327-
else {
310+
uint32_t busyPins = (static_cast<int32_t>(waveform.nextEventCcy - isrTimeoutCcy) < 0) ? waveform.enabled : 0;
311+
if (!waveform.enabled) {
328312
waveform.nextEventCcy = isrStartCcy + MAXIRQTICKSCCYS;
329313
}
330314

331-
const int stopPin = waveform.nextPin;
332-
int pin = stopPin;
333315
while (busyPins) {
334-
while (static_cast<int32_t>(isrNextEventCcy - ESP.getCycleCount()) > 0) {
335-
}
336-
isrNextEventCcy = isrTimeoutCcy;
337-
do {
316+
for (int pin = waveform.startPin; pin <= waveform.endPin; ++pin) {
338317
const uint32_t pinBit = 1UL << pin;
339318
// If it's not on, ignore
340319
if (!(busyPins & pinBit))
@@ -415,14 +394,10 @@ static ICACHE_RAM_ATTR void timer1Interrupt() {
415394
busyPins ^= pinBit;
416395
if (static_cast<int32_t>(waveform.nextEventCcy - waveNextEventCcy) > 0) {
417396
waveform.nextEventCcy = waveNextEventCcy;
418-
waveform.nextPin = pin;
419397
}
420398
}
421-
else if (static_cast<int32_t>(isrNextEventCcy - waveNextEventCcy) > 0) {
422-
isrNextEventCcy = waveNextEventCcy;
423-
}
424399
}
425-
} while ((pin = (pin < waveform.endPin) ? pin + 1 : waveform.startPin) != stopPin);
400+
}
426401
}
427402

428403
int32_t callbackCcys = 0;

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.