Lirzman писал(а):Чему равна длительность '0', если переод равен 20мс, а длительность '1' равна 1,5 мс?
20-1.5=18.5
cur_servo;//серва на которую подаём сигнал в данный момент
if(cur_servo=1)
{clear_bit(3);
set_bit(1);
cur_servo=2;
wait(servo_time_1);
}
else if(cur_servo=2)
{clear_bit(1);
set_bit(2);
cur_servo=3;
wait(servo_time_2);
}
else if(cur_servo=3)
{clear_bit(2);
set_bit(3);
cur_servo=4;
wait(servo_time_3);
}
else if(cur_servo=4)
{clear_bit(3);
cur_servo=1;
wait(period - servo_time_1 - servo_time_2 - servo_time_3);
}
Во-первых можно не писать else, пиши подряд if, так тоже работает.
Слушай, а зачем делатьэто все на таймере1, ведь вроде это может и с таймером0 уместиться.
Lirzman писал(а):!!!НО!!! как мне сделать вычитание(последнюю функцию wait) если period=1 а servo_time_X = 62000..58500?
Lirzman писал(а):Вот псевдокод, взята за основу ваша(aesok) картинка(2 стр назад)
Для кратости привожу в примере только 3 сервы
- Код: Выделить всё
cur_servo;//серва на которую подаём сигнал в данный момент
if(cur_servo=1)
{clear_bit(3);
set_bit(1);
cur_servo=2;
wait(servo_time_1);
}
else if(cur_servo=2)
{clear_bit(1);
set_bit(2);
cur_servo=3;
wait(servo_time_2);
}
else if(cur_servo=3)
{clear_bit(2);
set_bit(3);
cur_servo=4;
wait(servo_time_3);
}
else if(cur_servo=4)
{clear_bit(3);
cur_servo=1;
wait(period - servo_time_1 - servo_time_2 - servo_time_3);
}
Вот так всё просто, если не сказать элементарно.
!!!НО!!! как мне сделать вычитание(последнюю функцию wait) если period=1 а servo_time_X = 62000..58500?
Может сложением? :shock: :shock:
Сергей писал(а):Lirzman писал(а):!!!НО!!! как мне сделать вычитание(последнюю функцию wait) если period=1 а servo_time_X = 62000..58500?
Здесь объясни пожалуйста, как период может быть равен 1, если он должен быть равен 20мс? или я не в том направлении мыслю?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4