Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать. Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил. Робот своими руками. Самодельный робот.
Возник вопрос как правильно организовать передачу данных в МК, а то может быть я пытаюсь изобрести велосипед. Как правильно распределять данные, тоесть отличать, номер сервы, угол поворота и контрольную сумму, друг от друга. Сейчас у меня это сделано по "порядковому номеру" получения данных в МК но мне кажеться это неправильным или это нормально? Для передачи я использую программу изначально написаную Александром, за что ему большое спасибо, Между передачами чисел стоит задержка, нужна ли она или можно отправлять числа без задержки а МК с компьютером сами разберуться? И правильно ли я понял что можно отправить число в пределах от 0 до 255 за одну отправку?
Отправляется 1 байт. Это так всегда, потому как больше в ком-порт не пролезет. Я делаю так: есть формат посылки: заголовок, количество байтов, сами байты, стоп-байт. Иногда перед стопом еще и CRC идет, но это когда девайс рядом с источкиком помех находится. Все просто: пришла посылка, мы ее в массив положили и далше смотрим заголовок и соответствующим образом разбираем. Есть вариант сложнее, но надежнее. Каждый байт режется на пополам и раскладывается в 2 байта (4 старших сдвигаются вправо если это данные, 4 младших влево если команда) - это позволяет исключить перепутывания команд и данных. Третий вариант еще круче: эти полубайты клеются хитрым образом, так чтобы старшие 4 бита - это команда, а младшие - данные. Но тогда придется ограничиваться 16-ю командами, т.к. вся команда должна вместиться в 4 бита и быть у двух таких байтов одинаковой.
В ICC можно отправлять функцией putchar или puts без задержки, он сам контролирует состояния порта и по-очереди все туда складывает...
Последний раз редактировалось -= Александр =- 11 янв 2006, 21:15, всего редактировалось 1 раз.
KiCom писал(а):У меня где-то теряются данные (одно число из пакета пропадает) что может быть причиной? МК Atinny 2313 кварц на 11.0592 вроде UART'товский.
Попутный вопрос по теме. Можно ли в обвязке микросхем, реализующих интерфейс RS-232, конкретно:MAX232A, MAX202CPE вместо электролитов 0,1 мкФ поставить керамические конденсаторы 0,1 мкФ ? Я поставил. Все работает. Видимых глюков нет. Но меня интересует - равноценная ли это замена ? Может быть я просто не накопил достаточную статистику ошибок передачи ? Кто в этом разбирается, пожалуйста, дайте свой ответ - есть ли потенциальная проблема в применении керамики для MAX232A, MAX202CPE ?
Я встречал керамику и в промышленных девайсах, так что думаю там нет разницы керамика или электролиты. Но в даташите все-же электролиты нарисованы. :roll:
Я целенаправлено искал ответ на свой вопрос в Инете, но кроме фото с керамическими конденсаторами в обвязке некоторых МАХ-ов (или аналогов от ST) я пока ничего не нашел. Некоторые ставят керамику вопреки рекомендациям Даташита. Хотелось бы знать - чем это чревато ? Чем отличается физика работы электролитов малой емкости (0,1 мкФ) от керамических конденсаторов ?