roboforum.ru

Технический форум по робототехнике.
Текущее время: 23 июн 2025, 10:59

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 115 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 13 янв 2006, 10:19 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Сергей писал(а):
Я в Си не силен и код  тот никак освоить не могу.

хоцца двумя сервами порулить одновременно, а никак не получается))) Или просто объясните какие ф-ции там зачем. .


попробуй мой курс


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 янв 2006, 16:50 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
читал я ваш курс уже. Я про тот код именно говорил.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 янв 2006, 17:52 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Сергей писал(а):
читал я ваш курс уже. Я про тот код именно говорил.


ну дак теперь на практике попробуй, и как в курсе сказано - записывай что не ясно и выясняй.

а как иначе научится то ?

тех. задание подробней сформулируй.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 янв 2006, 22:53 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Кратко: нада чтобы вытащили именно все то что относится к сервам. Я хочу просто к примеру потом в МК прошить програмку содержащую Этот блок для у правления сервами. Тоесть не скомпа рулить а так, програмно. Просто я прочитал код и чото не во что не врубился тк не мой уровень еще.
Ваш курс я прочитал, и мне все понятно и все записываю как и говорили. Я просто не про именно функции говорил которые исп компилятор АВР, а про всякие остальные ф-ции в коде. Сорри если коряво написал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 янв 2006, 03:30 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Сергей писал(а):
Тоесть не скомпа рулить а так, програмно.


ты не спеши, подумай как мы (те кт ответит тебе) должны понять управлять програмно ?  должны же быть какието органы управления - кнопки хотябы ?

или просто чтоб серва туда-сюда крутилась ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 янв 2006, 17:29 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
ну вот идею программы ты уже озвучил.

давай напишем ее он-лайн.

можно не на Си а на псевдокоде.

Т.е. на русском языке.

Расскажи что ты знаешь о том что нужно сделать чтоб позиционировать серво ?

напиши по русски краткий алгоритм той функции что тебе нужна.

детализируй алгоритм.

не стесняйся - публикуй что накрапал.

ВСЕ когда то начинали.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 янв 2006, 21:23 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Значит так я себе впринципе это представляю:

*Серва работает так: каждые 20мс делается прерывание от 1 до 2мс.
Чтобы сделать прерывания нужен таймер. Помойму таймер1 нужен.
Расчитать таймер исходя из того что у мя внешний кварц на 16мГц.
Как я знаю, таймер тикает постоянно независимо от остальных процесов. (если его включить)
Чтобы включить серву нада подать на нее сигнал.
*Чтобы подать нее сигнал нада нада сделать функцию которая будет выставлять значение задержек(от 1 до 2мс) и подвать сигнал таймера на какуюто опр ногу МК. (Дело в том, что некоторые говорят что можно управлять несколькими сервами одновременно на любых портах, а некоторые говорят что это не так ибо есть спец ноги для ШИМ).
*К примеру, нужно сделать механическую руку на сервах. Для хорошего позиционирования нужно чтобы сервы могли двигаться одновременно и в разных направлениях.
(Вообще, я оч много слышал что когда делают позиционирование серв, значения позиции могут быть от 0 до 255 те 256 позиций сервы)
Ну первое что мне приходило в голову это вот типа такого кода:
set_position(PORTB, 0xff, 175)
set_position(PORTD, 0xff, 234)
и тд
В Си насколько я знаю, код читается сверху вниз. Значит МК читает функции сверху вниз НЕ задерживаясь на какойлибо ф-ции ожидая ее выполнения, а команды читаются просто сверху вниз и выполняются таймером который тикает постоянно.
----
Ну вот примерно так. Я наверно еще чтото упустил, но Вы задайте вопросы если что.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 янв 2006, 21:26 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
.... блин, щас чото задумался. Если таймер один, то тогда можно удет управлять только одной сервой? Как один и тотже таймер сможет делатть столько прерываний? причем разных... Или ему пофигу?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 янв 2006, 02:28 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Сергей писал(а):
*Серва работает так: каждые 20мс делается прерывание от 1 до 2мс.


сразу старайся точно и грамотно формулировать свои мысли!  1-я стр. курса

я б сформулировал так:

avr123.nm.ru писал(а):
- для управления положением вала servo необходимо ножкой МК каждые 20 мС создавать управляющий положительный импульс, длительность которого оределяет положение вала сервы и может находится в пределах от 800 до 2200 мкС при этом длительность ипульса 1500 мкС соответвует среднему положению вала сервы.


сразу чувствуется что нужны прерывания хотябы каждые 20 мС

Сергей писал(а):
Чтобы сделать прерывания нужен таймер. Помойму таймер1 нужен.

Расчитать таймер исходя из того что у мя внешний кварц на 16мГц.

Как я знаю, таймер тикает постоянно независимо от остальных процесов. (если его включить)


лучше 8 битный таймер_0 задействовать.

и ГЛАВНОЕ в задачах моего курса есть пример как это сделать с таймером_0 - в задачах 1, 3, 3new и по моему 8.  Посмотри там сам.

НО !

Кварц лучше ВСЕГДА брать UART'овский (см таблицу в ДШ на МК) - потому как потом захочется связать свою штуку с ПК например иль с другим устройством на стандартной скорости COM порта - а попрут ошибки.

Сергей писал(а):
Чтобы включить серву нада подать на нее сигнал.


опять не точность - а она повлечет за собой ошибки...

Чтобы включить серву надо подать на нее ПИТАНИЕ !  
от 4.8 до 6 вольт обычно.

Сергей писал(а):
*Чтобы подать нее сигнал нада нада сделать функцию которая будет выставлять значение задержек(от 1 до 2мс) и подвать сигнал таймера на какуюто опр ногу МК.


я предлагаю чуть иначе - прямее, "в лоб"

пусть серв 4, тогда будем прерваться по переполнению Timer_0 каждые 5 мС а в обработчике прервания поствим счетчик для номера текущей сервы

объявление переменной:

Код:
unsigned char srvo_ctr = 1; // номер сервы


в обработчике прерывания по переполнению Timer_0 каждые 5 мС такой кусочек вставить:

Код:
// в этом месте программы номер сервы может быть от 0 до 3

........

// после выдачи импульса
servo_ctr++; // увеличить номер сервы на 1

if (servo_ctr > 3) { // если номер сервы уже 4
servo_ctr = 0; // сделаем его 0
}; // Я СПЕЦИАЛЬНО НЕ ПИШУ if В ОДНУ СТРОЧКУ !!!
// и ученикам не советую !

// и в этом месте программы номер сервы может быть от 0 до 3


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 янв 2006, 02:28 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
между прерываниями мы вычисляем или задаем нужные положения серв, и храним их в глобальном (т.е. доступном в любом месте программы - значит объявленом вне {} скобок какой либо функции программы !) массиве из 4 переменных, например:
Код:
unsigned int servo_pos[3] = {1500,1500,1500,1500};
// требуемая длительность импульса в мкС для servo номер servo_ctr


======= дальше:

Что думаешь? что делать?  

Есть у нас нужное время импульса и есть 4 прерывания по числу серв, каждые 5 мС


Сергей писал(а):
некоторые говорят что можно управлять несколькими сервами одновременно на любых портах


Конечно.

Сергей писал(а):
а некоторые говорят что это не так ибо есть спец ноги для ШИМ


для ШИМ АППАРАТНОГО есть спец ноги, а для софтверного любая нога подойдет,

но в наем случае ШИМ не нужен, хотя сигнал и похож на ШИМ с очень большой скважностью.

Сергей писал(а):
В Си насколько я знаю, код читается сверху вниз.

Значит МК читает функции сверху вниз НЕ задерживаясь на какойлибо ф-ции ожидая ее выполнения, а команды читаются просто сверху вниз и выполняются таймером который тикает постоянно.


НЕТ ! а говоришь мой курс читал .......

Код можно читать как угодно и как удобно.

А выполняется он согласно его содержанию.

Функция, после вызова в программе, исполняется до конца и затем происходит возврат к месту после знака ; за местом вызова функции.

Однако выполнении функции может быть прервано:
- прерыванием
- сбросом МК (не с высоты!) по нескольким причинам
- вызовом другой функции из исполняемой щас функции, тогда возможен возврат обратно
- безусловным или условным переходом в место программы вне этой функции

Сергей писал(а):
.... блин, щас чото задумался.


Это круто!   я мыслю - я живу...

Сергей писал(а):
Если таймер один, то тогда можно удет управлять только одной сервой?

Как один и тотже таймер сможет делатть столько прерываний?
причем разных...

Или ему пофигу?


Ему и правда пофигу - он же "железный"

А может то он может, но мы не будем на него наваливаться скопом, есть ведб и другие таймеры в МК

я на ATmega16 намекаю например...

===============

Напоминаю - "согласно традициям гостеприимства" и стр. 1 курса

у тебя не должно остаться чего либо не ясного из того что я написал, читай записывай что не ясно,

в начале ищи ответы сам:

пожалуйса добавь в избраное этот линк:
-> поиск GOOGLE по Краткому курсу AVR начинающим
и используй его.

а лучше всеже найди время почитай спокойно ВЕСЬ курс, и сделай упражнения-задачи.

Загляни в библиотеку книг по электронике и технике
http://lord-n.narod.ru/walla.html  (в низу страницы)

а потом уже спрашивай.

==============

C-дай свое мыло и получи CodeVisionAVR

Хотя нам будет достаточно VMLAB (скачай по линк-АМ ! на стр 4 курса)
но в PROTEUS есть модель и сервы и ШД и просто ЭлМотора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 янв 2006, 03:13 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Ох трудное это дело, шим для начинающих, впору уже учебник писать...  :wink:  avr123.nm.ru респект! Я б столько не выдержал, сам бы написал и отдал в готовом виде...  :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 янв 2006, 03:53 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
avr123.nm.ru, замечательно и подробно написал! Поддерживаю Александра в плане респекта!
Только сдержаннее надо быть, коли учить взялись, ИМХО.
:wink: Это я о вот этом:
Сергей: .... блин, щас чото задумался
Вы: Это круто!   я мыслю - я живу...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 янв 2006, 05:07 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Digit писал(а):
Это круто!   я мыслю - я живу...


ну этож древняя мудрость: "я мыслю значит я живу" иначе, без мысли человек не живет а существует.

а жить я считаю это круто, т.е. активно жить - познавать что-то новое как и полочено человеку.

я ни хотел ни кого обижать, я хотел взбодрить, потому что просто чтение текстов дело не веселое.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 янв 2006, 05:50 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
avr123.nm.ru, тоже зацепить не хотел.
Просто желаю улучшить процесс взаимодействия...
Всякому ж учителю фидбэк нужен для самосовершенствования :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 янв 2006, 19:29 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Поддерживаю всех насчет респекта)))
---
КодВизион у меня есть, я на нем пишу. Еще пишу в АВРСтудио.
ВМлаб у меня тоже есть, только я его не юзал. Почему? Както он мне не приглянулся, винить меня за это не надо. Я все делаю вживую. Все паяю и не жалею.
---
На днях прочитаю курс заного.
---
Русский язык у мя точно хромает)))
---
До меня чото всетаки не доперает... щас еще посижу подумаю.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 115 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO