roboforum.ru

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


COM порт vs МК

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Сообщение KiCom » 11 янв 2006, 20:28

Возник вопрос как правильно организовать передачу данных в МК, а то может быть я пытаюсь изобрести велосипед. Как правильно распределять данные, тоесть отличать, номер сервы, угол поворота и контрольную сумму, друг от друга. Сейчас у меня это сделано по "порядковому номеру" получения данных в МК но мне кажеться это неправильным или это нормально? Для передачи я использую программу изначально написаную Александром, за что ему большое спасибо, Между передачами чисел стоит задержка, нужна ли она или можно отправлять числа без задержки а МК с компьютером сами разберуться? И правильно ли я понял что можно отправить число в пределах от 0 до 255 за одну отправку?
KiCom
 
Сообщения: 345
Зарегистрирован: 22 окт 2005, 11:15
Откуда: Красноярск

Сообщение -= Александр =- » 11 янв 2006, 21:08

Отправляется 1 байт. Это так всегда, потому как больше в ком-порт не пролезет. Я делаю так: есть формат посылки: заголовок, количество байтов, сами байты, стоп-байт. Иногда перед стопом еще и CRC идет, но это когда девайс рядом с источкиком помех находится. Все просто: пришла посылка, мы ее в массив положили и далше смотрим заголовок и соответствующим образом разбираем. Есть вариант сложнее, но надежнее. Каждый байт режется на пополам и раскладывается в 2 байта (4 старших сдвигаются вправо если это данные, 4 младших влево если команда) - это позволяет исключить перепутывания команд и данных. Третий вариант еще круче: эти полубайты клеются хитрым образом, так чтобы старшие 4 бита - это команда, а младшие - данные. Но тогда придется ограничиваться 16-ю командами, т.к. вся команда должна вместиться в 4 бита и быть у двух таких байтов одинаковой.

В ICC можно отправлять функцией putchar или puts без задержки, он сам контролирует состояния порта и по-очереди все туда складывает...
Последний раз редактировалось -= Александр =- 11 янв 2006, 21:15, всего редактировалось 1 раз.
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение ASin » 11 янв 2006, 21:08

KiCom писал(а):Как правильно распределять данные, тоесть отличать, номер сервы, угол поворота и контрольную сумму, друг от друга.


я использую такую штуку
http://www.spetspribor.com/support/soft ... /wake.html

принцип там простой, можно и самому что-нибудь написать на эту же тему.

P.S. и не надо ничего резать!  :D
ASin
 
Сообщения: 155
Зарегистрирован: 18 дек 2004, 03:14
Откуда: Москва

Сообщение avr123.nm.ru » 11 янв 2006, 21:28

KiCom писал(а):Возник вопрос как правильно организовать передачу данных в МК, а то может быть я пытаюсь изобрести велосипед. ?


там все - документация протокол схема исходники

http://www.microrobotna.com/mrservo8cpu.htm
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение ASin » 11 янв 2006, 21:55

avr123.nm.ru писал(а):там все - документация протокол схема исходники

http://www.microrobotna.com/mrservo8cpu.htm


А где там, собственно, COM порт?
ASin
 
Сообщения: 155
Зарегистрирован: 18 дек 2004, 03:14
Откуда: Москва

Сообщение KiCom » 22 янв 2006, 13:32

У меня где-то теряются данные (одно число из пакета пропадает) что может быть причиной? МК Atinny 2313  кварц на 11.0592 вроде UART'товский.
KiCom
 
Сообщения: 345
Зарегистрирован: 22 окт 2005, 11:15
Откуда: Красноярск

Сообщение avr123.nm.ru » 22 янв 2006, 14:15

KiCom писал(а):У меня где-то теряются данные (одно число из пакета пропадает) что может быть причиной? МК Atinny 2313  кварц на 11.0592 вроде UART'товский.


Это загадка ? предлагаешь отгадать ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение BOBKA » 27 янв 2006, 20:16

Попутный вопрос по теме.
Можно ли в обвязке микросхем, реализующих интерфейс RS-232, конкретно:MAX232A, MAX202CPE вместо электролитов 0,1 мкФ поставить керамические конденсаторы 0,1 мкФ ?
Я поставил. Все работает. Видимых глюков нет. Но меня интересует - равноценная ли это замена ?
Может быть я просто не накопил достаточную статистику ошибок передачи ?
Кто в этом разбирается, пожалуйста, дайте свой ответ - есть ли потенциальная проблема в применении керамики для MAX232A, MAX202CPE ?
Аватара пользователя
BOBKA
 
Сообщения: 8
Зарегистрирован: 15 мар 2005, 14:08
Откуда: Киев, Украина

Сообщение -= Александр =- » 27 янв 2006, 20:28

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

Сообщение BOBKA » 30 янв 2006, 12:02

Я целенаправлено искал ответ на свой вопрос в Инете, но кроме фото с керамическими конденсаторами в обвязке некоторых МАХ-ов (или аналогов от ST) я пока ничего не нашел. Некоторые ставят керамику вопреки рекомендациям Даташита. Хотелось бы знать - чем это чревато ?
Чем отличается физика работы электролитов малой емкости (0,1 мкФ) от керамических конденсаторов ?
Аватара пользователя
BOBKA
 
Сообщения: 8
Зарегистрирован: 15 мар 2005, 14:08
Откуда: Киев, Украина

Пред.

Вернуться в Новичкам или основы основ роботостроения.

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

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