|
Что то я не понял, что надо изменить?
1.Если одна задача долго не отает управления - то все другие задачи будут задержаны.
2.Если система простаивает - то задержки будут отрабатываться правильно.
Усложнение логики обработки таймерных прерываний ничего не изменит (касательно обоих утверждений). Поэтому я не вижу, что же надо улучшить?
Да, системные часы будут отставать от астрономических. Ну так заведи отдельные астрономические часы, можно для этого то же таймерное прерывание использовать.
В целом же, кооперативная RTOS предполагает, что все задачи выполняются быстрее чем период системных часов. Вызывай из долгой задачи OS_Yield() почаще...
Может я чего-то не понял в вопросе?
E-mail: info@telesys.ru