Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: UART AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Slavik_tz
Здараствуйте
Помогите разобраться со следующей ситуацией
Связь с микропроцессором и ПК организована через микросхему ST232BN, все конденсаторы электролиты 10мкФ.
Посылаю данные с микроконтроллера на ПК в цикле 1, 2, 3, 4..., принимаю данные с помощью программы CVAVR(Terminal),
или стандартной программой Hyper Terminal.
Вот превый раз нажимаю в программе СVAVR Connect, все работает как надо, далее Disconnect ... Connect не понимаю...
Если далее нажимать Disconnect ... Connect то может случайным образом на экране появлятся продолжение цикла вывода коректных данных или же адакадабра.
Палыч
Цитата(Slavik_tz @ Jul 9 2009, 12:08) *
Помогите разобраться со следующей ситуацией
Вам не понятно: от чего это происходит?
Последовательный интерфейс - в линии непрырывно (по-видимуму, данные передаюся без пауз, т.е. сразу за стоповым импульсом идет стартовый) передаются данные. В зависимости от момента начала мониторинга линии (нажатие Connect) Вы не обязательно попадёте на начало передачи очередного байта. Точнее: вероятность того, что вы пападете на стартовый импульс - не более 10%. Если в передачу данных вставить паузы между передачей байтов, то эта вероятность возрастёт. Эта вероятность также немного возрастёт, если использовать два стопа вместо одного.
VladimirB
Цитата(Slavik_tz @ Jul 9 2009, 13:08) *
Если далее нажимать Disconnect ... Connect то может случайным образом на экране появлятся продолжение цикла вывода коректных данных или же адакадабра.


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

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

С max232 у вас всё видимо впорядке, если в начале символы идут правильно.
Палыч
Для контроля ситуации: когда за стартовый импульс принят импульс данных - испорльзуют контроль четности/нечетности информации и флаг "Frame error" на приёмной стороне. Ваши программы мониторинга, по всей видимости, эту информацию не обрабатывают/не предоставляют.
Slavik_tz
Все правильно, спасибо
Палыч
Обычно, ситуация когда передатчик непрерывно передаёт информацию встречается редко. Зачастую по USART данные передают порциями. Между передачей порций информации образуются паузы. Если пауза в передаче превышает время передачи одного байта, то приёмник синхронизируется с передатчиком. Такие паузы образуются естественным образом (например, при передаче пакета в 10 байт за секунду) или, при необходимости, вводятся искусственно.
Сергей Борщ
Цитата(Палыч @ Jul 9 2009, 16:54) *
Такие паузы образуются естественным образом (например, при передаче пакета в 10 байт за секунду) или, при необходимости, вводятся искусственно.
Или выдача информации начинается/прекращается по приему символа из этой же терминалки. Тогда синхронизация получается автоматически. Все равно в остальное время эта информация никому не нужна.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.