ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
215396 Топик полностью
koyodza (13.10.2010 12:08, просмотров: 106) ответил fk0 на Во-первых надуманно, во-вторых есть методы обхода. Да, у каждого модуля есть функция, которую нужно вызывать регулярно. Не обязательно раз в 10мс, как можно чаще, но не реже, чем раз в 100мс -- вот так верней. Функция внутри сама проверяет время
всё верно, только чтобы не морочиться с атомарностью доступа к глобальному таймеру, доступ к нему вне функции main у меня отсутствует, а его значение передаётся при вызове задачи если поправить Ваш код, выглядит это примерно так: int main() { /* do some initialization.. */ module1_init(); module2_init(); ... /* main loop */ while (1) { module1_func(clock()); module2_func(clock()); ... } } void module1_func(clock_t tm) { static clock_t prevTime = 0; switch (state) { case STATE1: ... break; case STATE2: if (tm - prevTime < DELAYTIME) break; prevTime = tm; do_something(); break; } }