Цитата(west329_ @ Jul 14 2008, 19:44)

Можно какимто способом обрезать лишние операции ? Уж больно жалко времени контроллера.
...
TCNT0 = 0x1A ; // reload counter value
...
Если имеется возможность, то лучше не делать "Reload counter value"
Использовать OCR0 и CTC режим для автоперезагрузки таймера.
Прерывание по OCF0 вместо TOV0. Как мимимум на 2 операции меньше будет, но самое главное -
пропадет джиттер интервалов таймера.
Еще. IMHO TIMEms лучше сделать U32 чтобы счетчик не переполнялся каждую минуту.
А вот самое последнее о чем стоит беспокоиться - это длина этого обработчика, т.к.
выполняется он аж один раз на 16 тыс. тактов (если проц на макс. частоте).
Цитата(KRS @ Jul 16 2008, 09:29)

IMHO если прерывание настолько простое проще вообще на асме написать.
Если нет на то серьезных оснований, про асм надо забыть.
В этом конкретном случае серьезных оснований нет.
От того будет этот обработчик выполняться за 10 тактов или за 100 тактов ничего в системе не изменится - ресурсоемкость обработчика в обоих случаях меньше 1%.
А вот если делать Reload counter value вручную как у автора, то будет работать хреново что на C, что на асм, что с коротким обработчиком, что с длинным. Время будет уплывать.