Полная версия этой страницы:
USART - передача одного байта
Паша_З
May 11 2011, 20:51
Не сталкивался ли кто-нибудь из Вас стакой проблемой: если через USART постоянно и непрерывно отсылать один и тот же байт, то приёмник распознаёт его неверно; он также выдаёт один повторяющийся байт, но другой, причём, при повторных соединениях приёмник может выдавать другие значения (среди них встречается и правильное).
Я думаю, это связано с неверной интерпритацией входных данных приёмником, т.е. он находит СТАРТ- и СТОП-биты там, где их нет, а всё, что между ними считает входным байтом.
Могут ли быть ещё какие-нибудь причины такого поведения? Как возможно решить/обойти эту проблему?
one_eight_seven
May 11 2011, 20:54
Проблема при синхронной или асинхронной передаче данных? Точно не стоят преобразователи в другой интерфейс между USART'ами? LSB first MSB first - тоже проверяли?
one_eight_seven
Вопрос в теме по AVR, а там вроде нет переключения LSB-MSB. И вопрос точно по асинхронной передаче, т.к. при синхронной не требуются старт- и стопбиты.
Паша_З
1. Скорее всего, у вас проблемы с корректной передачей байтов. Вы точно ожидаете, чтобы буфер передатчика освободился, или работаете по прерыванию от передатчика, или тупо шлете байты, не заботясь о том, готов ли блок UART принять их от вас?
2. Какова скорость передачи данных и какова длина и качество линии связи между премником и передатчиком? Чем выше скорость, тем короче должна быть линия.
smalcom
May 12 2011, 04:18
частота, длина линии?
камень тактируется от кварца? (если да, то какого) или от внутреннего генератора
Genadi Zawidowski
May 12 2011, 06:21
Проверьте эту ситуацию с передаваемым байтом FF, потом подумайте.
Не поможет - нарисуйте на бумаге график напряжения при передаче Вашего одого и того же байта, потом посмотрите - если приём начать с произвольного места, сможет ли приёмник перейти на правильное?
Способ борьбы - или пауза длинной в 10 бит (для формата 8-n-1) или передать перед началом пакета FF.
Если нет пакетов - их не пердусмотрели - и не ввести - то если требуется надёжная работа - или переделывать протокол в канале или отказываться от этой работы, так как сдать её не получится.
Паша_З
May 12 2011, 20:35
Genadi Zawidowski
Я склонялся к этой же мысли.
Всем большое спасибо.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.