@@ -142,7 +142,6 @@ class EncButton2 {
142142 uint8_t tickISR (uint8_t p0 = 0 , uint8_t p1 = 0 , uint8_t p2 = 0 ) {
143143 if (!_isrFlag) {
144144 _isrFlag = 1 ;
145-
146145 if (_EB_TYPE <= 3 ) { // РЕАЛЬНОЕ УСТРОЙСТВО
147146 if (_EB_TYPE >= 2 ) poolEnc (fastRead (0 ) | (fastRead (1 ) << 1 )); // энк или энк с кнопкой
148147 if (_EB_TYPE <= 2 ) { // кнопка или энк с кнопкой
@@ -160,8 +159,8 @@ class EncButton2 {
160159 if (_btnState || readF (15 )) poolBtn (); // опрос если кнопка нажата или не вышли таймауты
161160 }
162161 }
162+ _isrFlag = 0 ;
163163 }
164- _isrFlag = 0 ;
165164 return EBState;
166165 }
167166
@@ -267,9 +266,9 @@ class EncButton2 {
267266 _prev = state;
268267 #ifdef EB_HALFSTEP_ENC // полушаговый энкодер
269268 // спасибо https://github.com/GyverLibs/EncButton/issues/10#issue-1092009489
270- if ((state == 0x3 || state == 0x0 ) && _ecount != 0 ) {
269+ if ((state == 0x3 || state == 0x0 ) && _ecount) {
271270 #else // полношаговый
272- if (state == 0x3 && _ecount != 0 ) { // защёлкнули позицию
271+ if (state == 0x3 && _ecount) { // защёлкнули позицию
273272 #endif
274273 uint16_t ms = millis () & 0xFFFF ;
275274 EBState = (_ecount < 0 ) ? 1 : 2 ;
@@ -391,24 +390,25 @@ class EncButton2 {
391390
392391 inline void setF (const uint8_t x) __attribute__ ((always_inline)) {flags |= 1 << x;}
393392 inline void clrF (const uint8_t x) __attribute__ ((always_inline)) {flags &= ~(1 << x);}
394- inline bool readF (const uint8_t x) __attribute__ ((always_inline)) {return ( flags >> x) & 1 ;}
393+ inline bool readF (const uint8_t x) __attribute__ ((always_inline)) {return flags & ( 1 << x) ;}
395394
396- uint8_t _prev : 2 ;
395+ uint8_t _amount : 6 ;
396+ int8_t _dir : 2 ;
397+
397398 uint8_t EBState : 4 ;
399+ uint8_t _prev : 2 ;
398400 bool _btnState : 1 ;
399401 bool _encRST : 1 ;
400- bool _isrFlag : 1 ;
402+ bool _isrFlag = 0 ;
401403 uint16_t flags = 0 ;
402-
403- #ifdef EB_BETTER_ENC
404- int8_t _ecount = 0 ;
405- #endif
406-
404+
407405 uint16_t _debTmr = 0 ;
408406 uint8_t _holdT = (EB_HOLD >> 7 );
409- int8_t _dir = 0 ;
410407 void (*_callback[_EB_MODE ? 14 : 0 ])() = {};
411- uint8_t _amount = 0 ;
408+
409+ #ifdef EB_BETTER_ENC
410+ int8_t _ecount = 0 ;
411+ #endif
412412
413413 uint8_t _pins[EB_PIN_AM];
414414
0 commit comments