Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: "Рассинхронизация" с USART
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
nik0lay_
Здравствуйте.

Такая проблема: есть собранное устройство на PIC16F877, интерфейсная микросхема ADM232AAN, скорость передачи 2400, асинхронный прем/передача, 8 бит, четность не смотрим, 1 стоповый бит, управления потоком нет, подключение по 3-м проводам (прем-передача-общий); не всегда устанавливается связь с компьютером.
Например: компьютер включен, включаю устройство, включаю гипертерминал (все настройки соответсвуют) - нет приема, в терминале отключить-вызов, отключить-вызов.. и связь появляется! иногда связь начинает идти "кривыми" символами (передаются другие), иногда начинает идти как положено. Причем если уж подключилось, но связь стабильная, все четко, без сбоев.
Если питание на устройство подавать при включенном терминале, то связь устанавливается сразу, без сбоев.

Не хватает опыта что бы разобраться в причинах, большая просьба помочь......
Danis
Цитата(nik0lay_ @ Oct 19 2010, 15:57) *
Не хватает опыта что бы разобраться в причинах, большая просьба помочь......


Привет, Вам нужен снифер Com порта, берите например LGComSpyInst. Только он для стандартных портов Com1 и Com2, виртуальные могут не пойти.
nik0lay_
Цитата(Danis @ Oct 19 2010, 19:11) *
Привет, Вам нужен снифер Com порта

Попробую, только чем он мне сможет помочь? Устройство мое, что оно передает я знаю, а что идет в порт гипертерминал и так показывает...
Danis
Цитата(nik0lay_ @ Oct 19 2010, 16:24) *
Попробую, только чем он мне сможет помочь?


Ну, я предполагаю, что целевое использование вашей железки не связано для постоянной совместной работы с гипертерминалом.
Так или иначе со снифером отлаживать все приходится. Ну а про сбои, имеется ли у вас осциллограф? Если есть, то можно сигналы посмотреть, длительности, фронты и т.п., т.е проверить их соответствие протоколу RS232 для вашей скорости.
nik0lay_
Попробывал эту програмку.. интересная штука.
В момент, когда на терминал якобы ничего не приходит, снифер показывает "левые" данные (вроде 3E) и в окне для asci (справа от основного окна) кажет <W*ERR>, что наводит на мысль о какой то ошибке. Описалова к программе не нашел, кто пользуется ранее упомянутой программой, просьба прояснить ситуацию, что это такое, с чем его едят и как это исправить. smile.gif
rezident
Цитата(nik0lay_ @ Oct 19 2010, 18:57) *
Например: компьютер включен, включаю устройство, включаю гипертерминал (все настройки соответсвуют) - нет приема, в терминале отключить-вызов, отключить-вызов.. и связь появляется!

Сделайте со стороны COM-порта ПК нуль-модемное соединение для сигналов квитирования. Соедините между собой DTR-DSR-DCD и RTS-CTS. Либо используйте другую программу-терминал, не виндусовый гипертерминал.
Danis
Цитата(rezident @ Oct 19 2010, 20:45) *
не виндусовый гипертерминал.


А чем он вам не угодил то, гипертерминал как гипертерминал. Тут наверняка в железке проблема.
Ну вот для винды я этим пользуюсь - Realterm, очень удобный, можно лог в файл писать. Глюков пока не было на скоростях до мегабита работает.

http://realterm.sourceforge.net/
nik0lay_
Цитата(rezident @ Oct 19 2010, 22:45) *
Соедините между собой DTR-DSR-DCD и RTS-CTS

Я тоже подумал про это, сейчас со стороны компьютера соединены выводы 1-4-6 и 7-8, надеюсь не перепутал.

Realterm посмотрю, что из себя представляет.
Если повезет раздобыть осциллограф, гляну на нем..
Danis
Цитата(nik0lay_ @ Oct 20 2010, 08:47) *
Я тоже подумал про это, сейчас со стороны компьютера соединены выводы 1-4-6 и 7-8, надеюсь не перепутал.


Зачем на них вообще заморачиваться то? Объясните, я не понимаю. Никогда этого не делал. Если используете асинхронный обмен, то Вам нужны только 3 линии:
Rx, Tx, GND. Больше ничего не нужно!
nik0lay_
Цитата(Danis @ Oct 20 2010, 11:14) *
Зачем на них вообще заморачиваться то? Объясните, я не понимаю. Никогда этого не делал. Если используете асинхронный обмен, то Вам нужны только 3 линии:
Rx, Tx, GND. Больше ничего не нужно!

Да это все понятно! smile.gif Изначально и было подцеплено 3 проводка, просто в поисках решения проблемы готов уже произвести обряд изгнания злых духов cranky.gif
Danis
Цитата(nik0lay_ @ Oct 20 2010, 10:02) *
Да это все понятно! smile.gif Изначально и было подцеплено 3 проводка, просто в поисках решения проблемы готов уже произвести обряд изгнания злых духов cranky.gif


Попробуйте скорость поднять до 19200 - 57600, у меня однажды были глюки на малых скоростях, только с виртуальным COM.

А железку Вашу и без осциллографа можно грубо потестировать , проверьте сам MAX232 на уровни Rx, Tx.
nik0lay_
Осциллографа я не нашел, зато нарыл неплохую УСБ-АЦП, и вот что получается:
- форма сигнала соответствует тому, что показывает эмулятор Протеус
- уровни не соответствуют, высокий уровень +3,8; низкий -0,7; как я понимаю должно быть где то по 10-ке вольт
- на выводах V+ и V- тоже не то, +7 и -0,7 соответственно..

Похоже интерфейсная микруха не раскачивается, хотя все по даташиту...
Danis
Цитата(nik0lay_ @ Oct 20 2010, 15:39) *
Похоже интерфейсная микруха не раскачивается, хотя все по даташиту...


Для MAX232 на выходе TX - T2_OUT у компа это RX), должно быть -8 до -11 В примерно, это есть логическая единица, +8...+ 11 - лог 0.
iosifk
Цитата(nik0lay_ @ Oct 20 2010, 16:39) *
Осциллографа я не нашел, зато нарыл неплохую УСБ-АЦП, и вот что получается:
- форма сигнала соответствует тому, что показывает эмулятор Протеус
- уровни не соответствуют, высокий уровень +3,8; низкий -0,7; как я понимаю должно быть где то по 10-ке вольт
- на выводах V+ и V- тоже не то, +7 и -0,7 соответственно..

Похоже интерфейсная микруха не раскачивается, хотя все по даташиту...


От должно быть от 3-х до 12 вольт... Попробуйте подать 0 на неиспользуемые входы TTL и незадействованный выход соединить с незадействованным входом... Чтобы они не переключались хаотически...

И проверьте частоту передачи, чтобы ее отклонение было в заданных пределах. Если можно использовать 16-ти кратную частоту, то работайте с ней, будет прием устойчивей. на стороне компьютера тоже можно замкнуть DTR на DSR... И вторую пару управляющих сигналов тоже... Кажется так...
Удачи!
remote_job
А тактироваание UART достаточно точное и стабильное?
AHTOXA
Сдаётся мне, что данные передаются сплошным потоком, и поэтому терминал (любой) не всегда цепляется за начало байта. От этого спасут небольшие паузы перед началом передачи пакета.
nik0lay_
Еще раз здравствуйте!

Докладываю ситуацию.

Интерфейсная микруха оказалась не причем, не работала из-за того что "наелся" кондер, как раз на той части которая создает -10В, и этот конденсатор я, похоже, и свернул пока искал причину.
Решение проблемы оказалось во вставке задержки между посылками, спасибо AHTOXЕ.
Очень помогла программа Danis RealTerminal, ну и подцепил, на всякий случай, неиспользуемые выводы ADM232 как iosifk посоветовал.

Думаю тему можно закрыть. Всем большое спасибо!
Danis
Цитата(nik0lay_ @ Oct 21 2010, 14:26) *
Думаю тему можно закрыть. Всем большое спасибо!


Ну вот, здОрово, что так все удачно разрулилось! Всетаки форум в нашей тематике – это круто!!! Сам начинал 10 лет назад и чувствовал по «первяне» себя Алисой в стране чудес.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.