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