Цитата(NewMaestro @ Feb 3 2009, 01:54)

Такой код:
Код
volatile unsigned int msCounter = 0;
...
if (msCounter >= 1000) {
msCounter = 0;
//...
}
Такой код предполагает, что прерывания таймера происходят с частотой 1 МГц. Оно реально нужно? Есть ли хоть одна задача, требующая такого дискрета по времени? 4 мкс не спасут? Тогда все укладывается в 1-байтовый счетчик.
Ладно, будем считать, что нужно время с разрешением в 1мкс. Что мешает выполнять все модификации счетчика в прерывании? Или наоборот, в прерывании только взводить флажок, а обрабатывать его, инкрементируя или обнуляя не-volatile счетчик, вне прерывания?
Цитата
Вопрос: Можно ли заставить компилятор автоматически разруливать такие вещи?
Можно выбирать контроллер под задачу.
Можно, придумывая структуру программы, учитывать возможности выбранного контроллера.
Можно ...
Нельзя думать, что компилятор будет читать Ваши мысли.
ЗЫЖ имхо, большинство бед человечества от уверенных в себе людей. Я предпочитаю сомневаться в своей уверенности.