roboforum.ru

Технический форум по робототехнике.

ББ <->AVR

ББ <->AVR

Myp » 12 фев 2007, 00:50

собсно сабж
есть КПК с ком портом в кпк установлена программа обмена данными по ком порту
есть МК атмега 8(ну или любой другой) там вторая часть программы

собственно передача в обе стороны данных работает
вопрос состоит в следующем:
как лучше реализовать управление роботом на база меги8?
тоесть я так думаю надо что то вроде протокола связи придумать

направление ББ->мега8
передача например делаеться 3 раза в секунду
если 20 то соответственно направление вперёд шим 20%, если нуль то стоп машина, если -20 направление вращения меняем и шим 20%.


1байт. шим левого двигателя
2байт. шим правого двигателя
3байт. произвольная периферия
и т. д.

направление мега8->ББ
1байт. состояние бампера 1 спереди
2байт. состояние бампера 2 сзади
3байт. дальномер...
4байт. АЦП на клеммах акумулятора
и т. д.

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

=DeaD= » 12 фев 2007, 02:27

1. Лучше не "пропихивать" данные снизу, а отвечать на запросы сверху;
2. Лучше сделать набор команд передаваемых сверху и зафиксировать формат ответа на них снизу.

Myp » 12 фев 2007, 10:58

хм
действительно
как это я сам не подумал =)

во я дурак  :lol:
яж сам сидел смотрел как adns данными обмениваеться

frig » 12 фев 2007, 12:34

определись с данными которые нужно забирать, с их объемом и выработай конкретный формат передаваемого пакета. так что-бы передавать одним пакетом, например, все сведения о состоянии робота. отдели на каждое поле некоторое количество байт, лучше для все одинаковое, что-бы было проще потом его разбирать ну еще можно что-то типа контрольной суммы впихнуть :)

или

передавать каждый параметр по запросу. по одному. т.е. с машины запрос конкретного параметра, по номеру, МК в ответ значение. ну и соответственно управляющие сначала передаешь тип передаваемой команды, получаешь подтверждение что полуено правильно потом передаешь собственно значение...

или

смешанный. передаешь пакетами одновременно значения запрошенные ранее и подтверждения о готовности приема данных.

в общем вариантов много. выбирай что хош. главное что-бы надежно не очень сложно и быстро :)

Myp » 12 фев 2007, 15:21

да
пожалуй второй вариант мне больше всего нравиться
передеру схему у adns2610 всё равно программу для мк уже раньше написал


вечером попробую на макетке сварганить
для начала опрос с ББ контроллера на предмет нажатия кнопки



ЗЫ
в эмуляторе pocket PC прога работает отлично как и на железе
тока немогу настроить ком порт эмулятора переадресовать на железный
в лучшем случае удалось получить в файл техническую информацию из терминала кпк о процессе загрузки операционки
в худшем вмснет всё наглухо и ком1 на копе какимто видимо потоком забивается до ребута

ато хотелось на одном компе всё сразу сэмулировать =/

com

Evgeny » 13 фев 2007, 16:05

привет

надо использовать сом2 потому что в се на физический сом1 идет отладка загрузка итд; он системой используется можно считать что нет его

Evgeny

Myp » 13 фев 2007, 17:39

таже фигня
если в проге ставлю ком2 и в эмуляторе ком2 переадресовываю на железный, эмулятор вполне нормально запускается
и всё
когда пытаюсь запустить свою прогу ругаеться что типа ошибка при открытии порта и куча цифр всяких в скобках
может я както неправильно порт открываю...или мож настройки в совпадать должны
настройки кома в проге, и настройки кома в ББ?
хм вечером попробую хотя ведь в каком режиме эмулятор открывает ком порт ББ в таком он и работает, хз короче

а если ком1 указывать в проге и переадресацию ком1 делать то просто в процессе загрузки эмулятор виснет
если переадресацию делать на один порт ком1 а прогу вешать на другой ком2 то всё работает отлично но смысла в этом нет

в железе кстати вполне свободно прога работает как с простым ком портом так и с ик портом
а хотелось бы оба девайса и КПК и AVR на компе заэмулировать


Rambler\'s Top100 Mail.ru counter