Hello :) I'm happy to announce a new version of uTask. This release is mainly a bugfix - while using semaphores some tasks could have been woken-up too early. I also added idle task handler. You can now set function that will be called when there were no tasks run in current iteration of utask_process(). This function is called with one argument: number of ticks left to next task executing. You can use it to put uC to sleep, just write an appropriate function.