Цитата(piz2383 @ Jul 29 2009, 19:16)

Вопрос, в чем и где я ошибился? Просто мне нужно гарантированно добиться задержки в 6 микросекунд.
Во-первых, Вы добавляете накладные расходы на организацию цикла и вызов подпрограммы (если, конечно, она не заинлайнена). Это немного, но все же.
Второе и главное - сколько, по-вашему, будет выполняться такой код:
Код
unsigned int delay = ((coef*22)/15);
Аппаратного делителя на борту нет, вот и вылезает дикое время.
Цитата(piz2383 @ Jul 29 2009, 19:16)

И встречный вопрос. Никто не поделиться кодом, который делает задежку в микросекундах без таймеров, а так просто с помощью нупов или циклом для частоты 48 Мгц???
Получается что-то вроде:
Код
volatile unsigned int x = us * 12;
while(--x);
Умножение, естественно, лучше исключить, т.е. подсчитать значение x заранее.
И результат компиляции все равно надо проверять дизассемблированием.