Возник вопрос как правильно организовать передачу данных в МК, а то может быть я пытаюсь изобрести велосипед. Как правильно распределять данные, тоесть отличать, номер сервы, угол поворота и контрольную сумму, друг от друга. Сейчас у меня это сделано по "порядковому номеру" получения данных в МК но мне кажеться это неправильным или это нормально? Для передачи я использую программу изначально написаную Александром, за что ему большое спасибо, Между передачами чисел стоит задержка, нужна ли она или можно отправлять числа без задержки а МК с компьютером сами разберуться? И правильно ли я понял что можно отправить число в пределах от 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 мкФ) от керамических конденсаторов ?