реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> UART AVR, В чем ошибка
Slavik_tz
сообщение Jul 9 2009, 09:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 4-07-06
Пользователь №: 18 558



Здараствуйте
Помогите разобраться со следующей ситуацией
Связь с микропроцессором и ПК организована через микросхему ST232BN, все конденсаторы электролиты 10мкФ.
Посылаю данные с микроконтроллера на ПК в цикле 1, 2, 3, 4..., принимаю данные с помощью программы CVAVR(Terminal),
или стандартной программой Hyper Terminal.
Вот превый раз нажимаю в программе СVAVR Connect, все работает как надо, далее Disconnect ... Connect не понимаю...
Если далее нажимать Disconnect ... Connect то может случайным образом на экране появлятся продолжение цикла вывода коректных данных или же адакадабра.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 9 2009, 09:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Slavik_tz @ Jul 9 2009, 12:08) *
Помогите разобраться со следующей ситуацией
Вам не понятно: от чего это происходит?
Последовательный интерфейс - в линии непрырывно (по-видимуму, данные передаюся без пауз, т.е. сразу за стоповым импульсом идет стартовый) передаются данные. В зависимости от момента начала мониторинга линии (нажатие Connect) Вы не обязательно попадёте на начало передачи очередного байта. Точнее: вероятность того, что вы пападете на стартовый импульс - не более 10%. Если в передачу данных вставить паузы между передачей байтов, то эта вероятность возрастёт. Эта вероятность также немного возрастёт, если использовать два стопа вместо одного.
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Jul 9 2009, 09:33
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(Slavik_tz @ Jul 9 2009, 13:08) *
Если далее нажимать Disconnect ... Connect то может случайным образом на экране появлятся продолжение цикла вывода коректных данных или же адакадабра.


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

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

С max232 у вас всё видимо впорядке, если в начале символы идут правильно.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 9 2009, 09:55
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Для контроля ситуации: когда за стартовый импульс принят импульс данных - испорльзуют контроль четности/нечетности информации и флаг "Frame error" на приёмной стороне. Ваши программы мониторинга, по всей видимости, эту информацию не обрабатывают/не предоставляют.
Go to the top of the page
 
+Quote Post
Slavik_tz
сообщение Jul 9 2009, 13:18
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 4-07-06
Пользователь №: 18 558



Все правильно, спасибо
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 9 2009, 13:54
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Обычно, ситуация когда передатчик непрерывно передаёт информацию встречается редко. Зачастую по USART данные передают порциями. Между передачей порций информации образуются паузы. Если пауза в передаче превышает время передачи одного байта, то приёмник синхронизируется с передатчиком. Такие паузы образуются естественным образом (например, при передаче пакета в 10 байт за секунду) или, при необходимости, вводятся искусственно.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 9 2009, 15:14
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Палыч @ Jul 9 2009, 16:54) *
Такие паузы образуются естественным образом (например, при передаче пакета в 10 байт за секунду) или, при необходимости, вводятся искусственно.
Или выдача информации начинается/прекращается по приему символа из этой же терминалки. Тогда синхронизация получается автоматически. Все равно в остальное время эта информация никому не нужна.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd July 2025 - 02:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01402 секунд с 7
ELECTRONIX ©2004-2016