Цитата(rezident @ Aug 26 2010, 12:51)

Лучше с точки зрения
количества абстракций. Ведь, например, внутри одного прибора не ставят кучу RTC для отсчета времени на каждый узел индивидуально. Я этот этап уже проходил когда-то. Опыт - сын ошибок трудных
В первых проектах я делал таймер, который просто инкрементировался на единичку в прерывании. Хватало. Потом где-то стало нужно ориентироваться не просто на абстрактные "тики", а с более определенными единицами времени. Пришлось считать в мс, "тики" подгонять именно под эту единицу времени и инкрементировать счетчик кратно минимальной единице квантования (1мс, 4мс, 10мс, 15мс и т.п.). Потом образовалась некая кучка проектов с примерно одинаковой функциональностью, но с разным количественным набором их. В одном проекте три локальных счетчика, в другом семь, в третьем один. Да забодало!

В каждом нужно отдельно переписывать таймерное прерывание, хотя функционально оно одинаковое. Так я и пришел к единому таймеру. Мне проще написать одну функцию запроса времени к единому таймеру один раз, чем переписывать ее в каждом проекте под требуемые особенности функциональности.
Т.е. лучше тем, что стало привычным.
Мне привычнее определить для проекта минимальный требуемый тик, из которого компилятор сделает все производные кванты (достаточно в дефайнах задать Fosc и собственно тик; а квантов-то обычно требуется 2-3-4).
Для таймеров событий мне никогда не требуется абсолютное время (в масштабе коробочки), и эти таймеры я делаю минимально необходимой разрядности. Таймеры запускаются по возникновению события и декрементируются по прошествии требуемого кванта.
Таймер события живёт полем в структуре, другим полем является состояние события. Если событие приключается от дребезжащего (или, н-р, медленно ползущего зашумлённого, или кнопки радиобрелока) входа, то состояние события фильтруется одной и той же функцией, которая вызывается с указателем на поле состояния события и с квантом, требуемым для этого входа.
(я когда-то использовал механизм вертикальных счётчиков by Scott Dattolo, помянутый
777777, но ушёл от него к индивидуальному горизонтальному счётчику, живущему в поле состояния события. Вертикальные счётчики тем не менее удобны для фильтрации многих входов с одинаковой динамикой - н-р, для клавиатуры 4х4).
В моих погремушках с учётом обычно используемых 8-битных контроллеров такой подход получается более экономичным и по ОЗУ, и по ПЗУ.