Итальянский разработчик Леонардо Милиани выложил в открытый доступ исходники leOS (little embedded operating system) – маленького многозадачного ядра для Arduino. В своем блоге он пишет:
To be honest, it should more correct to say that leOS is actually something that is halfway a simple prototype of an real-time operating system (RTOS) and a scheduler. [...]
leOS can run simple tasks that don’t require excessive CPU time but it can be useful in all of those situations where the user wants to let a task run itself out of the main loop.
Ядро leOS обеспечивает диспетчеризацию вызовов пользовательских функций согласно заданным временным интервалам. Для этого leOS использует аппаратный Timer2 для отсчета интервалов между вызовами пользовательских функций, поэтому теряется доступ к функциям ШИМ на пинах D3 и D11. В ядре используется 64-битный счетчик, так что переполнение планировщика произойдет только через 584 942 417 лет.
Для использования leOS необходимо подключить библиотеку и создать экземпляр класса:
#include "leOS.h"
leOS myOS;
Подключение пользовательской функции к планировщику выполняется с помощью метода addTask():
void setup() {
myOS.begin();
myOS.addTask(myFunction, interval);
....
}
Больше информации и исходные коды leOS можно найти здесь.
Автор: kubikus