Цитата(BSVi @ Sep 3 2008, 13:06)

нет, я не делаю ОС - просто программа, где будет много тайм-аутов, для них хочется иметь хороший (удобный) таймер. При этом программа будет работать на msp430, LPC2000 и PC.
Раз это не ОС, то для организации таймаутов ИМХО вовсе не нужно 255 таймеров. Вполне достаточно одного, "тикающего" с разумно-минимально-требуемым интервалом времени. Каждый процесс в котором требуется таймаут запрашивает у общего таймера его текущее значение и сам сравнивает с величиной требуемого ему таймаута простым беззнаковым вычитанием двух переменных. Если разность внутри диапазона таймаута, то в зависимости от поведенческой модели процесс может передать управление следующему (в суперцикле), либо ожидать окончания таймаута. Если вы используете 1мс "тики" таймера, то 16-и разрядная переменная, инкрементируемая в прерывании от таймера на величину соответствующую 1мс времени, даст максимальный интервал времени в 65,5 с, 32-х разрядная переменная "тиков" дает уже период более, чем в полтора месяца. Только естественно нужно на платформах меньшей разрядности обеспечить атомарность доступа к такой переменной.
Цитата(BSVi @ Sep 3 2008, 13:06)

Сейчас я решил, что вообще весь модуль таймера нужно вынести в HAL. Те переписать его для всех платформ так, чтоб HAL экспортировал одинаковые функции для таймеров.
Оформите его как функцию-драйвер. С командами инициализации, чтения, записи и т.п. Для разных платформ вам нужно будет лишь поправить аппаратно-зависимую часть инициализации таймера. А обращения/вызовы этой функции-драйвера останутся одинаковыми.