|
Обнаружил, что задержки стали отставать.
Системныйе часы установлены на 2mS. При срабатывании аппаратного таймера запускается сервис OSTimer
в котором устанавливается флаг
/* set the semaphore that OSSched() will test to see if */
/* processing of the delay queue is required. */
#if OSENABLE_DELAYS
OSglStat.timerTick = 1;
#endif
Флаг OSglStat.timerTick, как я понял должен быть обработан в OSSched()
до прихода следующего тика(2мС)
Но я же не могу отдавать управление от задачи каждые 2мС.
Что же получается? Задача может получить управление на время <2*TICK.
Ну допустим увеличу я тики до 10мС, но тогда разрешение падает. И если необходима задержка скажем, в 3мС, то задержка будет доходить до 20мС несмотря на то, что система находиться в простое и нет задач требующих выполнение.
Что посоветуете? uCos не предлагать :-)
С уважением, Иван.
E-mail: info@telesys.ru