roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 23:40

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Засадка: Куча серв +I2C +UART (ну конечно я про шлюз-МК-ПК)
СообщениеДобавлено: 04 окт 2006, 19:36 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Итак имеем:
0. АТМега16, ну пусть 16МГц;
1. I2C на 100КБит/с;
2. UART скажем на 57600КБит/с;
3. 24 сервы которыми хочется поуправлять не теряя пакетов с I2C и UART'a.

Слабонервным выйти из темы :)

Попробуем решить:
1. I2C будет хавать байты через TWI с частотой не более 11Кбайт/сек;
2. UART соответственно не более 7.2Кбайт/сек;

Получается чтобы не терять байтики мы должны забирать их с частотой не менее 20'000 раз в секунду. То есть спокойно что-то делать мы можем только в течение 16'000'000/20'000=800 тактов.

После чего надо будет вернуть управление.

Теперь про сервы - их надо рефрешить с частотой 50Гц импульсами от 0.9 до 2.1 мс.

В 1 мс помещается 16'000 тактов.

То есть если сделать там 120 делений, то при помещении их в 1.2мс это будет 160 тактов на 1 деление.

Получается оптимальный вариант - повешать таймер, чтобы он каждые 10мкс выставлял на всех портах нужные значения за не более чем 50 тактов, а затем давал поработать остальным.

Я нигде не ошибся?


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

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


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

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

Собран прототип:

Могу рулить 24 сервами одновременно (нет, разумеется я проверял только ограниченно это :)) на Меге16 на 1МГц с 10 делениями по углу поворота.

Соответственно на 16МГц кварце спокойно смогу рулить 24 сервами со 100 делениями по углу поворота.


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

Зарегистрирован: 06 янв 2006, 03:02
Сообщения: 496
Откуда: Москва
прог. языки: VHDL, C++, Matlab
ФИО: Павел
а что за сервы? У меня хайтек управляются импульсами 1.1-1.8, с 1.5 в середине.
Я делал на контроллере - заигается весь порт, а потом по одному выключаются биты. Получается одновременное управление. Но при этом никакой основной программы на контроллер не возлагалось, только передатчик от компа к сервам, через РС-232.


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

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
EIN_ENGEL писал(а):
а что за сервы? У меня хайтек управляются импульсами 1.1-1.8, с 1.5 в середине.
Я делал на контроллере - заигается весь порт, а потом по одному выключаются биты. Получается одновременное управление. Но при этом никакой основной программы на контроллер не возлагалось, только передатчик от компа к сервам, через РС-232.

Так все сервы управляются импульсами ориентировочно от 1 до 2мс с центром в 1.5мс.

Что значит на контроллер не возлагалось ничего? А зачем он у вас тогда вообще был? Или может я не правильно понял ваше "основной программы"? :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


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

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


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

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