Цитата(HCHUNTER @ Jan 2 2008, 23:36)

Ведь мне никто не запрещает в прерывании остановить таймер, выполнить все что мне нужно, а по выходу из прерывания снова его запустить?
Никто не запрещает.
С другой стороны, никто не запрещает также запустить таймер с одинаковыми интервалами времени. И пусть себе тикает.
В обработчике прерывания таймера - взводить флажек, сигнализирующий, что некое событие наступило.
И уже потом "в спокойной обстановке" тобиш в основном цикле программы проверить флажек и выполнить все, что требуется для обработки этого события..
Цитата
С моей точки зрения процедура-обработчик может быть сколь угодно долгой.
Конечно может, но меня например несколько раздражает когда жмешь CTRL-ALT-DEL, а системе "пофиг", т.к. некий программист решил сделать сколь угодно долгий обработчик. Если вам подходит такой стиль - то без проблем, пишите так ;>
Цитата
а как же мне тогда правильно таймер проинициализировать?
Получается
TCCR0=0x05;
TCNT0=0xFF;
Есть режим таймера CTC - очистка по сравнению. В этом режиме не надо трогать TCNT регистр, т.к. таймер сам будет сбрасываться тогда когда вы ему укажате. Правда в m8 этот режим есть только у таймера 1 и таймера 2. Если вам нужно отмерять один "тик", то на таймере 2 инициализация будет выглядеть так:
#define WGM21 3
#define OCIE2 7
OCR2 = 1;
TCCR2 = 0x07 | (1 << WGM21);
TIMSK = (1 << OCIE2);