Перейти к содержанию
    

UART AVR

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...