mirror of
https://github.com/wled/WLED.git
synced 2025-07-19 16:56:35 +00:00
ESP8266PWM: Annotate sources
Add additional clarification as to the original source URL and the specific local patches.
This commit is contained in:
parent
ff39a8db3f
commit
2fc2f47d06
@ -1,6 +1,8 @@
|
|||||||
/* esp8266_waveform imported from platform source code
|
/* esp8266_waveform imported from platform source code
|
||||||
Modified for WLED to work around a fault in the NMI handling,
|
Modified for WLED to work around a fault in the NMI handling,
|
||||||
which can result in the system locking up and hard WDT crashes.
|
which can result in the system locking up and hard WDT crashes.
|
||||||
|
|
||||||
|
Imported from https://github.com/esp8266/Arduino/blob/7e0d20e2b9034994f573a236364e0aef17fd66de/cores/esp8266/core_esp8266_waveform_pwm.cpp
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -497,6 +499,7 @@ static inline IRAM_ATTR uint32_t earliest(uint32_t a, uint32_t b) {
|
|||||||
return (da < db) ? a : b;
|
return (da < db) ? a : b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----- @willmmiles begin patch -----
|
||||||
// NMI crash workaround
|
// NMI crash workaround
|
||||||
// Sometimes the NMI fails to return, stalling the CPU. When this happens,
|
// Sometimes the NMI fails to return, stalling the CPU. When this happens,
|
||||||
// the next NMI gets a return address /inside the NMI handler function/.
|
// the next NMI gets a return address /inside the NMI handler function/.
|
||||||
@ -519,6 +522,7 @@ static inline IRAM_ATTR void nmiCrashWorkaround() {
|
|||||||
__asm__ __volatile__("wsr %0,epc3; wsr %1,eps3"::"a"(epc3_backup),"a"(eps3_backup));
|
__asm__ __volatile__("wsr %0,epc3; wsr %1,eps3"::"a"(epc3_backup),"a"(eps3_backup));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// ----- @willmmiles end patch -----
|
||||||
|
|
||||||
|
|
||||||
// The SDK and hardware take some time to actually get to our NMI code, so
|
// The SDK and hardware take some time to actually get to our NMI code, so
|
||||||
@ -540,7 +544,9 @@ static inline IRAM_ATTR void nmiCrashWorkaround() {
|
|||||||
#define MINIRQTIME microsecondsToClockCycles(6)
|
#define MINIRQTIME microsecondsToClockCycles(6)
|
||||||
|
|
||||||
static IRAM_ATTR void timer1Interrupt() {
|
static IRAM_ATTR void timer1Interrupt() {
|
||||||
|
// ----- @willmmiles begin patch -----
|
||||||
nmiCrashWorkaround();
|
nmiCrashWorkaround();
|
||||||
|
// ----- @willmmiles end patch -----
|
||||||
|
|
||||||
// Flag if the core is at 160 MHz, for use by adjust()
|
// Flag if the core is at 160 MHz, for use by adjust()
|
||||||
bool turbo = (*(uint32_t*)0x3FF00014) & 1 ? true : false;
|
bool turbo = (*(uint32_t*)0x3FF00014) & 1 ? true : false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user