diff --git a/src/ClickEncoder.cpp b/src/ClickEncoder.cpp index 3684db3..e6660da 100644 --- a/src/ClickEncoder.cpp +++ b/src/ClickEncoder.cpp @@ -10,6 +10,12 @@ // ---------------------------------------------------------------------------- #include "ClickEncoder.h" +#if defined(ESP8266) +#define CLICK_ENCODER_ISR_ATTR IRAM_ATTR +#else +#define CLICK_ENCODER_ISR_ATTR +#endif + // ---------------------------------------------------------------------------- // Button configuration (values for 1ms timer service calls) @@ -112,7 +118,7 @@ AnalogButton::AnalogButton(int8_t BTN, int16_t rangeLow, int16_t rangeHigh) : Cl // ---------------------------------------------------------------------------- // call this every 1 millisecond via timer ISR // -void ClickEncoder::service(void) +void CLICK_ENCODER_ISR_ATTR ClickEncoder::service(void) { bool moved = false; @@ -299,7 +305,7 @@ ClickEncoder::Button ClickEncoder::getButton(void) return ret; } -bool ClickEncoder::getPinState() { +bool CLICK_ENCODER_ISR_ATTR ClickEncoder::getPinState() { bool pinState; if (analogInput) { int16_t pinValue = analogRead(pinBTN); @@ -311,3 +317,4 @@ bool ClickEncoder::getPinState() { } #endif +#undef CLICK_ENCODER_ISR_ATTR