Сергей писал(а):Я в Си не силен и код тот никак освоить не могу.
хоцца двумя сервами порулить одновременно, а никак не получается))) Или просто объясните какие ф-ции там зачем. .
попробуй мой курс
roboforum.ruТехнический форум по робототехнике. |
|
|
Сергей писал(а):Я в Си не силен и код тот никак освоить не могу.
хоцца двумя сервами порулить одновременно, а никак не получается))) Или просто объясните какие ф-ции там зачем. .
Сергей писал(а):читал я ваш курс уже. Я про тот код именно говорил.
Сергей писал(а):Тоесть не скомпа рулить а так, програмно.
Сергей писал(а): *Серва работает так: каждые 20мс делается прерывание от 1 до 2мс.
avr123.nm.ru писал(а):- для управления положением вала servo необходимо ножкой МК каждые 20 мС создавать управляющий положительный импульс, длительность которого оределяет положение вала сервы и может находится в пределах от 800 до 2200 мкС при этом длительность ипульса 1500 мкС соответвует среднему положению вала сервы.
Сергей писал(а):Чтобы сделать прерывания нужен таймер. Помойму таймер1 нужен.
Расчитать таймер исходя из того что у мя внешний кварц на 16мГц.
Как я знаю, таймер тикает постоянно независимо от остальных процесов. (если его включить)
Сергей писал(а):Чтобы включить серву нада подать на нее сигнал.
Сергей писал(а):*Чтобы подать нее сигнал нада нада сделать функцию которая будет выставлять значение задержек(от 1 до 2мс) и подвать сигнал таймера на какуюто опр ногу МК.
unsigned char srvo_ctr = 1; // номер сервы
// в этом месте программы номер сервы может быть от 0 до 3
........
// после выдачи импульса
servo_ctr++; // увеличить номер сервы на 1
if (servo_ctr > 3) { // если номер сервы уже 4
servo_ctr = 0; // сделаем его 0
}; // Я СПЕЦИАЛЬНО НЕ ПИШУ if В ОДНУ СТРОЧКУ !!!
// и ученикам не советую !
// и в этом месте программы номер сервы может быть от 0 до 3
unsigned int servo_pos[3] = {1500,1500,1500,1500};
// требуемая длительность импульса в мкС для servo номер servo_ctr
Сергей писал(а):некоторые говорят что можно управлять несколькими сервами одновременно на любых портах
Сергей писал(а):а некоторые говорят что это не так ибо есть спец ноги для ШИМ
Сергей писал(а):В Си насколько я знаю, код читается сверху вниз.
Значит МК читает функции сверху вниз НЕ задерживаясь на какойлибо ф-ции ожидая ее выполнения, а команды читаются просто сверху вниз и выполняются таймером который тикает постоянно.
Сергей писал(а):.... блин, щас чото задумался.
Сергей писал(а):Если таймер один, то тогда можно удет управлять только одной сервой?
Как один и тотже таймер сможет делатть столько прерываний?
причем разных...
Или ему пофигу?
Digit писал(а):Это круто! я мыслю - я живу...
Вернуться в Новичкам или основы основ роботостроения.
Сейчас этот форум просматривают: Bing [Bot] и гости: 22