mazur (25.07.2013 15:22 - 15:35, просмотров: 423) ответил Ксения на А если, к примеру, у вас Proc_Heat_Init_2 ожидания не дождется ("один год"), то у вас вся Main loop от этого в пробку встанет?
Вы про программный косяк или как работает Proc_Timer? Или про то, что RTOS по времянке или завершению задачи переключится на другую? Как у меня работает Service_Timers. Есть массив из таймеров, по три байта на таймер. Первый байт статусный. Два байта - таймер. Первый бит статусного байта - признак, что таймер запущен. Второй бит - признак, что время завершено. При системном тике 1 мс, максимальное время таймера 65535 мс. Дальше я начинаю выстраивать таймеры с применением дополнительных счетчиков, где шаг скажем 100 мс, 1 с. В Proc_Timer cначала сбрасыватся флаг T SREG. Cчитывается статусный байт требуемого таймера. Если флаг-признак завершения задержки сброшен, выход без установки флага T. Если флаг установлен, сброс флага-признака завершения задержки, установка флага T. При выходе из Proc_Timer проверяется флаг T. Если флаг сброшен (время не вышло), то выход из подпрограммы или выполнение кода. Если флаг установлен (ыремя вышло), выполнение другого кода.