mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
Fix crash in Servo library when flash caching is disabled (#898)
This commit is contained in:
parent
000e762af3
commit
28890b39e6
@ -57,7 +57,11 @@ static uint8_t s_servoCount = 0; // the total number of attached s_se
|
||||
// Interrupt handler template method that takes a class that implements
|
||||
// a standard set of methods for the timer abstraction
|
||||
//------------------------------------------------------------------------------
|
||||
template <class T> void Servo_Handler(T* timer)
|
||||
template <class T>
|
||||
static void Servo_Handler(T* timer) ICACHE_RAM_ATTR;
|
||||
|
||||
template <class T>
|
||||
static void Servo_Handler(T* timer)
|
||||
{
|
||||
uint8_t servoIndex;
|
||||
|
||||
@ -101,15 +105,27 @@ template <class T> void Servo_Handler(T* timer)
|
||||
}
|
||||
}
|
||||
|
||||
static void handler0() ICACHE_RAM_ATTR;
|
||||
static void handler0()
|
||||
{
|
||||
Servo_Handler<ServoTimer0>(&s_servoTimer0);
|
||||
}
|
||||
|
||||
static void handler1() ICACHE_RAM_ATTR;
|
||||
static void handler1()
|
||||
{
|
||||
Servo_Handler<ServoTimer1>(&s_servoTimer1);
|
||||
}
|
||||
|
||||
static void initISR(ServoTimerSequence timerId)
|
||||
{
|
||||
#if !defined (SERVO_EXCLUDE_TIMER0)
|
||||
if (timerId == ServoTimerSequence_Timer0)
|
||||
s_servoTimer0.InitInterrupt([]() {Servo_Handler<ServoTimer0>(&s_servoTimer0); });
|
||||
s_servoTimer0.InitInterrupt(&handler0);
|
||||
#endif
|
||||
#if !defined (SERVO_EXCLUDE_TIMER1)
|
||||
if (timerId == ServoTimerSequence_Timer1)
|
||||
s_servoTimer1.InitInterrupt([]() {Servo_Handler<ServoTimer1>(&s_servoTimer1); });
|
||||
s_servoTimer1.InitInterrupt(&handler1);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -243,4 +259,3 @@ bool Servo::attached()
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -221,7 +221,3 @@ private:
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user