Oh-Doo-Yong / TaskScheduler

Cooperative multitasking for arduino microcontrollers

Home Page:http://playground.arduino.cc/Code/TaskScheduler

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Task Scheduler

Cooperative multitasking for Arduino microcontrollers

Version 2.6.1: 2018-03-15

OVERVIEW:

A lightweight implementation of cooperative multitasking (task scheduling) supporting:

  1. Periodic task execution, with dynamic execution period in milliseconds (default) or microseconds (if explicitly enabled) – frequency of execution
  2. Number of iterations (limited or infinite number of iterations)
  3. Execution of tasks in predefined sequence
  4. Dynamic change of task execution parameters (frequency, number of iterations, callback methods)
  5. Power saving via entering IDLE sleep mode when tasks are not scheduled to run
  6. Support for event-driven task invocation via Status Request object
  7. Support for task IDs and Control Points for error handling and watchdog timer
  8. Support for Local Task Storage pointer (allowing use of same callback code for multiple tasks)
  9. Support for layered task prioritization
  10. Support for std::functions (ESP8266 only)
  11. Overall task timeout

Scheduling overhead: between 15 and 18 microseconds per scheduling pass (Arduino UNO rev 3 @ 16MHz clock, single scheduler w/o prioritization)

TaskScheduler was tested on the following platforms:

  • Arduino Uno R3
  • Arduino Nano
  • Arduino Micro
  • ATtiny85
  • ESP8266 (Node MCU v2.0)
  • ESP32
  • Teensy (tested on Teensy 3.5)

TaskScheduler process diagram

Changelog:

Version Version 1 Version 2
2.6.1 (current version)
1.9.2 2.6.0
1.9.0 2.5.2
1.8.5 2.5.1
1.8.4 2.5.0
1.8.3 2.4.0
1.8.2 2.3.0
1.8.1 2.2.1
1.8.0 2.2.0
1.7.0 2.1.0
1.6.0 2.0.1
1.5.1 2.0.0
1.5.0
1.4.1
1.0.0

For detailed functionality overview please refer to TaskScheduler documentation in the 'extras' folder or in the Wiki page.

Check out what TaskScheduler can do:

About

Cooperative multitasking for arduino microcontrollers

http://playground.arduino.cc/Code/TaskScheduler

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 100.0%