Slavik_tz 0 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Здараствуйте Помогите разобраться со следующей ситуацией Связь с микропроцессором и ПК организована через микросхему ST232BN, все конденсаторы электролиты 10мкФ. Посылаю данные с микроконтроллера на ПК в цикле 1, 2, 3, 4..., принимаю данные с помощью программы CVAVR(Terminal), или стандартной программой Hyper Terminal. Вот превый раз нажимаю в программе СVAVR Connect, все работает как надо, далее Disconnect ... Connect не понимаю... Если далее нажимать Disconnect ... Connect то может случайным образом на экране появлятся продолжение цикла вывода коректных данных или же адакадабра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 6 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Помогите разобраться со следующей ситуациейВам не понятно: от чего это происходит? Последовательный интерфейс - в линии непрырывно (по-видимуму, данные передаюся без пауз, т.е. сразу за стоповым импульсом идет стартовый) передаются данные. В зависимости от момента начала мониторинга линии (нажатие Connect) Вы не обязательно попадёте на начало передачи очередного байта. Точнее: вероятность того, что вы пападете на стартовый импульс - не более 10%. Если в передачу данных вставить паузы между передачей байтов, то эта вероятность возрастёт. Эта вероятность также немного возрастёт, если использовать два стопа вместо одного. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirB 1 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Если далее нажимать Disconnect ... Connect то может случайным образом на экране появлятся продолжение цикла вывода коректных данных или же адакадабра. Такое может происходить, если ПК принимает какой нибудь нулевой бит из потока ваших данных за стартовый, и далее все последующие биты перепутываются. Это нормальное явление, так как подключение отключение производится асинхронно относительно посылаемых пакетов данных и вы можете попасть на середину пакета при подключении. Вероятно вы посылаете данные непрерывно, практически без пауз на большой скорости - тогда попробуйте вставить паузы между отдельными символами и поставить 2 стоповых бита. С max232 у вас всё видимо впорядке, если в начале символы идут правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 6 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Для контроля ситуации: когда за стартовый импульс принят импульс данных - испорльзуют контроль четности/нечетности информации и флаг "Frame error" на приёмной стороне. Ваши программы мониторинга, по всей видимости, эту информацию не обрабатывают/не предоставляют. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Slavik_tz 0 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Все правильно, спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 6 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Обычно, ситуация когда передатчик непрерывно передаёт информацию встречается редко. Зачастую по USART данные передают порциями. Между передачей порций информации образуются паузы. Если пауза в передаче превышает время передачи одного байта, то приёмник синхронизируется с передатчиком. Такие паузы образуются естественным образом (например, при передаче пакета в 10 байт за секунду) или, при необходимости, вводятся искусственно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Такие паузы образуются естественным образом (например, при передаче пакета в 10 байт за секунду) или, при необходимости, вводятся искусственно.Или выдача информации начинается/прекращается по приему символа из этой же терминалки. Тогда синхронизация получается автоматически. Все равно в остальное время эта информация никому не нужна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться