Цитата(GDI @ Apr 25 2007, 20:02)

step все равно лучше сделать char или const char или вообще #define STEP 0x10 чтоб память не занимать.
инит таймера из главного цикла убрать - поставить ДО while(1)
delay_ms(5000) заменить на delay_ms(1000), но поставить 5 раз а между ними разместить сброс Сторожевого таймера
Перед делеями запретить прерывания от таймера - после делеев - разрешить.
Стек увеличить - может где то в другом месте он переполняется.
все исправил
вот так сие выглядит
#include <mega16.h>
#include <stdio.h>
long int step_kol;
char step;
// delay functions
#include <delay.h>
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCCR0 = 0x00; //stop
TCNT0=step;
step_kol++;
PORTC.0^=1;
}
void main(void){
DDRC = 255;
PORTC = 0;
TIMSK=0x3;
#asm("sei")
step=0x10;
while(1){
TCCR0 = 0x00; //stop
TCNT0 = step; //set count
TCCR0 = 0x05; //start timer
while (step_kol<1000){
#asm("wdr");
}
step_kol=0;
delay_ms(1000);
#asm("wdr");
delay_ms(1000);
#asm("wdr");
delay_ms(1000);
#asm("wdr");
delay_ms(1000);
#asm("wdr");
delay_ms(1000);
#asm("wdr");
}
}
но вот так в отладчике
в прицепе 300 кил
Нифига не понимаю совсем, нашел старый проект, он на AT90s8535 - кусок подобный, все работает, чувствую, что просто туплю.
Эскизы прикрепленных изображений