Отвечу сразу всем: написано действительно криво, потому как весь код сюда ложить смысла нет. просто по быстрой оформил проектик с этим злополучным куском, чтобы сюда положить.
Задача общая, - сформировать посылку № на ногу, тут PORTC.2 для управления ШД. срезал все лишнее, чтобы идею понять можно было.
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCCR0 = 0x00; //stop
TCNT0=step;
step_kol++;
PORTC.0^=1;
TCCR0 = 0x05;
}
так тоже - самое
step = описался, равен 10
WDT - оставил из большого куска, чтобы в этом цикле собака не срабатывала.
Алгоритм - запустили таймер, который 1000 раз должен отработать( в данном случае) после этого паузы и прочее.
До пауз дело не доходит
Стек переполняется
Цитата(Валентиныч @ Apr 25 2007, 17:38)

И при входе/выходе в/из прерывание сохранять/восстанавливать программный счетчик.
Глупый , наверное , вопрос - а CVAVR это не делает? можете бросать в меня гнилыми апельсинами
Цитата(GDI @ Apr 25 2007, 18:21)

Кусок кода приведенный автором написан криво, очень криво, но я спишу это на трудности переноса сути вопроса из большого проекта

А вот что я заметил:
2) зачем в главном цикле while(1){} производится постоянно переинициализация таймера(останов, загрузка опять же 16 битным значением 8 битного регистра счета, старт с предделителем)?
3) далее зачем то ждем 1000 циклов таймера чтобы сбросить WatchDog, причем используется переменная long int step_kol. хотя тут хватило бы и простого int.
4) затем задержка на 5 сек во время которой продолжаются прерывания таймера.
В итоге, автор не написал как работает данный кусок, но я предположу, что происходит постоянная генерация на ноге PortC.0 с частотой переполнения 8 битного таймера на частоте XTAL/1024, т.е. частота XTAL/1024/256, возможно , с короткими перерывами. Также предположу что автор хотел генерировать 1000 импульсов с перерывом в 5 секунд, но данный кусок этого просто не может обеспечить.
этот кусок в таком виде должен через каждые 5 сек выдавать 1000 импульсов, на выдачу импульсов при 11,0592 уходит примерно 2 секудны, 5 сек - это с запасом, чтобы в эмуляторе картинка была
а после выполнения прерывания - чаще всего начинает работать сначала проги, но в проекте - не с начала, т.е не сброс, но с достаточно конкретного места