может, разрешать прерывания только тогда, когда нужно:
- Код: Выделить всё • Развернуть
...
...
...
// Global enable interrupts
!!!!!! ;// #asm("sei") - это убрать.
while (1)
{
ir_counter =0;
for (i=10; i !=0; --i)
{
#asm("sei")
TCCR0 |= 1; //включение таймера
delay_us(280);//даем время таймеру сгенерировать 10 импульсов
TCCR0 &= 0b11111110; //выключение таймера
#asm("cli")
delay_us(392);//пауза 14 импульсов
}
if (ir_counter>5)
{
PORTA.2 = 0;//зажигаем светодиод
PORTC.4 =!(PINC.4) ;
PORTC.5 =!(PINC.5) ;
PORTC.3 = !(PINC.3);
PORTC.2 = !(PINC.2); //реверс поворотного и тягового двигателей
delay_ms(500); //задержка для отьезда
}//если впереди препятствие - включаем СД
else
{
PORTA.2 = 1;}; //если нет - выключаем сд
}
}
сначала попробовать так.
но по идее в будущем лучше коммутировать запрет/сброс прпрывания исходящее от TSOPa.