Cooperating Sequential Tasks

  1. Introduction
    1. Arduino
    2. Interrupts
  2. Simple Tasks
  3. Multiple Tasks
  4. Communicating Tasks
  5. Communicating Values
  6. Synchronising Tasks
  7. Buffered Communication
  8. Multiple Senders
  9. Conditional Tasks
  10. Transput
  11. Implementation
    1. Common Data
    2. Tasks
    3. task_builder
    4. task
    5. channel
    6. virtual_machine
    7. set
    8. queue
    9. clock
    10. standard
    11. Adjusting Limits

Cooperating Sequential Tasks

This project is designed to introduce many of the fundamental concepts associated with multitasking and concurrent systems using nothing more than a simple Arduino system. Everything is described in C++, and a knowledge of the Arduino libraries associated with this is assumed[1], but no knowledge of low-level hardware is required.

It introduces a multitasking library which provides the means to structure Arduino systems as networks of cooperating sequential tasks. In such systems different components are linked to each other by communication rather than by sharing memory.


The Arduino library, which supports the functionality described in this document, can be downloaded from here. To install the library file, either use the “Add .ZIP Library” option found under “Sketch.Include Library” menu in the Arduino IDE, or unzip the downloaded file and copy the resulting “Tasks” folder to your Arduino libraries folder. All of the examples in this document will be available via the "Examples" option in the “File” menu listed under “Tasks”.

Next: Introduction