diff options
Diffstat (limited to 'examples/Scheduler_example6_IDLE/Scheduler_example6_IDLE.ino')
| -rw-r--r-- | examples/Scheduler_example6_IDLE/Scheduler_example6_IDLE.ino | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/examples/Scheduler_example6_IDLE/Scheduler_example6_IDLE.ino b/examples/Scheduler_example6_IDLE/Scheduler_example6_IDLE.ino new file mode 100644 index 0000000..f4df5d8 --- /dev/null +++ b/examples/Scheduler_example6_IDLE/Scheduler_example6_IDLE.ino @@ -0,0 +1,77 @@ + +/** + * This is a test to prove that processor really goes into IDLE sleep. + * For this setup: + * + * + +Task c(10, -1, &Count, &ts); +Task t(10000, 1, NULL, &ts, true, &tOn, &tOff); + +The result are: + +1): With #define _TASK_SLEEP_ON_IDLE_RUN enabled +Start +c1=10771 +c2=1001 + + +and + +2): With #define _TASK_SLEEP_ON_IDLE_RUN disabled (commented out) +Start +c1=529783 +c2=1001 + +C1 is scenario 2) is much higher than in scenario 1) because processor is put to sleep for 1), but not for 2) + + */ + + +/** + * Compile and run once with _TASK_SLEEP_ON_IDLE_RUN enabled, then with _TASK_SLEEP_ON_IDLE_RUN disabled. + * Compare the results. + */ + +//#define _TASK_SLEEP_ON_IDLE_RUN +#include <TaskScheduler.h> + +Scheduler ts; + +Task c(10, -1, &Count, &ts); +Task t(10000, 1, NULL, &ts, true, &tOn, &tOff); + + +volatile unsigned long c1, c2; +bool tOn() { + c1 = 0; + c2 = 0; + c.enable(); + + return true; +} + +void tOff() { + c.disable(); + Serial.print("c1=");Serial.println(c1); + Serial.print("c2=");Serial.println(c2); +} + +void setup() { + // put your setup code here, to run once: + Serial.begin(115200); + Serial.println("Start"); + t.delay(); + // ts.allowSleep(false); +} + +void Count() { + c2++; +} + + +void loop() { + // put your main code here, to run repeatedly: + ts.execute(); + c1++; +} |
