-
- Я могу ошибаться в рассуждениях. Peter_M(691 знак., 23.10.2020 15:22)
- Системы с "тиком" -- не нужны, если это не time triggered
архитектура. См. мой ответ выше. Он даёт таймеры с минимальной
дискретностью (а не с тиками по 50мкс и сверхчастыми прерываниями).
Правильно, незачем вообще что-то инкрементировать. Поэтому вся
арифметика над абсолютным значением времени в будущем, а не над
временными интервалами (т.е. "проснуться когда время >=
13:00", а не "спать 3 часа"). Равно как и незачем за раз
обрабатывать более одного таймера, если их fk0(23 знак., 23.10.2020 15:49)
- А потом такой берет и переводит стрелки часов с 1 января 1970 года
в 2020 год. Или наоборот. lloyd(66 знак., 23.10.2020 19:55)
- Это само собой и обязательно. Я поэтому и написал -- время от момента старта прибора. Всегда нужно монотонное внутреннее время. Для включения чего-то по-расписанию использовать календарное время тоже нельзя. Верней можно, но функция которая "спит до такого-то календарного времени" получается достаточно сложной: fk0(1022 знак., 23.10.2020 21:05, ссылка)
- А потом такой берет и переводит стрелки часов с 1 января 1970 года
в 2020 год. Или наоборот. lloyd(66 знак., 23.10.2020 19:55)
- Какая точность нужна для выдержек времени? Обычно программные таймеры не требуют шести знаков точности. Исходя из потребной точности/разрешения следует выбрать максимальный интервал аппаратных прерываний. Если не инкрементировать частные таймеры, то придется сохранять стартовые значения софтовых таймеров и выполнять математику сравнения с единым таймером. Оно зачем? Никакой экономии не будет. Сплошная путаница. А так, назначили пересчет, сбросили тело таймера в коде (тело my504(109 знак., 23.10.2020 15:45)
- у меня подобное реализовано на регистрах сравнения таймера, также
можно устанавливать произвольные значения , при установке считываем
текущее значение счетчика , добавляем новое время, грузим в
свободный регистр сравнения, в таблицу кладем указатель на функцию
которую нужно ввызвать по таймауту! все работает аппаратное и не
жрет ресурсов! На 3 аппаратных таймера stm32 выходит 12 независимых
счетчиков - Aleksey_75(23.10.2020 15:36)
- Вы о каких ресурсах говорите? О вычислительных? А ничего, если
аппаратные гораздо ценнее, если речь идет о столь пустяковой
задаче? Вы предложили использовать не просто таймеры, а полноценные
таймеры с 4 каналами... Странный выбор... - my504(23.10.2020 15:55)
- вы предлагаете каждую ms парсить значения ? вот это действительно очень затратно! У меня это не пустяковая задача! Практически вся программа построена на отложенных функциях - Aleksey_75(23.10.2020 16:03)
- Вы о каких ресурсах говорите? О вычислительных? А ничего, если
аппаратные гораздо ценнее, если речь идет о столь пустяковой
задаче? Вы предложили использовать не просто таймеры, а полноценные
таймеры с 4 каналами... Странный выбор... - my504(23.10.2020 15:55)
- Системы с "тиком" -- не нужны, если это не time triggered
архитектура. См. мой ответ выше. Он даёт таймеры с минимальной
дискретностью (а не с тиками по 50мкс и сверхчастыми прерываниями).
Правильно, незачем вообще что-то инкрементировать. Поэтому вся
арифметика над абсолютным значением времени в будущем, а не над
временными интервалами (т.е. "проснуться когда время >=
13:00", а не "спать 3 часа"). Равно как и незачем за раз
обрабатывать более одного таймера, если их fk0(23 знак., 23.10.2020 15:49)
- Я могу ошибаться в рассуждениях. Peter_M(691 знак., 23.10.2020 15:22)