roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 17:24

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


Правила форума


Правила раздела OpenRobotics



Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: Контроллер с портом ДД и 16 сервопортами на основе M128-
СообщениеДобавлено: 19 мар 2010, 16:59 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Надо бы дотестировать и отправить тебе уже модуль :)
А пока едет - инструкцию напишем, там действительно дописать часа два, не больше.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер с портом ДД и 16 сервопортами на основе M128-
СообщениеДобавлено: 19 мар 2010, 17:07 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2009, 12:50
Сообщения: 930
Откуда: Волжский
Skype: pashok0988
ФИО: Павел Петрович
Протестируй, плиз, на "помехозащещенность", т.е. как себя будет вести дальномер, если крутить сервой (т.е. меняются ли его показания)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер с портом ДД и 16 сервопортами на основе M128-
СообщениеДобавлено: 19 мар 2010, 17:10 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Хм, а можно потом? Я сейчас что-то вообще зашиваюсь, а тут целый стенд надо будет собирать с программой на ПК, т.к. через терминал такое не отловишь... :cry:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер с портом ДД и 16 сервопортами на основе M128-
СообщениеДобавлено: 19 мар 2010, 20:48 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2009, 12:50
Сообщения: 930
Откуда: Волжский
Skype: pashok0988
ФИО: Павел Петрович
ну если не отловишь, тогда и Бог с ним =))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер с портом ДД и 16 сервопортами на основе M128-
СообщениеДобавлено: 08 апр 2010, 13:42 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
Сюда вот напишу, это ж вроде уже не поддержка, а обсуждение решений.

В общем предложение у меня немного поменять идеологию работы со счетчиками в сервоконтроллерах - в обоих, и на 32 сервы, и на 16. Приведенный вариант - модификация 4017/servo_lld.c на 32 сервы, откусив лишнее - получим на 16.

Основные моменты организации существующей прошивки: сброс счетчиков происходит единожды при инициализации, затем просто на каждый счетчик выдается цикл импульсов - 8 штук с заданными интервалами от 500 до 2500 мкс, затем еще 2 подряд и ждем остаток до 20500 мкс, все это делается в обработчиках OUTPUT_COMPAREXX. Режим таймеров - свободный счет (WGMx = 0000).

Я предлагаю такую последовательность: 500 мкс в состоянии 0 - синхронно все счетчики, затем 8 интервалов с заданными временами, отдельно на каждом счетчике, затем остаток до 21000 - общий для всех счетчиков (досчитавшие свою последовательность счетчики сидят в состоянии 9) и затем сброс. Достичь этого можно двумя путями:

1. Перевести таймеры в режим CTC по ICRx. Синхронный старт, одинаковый период - по идее они должны оставаться синхронными все время. Плюсы - четкий период 21 мс, минусы - нифига не понятно из даташита, будет ли это вообще работать. А именно, можно ли пользоваться всеми тремя OCRxy в режиме WGMx = 1100 и что с ними всеми будет происходить при TCNTx=ICRx, когда таймер перещелкивается на 0. Возможно, они просто еще раз щелкнут - ну значит надо ими щелкнуть обратно и только затем дать сброс.

2. Повесить обработчик на свободный Compare (OCR1B у целого контроллера и OCR3B у половинки) на 21000 мкс и в нем вписывать 0 прямо в счетчики таймеров. Плюсы - работать будет гарантированно. Минусы - период будет больше на время обработки прерывания - это будет заметно в случае если прерывания запрещены на какое-то время.

В любом случае выкидывается расчет calc_ocr[block][8], в восьмые ячейки по старту вписывается 21 мс и всегда там лежит, это гарантирует что девятый раз OCRxy не вызовется, период таймера наступит раньше. И проверка на восьмую ячейку из process_timer тоже уходит. В периоде таймера сбрасываются счетчики и ставятся все Compare на 500 мс (а можно меньше).

Приаттачены примерные исходники обоих вариантов. Компилилось и тестилось все исключительно собственным мозгом, так что могут быть любые баги :)


Вложения:
servo_lld_icr3.c [3.94 КиБ]
Скачиваний: 540
servo_lld_compare1b.c [3.92 КиБ]
Скачиваний: 540
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер с портом ДД и 16 сервопортами на основе M128-
СообщениеДобавлено: 08 апр 2010, 14:27 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Что-то как-то сложно все. Надо оставить все как есть, только в одном из обработчиков прерываний добавить генерацию импульса сброса в момент, когда счетчик перешел из 9 в 0. Для этого обработчика чуть скорректировать начальное значение OCRxx чтобы этот обработчик срабатывал позже других, когда все счетчики уже гарантированно находятся в состоянии 0. Тогда импульс сброса не будет портить импульсы на выходах.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер с портом ДД и 16 сервопортами на основе M128-
СообщениеДобавлено: 08 апр 2010, 14:50 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
Да не скажи, по размеру кода, особенно для 32-сервовой версии мой вариант может и поменьше будет - из четырех обработчиков выкидываются проверки на восьмую ячейку.

А переход из 9 в 0 в существующей версии не годится для сброса - он же плавающий по времени, он идет в начале "остаточного" интервала - может быть у одного счетчика через 8*0.5=4 мс от начала, а у другого через 8*2.5=20 мс. Жестко можно привязать только конец остаточного интервала - а в нем уже нужен переход 0-1, а не 9-0. Вот для этого я и добавил кусочек в 500 мкс после окончания остаточного интервала.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер с портом ДД и 16 сервопортами на основе M128-
СообщениеДобавлено: 18 июл 2012, 19:00 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Схема версии с энкодерами


Вложения:
OR-AVR-M128-DS-v2e.pdf [135.29 КиБ]
Скачиваний: 0

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3, 4

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


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

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


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

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