Цитата(sergey sva @ Dec 12 2013, 16:17)

Не приходилось ничего подобного делать. Такой алгоритм не будет работать?, крутиться цикл в нем идет счет, после отсчета 1000 циклов, сохранить состояние всех регистров счетчик команд ... после записать в счетчик команд адрес следующей функции и востановить все регистры .... отсчитать еще 1000 тактов.?
Это обычные прерывания.
Средний джиттер в пару десятков тактов будет (иногда больше), но реализация примитивнейшая.
Запускаете 3-и compare канала в таймерах. Каждый вызывает свое прерывание в которых выполняются задачи, каждая со своим стеком.
Возврата из прерывание не нужно. Просто каждое следующее прерывание восстанавливает свой стек и разрешает прерывание для следующей задачи.
И так они и прерывают друг друга бесконечно.
Но надо знать какие регистры требуют сохранения состояния, а какие нет. Если задачи написаны на C-и.
Поэтому лучше действительно посмотреть, как делается переключение контекста в RTOS uCOS-II