Jump to content

    
Sign in to follow this  
Slavik_tz

UART AVR

Recommended Posts

Здараствуйте

Помогите разобраться со следующей ситуацией

Связь с микропроцессором и ПК организована через микросхему ST232BN, все конденсаторы электролиты 10мкФ.

Посылаю данные с микроконтроллера на ПК в цикле 1, 2, 3, 4..., принимаю данные с помощью программы CVAVR(Terminal),

или стандартной программой Hyper Terminal.

Вот превый раз нажимаю в программе СVAVR Connect, все работает как надо, далее Disconnect ... Connect не понимаю...

Если далее нажимать Disconnect ... Connect то может случайным образом на экране появлятся продолжение цикла вывода коректных данных или же адакадабра.

Share this post


Link to post
Share on other sites
Помогите разобраться со следующей ситуацией
Вам не понятно: от чего это происходит?

Последовательный интерфейс - в линии непрырывно (по-видимуму, данные передаюся без пауз, т.е. сразу за стоповым импульсом идет стартовый) передаются данные. В зависимости от момента начала мониторинга линии (нажатие Connect) Вы не обязательно попадёте на начало передачи очередного байта. Точнее: вероятность того, что вы пападете на стартовый импульс - не более 10%. Если в передачу данных вставить паузы между передачей байтов, то эта вероятность возрастёт. Эта вероятность также немного возрастёт, если использовать два стопа вместо одного.

Share this post


Link to post
Share on other sites
Если далее нажимать Disconnect ... Connect то может случайным образом на экране появлятся продолжение цикла вывода коректных данных или же адакадабра.

 

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

 

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

 

С max232 у вас всё видимо впорядке, если в начале символы идут правильно.

Share this post


Link to post
Share on other sites

Для контроля ситуации: когда за стартовый импульс принят импульс данных - испорльзуют контроль четности/нечетности информации и флаг "Frame error" на приёмной стороне. Ваши программы мониторинга, по всей видимости, эту информацию не обрабатывают/не предоставляют.

Share this post


Link to post
Share on other sites

Обычно, ситуация когда передатчик непрерывно передаёт информацию встречается редко. Зачастую по USART данные передают порциями. Между передачей порций информации образуются паузы. Если пауза в передаче превышает время передачи одного байта, то приёмник синхронизируется с передатчиком. Такие паузы образуются естественным образом (например, при передаче пакета в 10 байт за секунду) или, при необходимости, вводятся искусственно.

Share this post


Link to post
Share on other sites
Такие паузы образуются естественным образом (например, при передаче пакета в 10 байт за секунду) или, при необходимости, вводятся искусственно.
Или выдача информации начинается/прекращается по приему символа из этой же терминалки. Тогда синхронизация получается автоматически. Все равно в остальное время эта информация никому не нужна.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this