Здравствуйте. МК ATMega16. Пишу прогу для манипулятора и столкнулся с такой проблемой, в коде просто вкл/выкл порты с задержкой. Но порты B6,B7 тормозят странным образом. Иногда не успевают включится, иногда долго включаются (в другом куске кода). Вот проблемная часть кода:
CODE:void delay(int ms){
for(;ms;ms--)
_delay_ms(1);
}
//------------------------------------------много case'ов----------------
case 11:
for(int i=0;i<steps;i++){
PORTD=(1<<PORTD3);
PORTB=(1<<PORTB7);
delay(time);
PORTD=(0<<PORTD3);
PORTB=(1<<PORTB6);
delay(time);
PORTB=(0<<PORTB7);
PORTD=(1<<PORTD2);
delay(time);
PORTB=(0<<PORTB6);
PORTD=(1<<PORTD3);
delay(time);
PORTD=(0<<PORTD2);
PORTD=(0<<PORTD3);
}
sendpc("ready");
break;
картинка осциллографа из протеуса прилагается (Порядок сигналов сверху вниз: D3,B7,B6,D2) Прикреплено изображение
(Отредактировано автором: 11 Мая, 2013 - 00:28:18) |