| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /**
- * TaskScheduler Test of microsecond scheduling resolution
- *
- * Task 1 runs starting with 211 microseconds intervals, doubling the interval on every iteration
- * until it wraps when interval reaches about 72 minutes mark
- *
- * Task 2 provides heartbeat at a steady 5 seconds intervals
- *
- */
-
- #define _TASK_MICRO_RES
- #include <TaskScheduler.h>
- #define T1_INIT (211L)
- Scheduler runner;
- // Callback methods prototypes
- void t1Callback();
- void t1OnDisable();
- void t2Callback();
- unsigned long t1_interval = T1_INIT;
- // Tasks
- Task t1(t1_interval, 1, &t1Callback, &runner, true, NULL, &t1OnDisable); //adding task to the chain on creation
- Task t2(5 * TASK_SECOND, TASK_FOREVER, &t2Callback, &runner, true); //adding task to the chain on creation
- void t1Callback() {
- unsigned long t = micros();
- Serial.print("t1: ");
- Serial.println(t);
- }
- void t1OnDisable() {
- t1_interval += t1_interval;
- if (t1_interval < T1_INIT) t1_interval = T1_INIT;
- t1.setInterval(t1_interval);
- t1.restartDelayed();
- }
- void t2Callback() {
- unsigned long t = micros();
- Serial.print("t2: ");
- Serial.print(t);
- Serial.println(" heartbeat");
- }
- void setup () {
- Serial.begin(115200);
- Serial.println("Scheduler TEST Microsecond Resolution");
-
- Serial.println("5 seconds delay");
- delay(5000);
-
- runner.startNow(); // This creates a new scheduling starting point for all ACTIVE tasks.
- // PLEASE NOTE - THIS METHOD DOES NOT ACTIVATE TASKS, JUST RESETS THE START TIME
- t1.delay(); // Tasks which need to start delayed, need to be delayed again after startNow();
- // Alternatively, tasks should be just enabled at the bottom of setup() method
- // runner.enableAll();
- // t1.delay();
- }
- void loop () {
- runner.execute();
- }
|