Просмотр исходного кода

v3.8.2 - support for tickless execution under FreeRTOS

Anatoli Arkhipenko 2 лет назад
Родитель
Сommit
86e989f5f2
1 измененных файлов с 8 добавлено и 4 удалено
  1. 8 4
      src/TaskScheduler.h

+ 8 - 4
src/TaskScheduler.h

@@ -1560,10 +1560,14 @@ bool Scheduler::execute() {
     if ( aNextRun ) {
         *aNextRun = 0;  // next iteration should be immediate by default
         // if the pass was "idle" and there are tasks scheduled
-        if ( idleRun && iNextRunDetermined & _TASK_NEXTRUN_TIMED ) {
-            m = millis();
-            if ( iNextRun > m ) *aNextRun = ( iNextRun - m );
-        }
+        do {
+          if ( !idleRun ) break;
+          if ( (iNextRunDetermined & _TASK_NEXTRUN_IMMEDIATE) ) break;
+          if ( iNextRunDetermined == _TASK_NEXTRUN_UNDEFINED ) break;
+          m = millis();
+          if ( iNextRun <= m) break;
+          *aNextRun = ( iNextRun - m );
+        } while (0);
     }
 #endif