This has been a long time coming. A few years ago (back in 2012!) I wrote a basic TT scheduler which was really more of a ‘proof of concept’ and not really friendly for an everyday Arduino user. It relied on a strong knowledge of C or C++ and needed Eclipse with an Arduino plugin to get it to work. I’ve promised myself since then that I’d write a proper Arduino library to demonstrate time-triggered scheduling to Arduino IDE users as well as learning some C++ skills for myself. Continue reading
** EDIT 27/04/2016: I have now created a ‘user-friendly’ library compatible with the Arduino IDE **
** EDIT: I have now added the code for this to a git repo here. **
My previous post on this topic showed a simple time triggered task scheduler for the Arduino / AVR microcontroller platforms. Although this worked very well, there were some areas which could be improved in the way the scheduler worked. To recap, the previous scheduler worked as follows:
How it worked:
- The program sits in an empty loop when idle.
- “Ticks” are generated by the timer driven interrupt.
- Tasks have a period and an offset:
- Period – How often the task is executed
- Offset – The first tick in which the task is executed
- The period and offset of the tasks are adjusted manually to spread the tasks out, ensuring that tasks don’t collide.
- The ISR iterates through each task in the schedule and executes any task that is ready to run.
- Doing this ensures that tasks are executed with precise timing (as precise as the ATMEGA timer allows). Continue reading