Цитата(ody67 @ Jun 7 2011, 23:09)

Как заставить его работать?
Какой режим таймера хотите использовать (назовите номер).
Вы что хотите получить, одновибратор или ШИМ или... Напишите словами.
Обычно пишут так:
Код
ISR(TIMER1_COMPB_vect) {...}
SIGи - это устаревший и не рекомендуемый вариант.
И в обработчике прерывания чаще всего либо перезапускают таймер, либо останавливают, либо не пишут обработчика вовсе. А Вы что делаете?
И ещё, sei надо делать после окончания инициализации (непосредственно перед бесконечным циклом).
А первой инструкцией процедуры main обычно идёт cli - запрет прерываний на время инициализации.
Ну и вдобавок, если ваши переменные duration и freq_temp не переменные вовсе, а константы то так их и объявляйте - выиграете по памяти
Код
static const unsigned int duration = 2500;
static const unsigned int freq_temp = 10000;