Полная версия этой страницы:
"Рассинхронизация" с USART
nik0lay_
Oct 19 2010, 12:57
Здравствуйте.
Такая проблема: есть собранное устройство на PIC16F877, интерфейсная микросхема ADM232AAN, скорость передачи 2400, асинхронный прем/передача, 8 бит, четность не смотрим, 1 стоповый бит, управления потоком нет, подключение по 3-м проводам (прем-передача-общий); не всегда устанавливается связь с компьютером.
Например: компьютер включен, включаю устройство, включаю гипертерминал (все настройки соответсвуют) - нет приема, в терминале отключить-вызов, отключить-вызов.. и связь появляется! иногда связь начинает идти "кривыми" символами (передаются другие), иногда начинает идти как положено. Причем если уж подключилось, но связь стабильная, все четко, без сбоев.
Если питание на устройство подавать при включенном терминале, то связь устанавливается сразу, без сбоев.
Не хватает опыта что бы разобраться в причинах, большая просьба помочь......
Цитата(nik0lay_ @ Oct 19 2010, 15:57)

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

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

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

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

не виндусовый гипертерминал.
А чем он вам не угодил то, гипертерминал как гипертерминал. Тут наверняка в железке проблема.
Ну вот для винды я этим пользуюсь - Realterm, очень удобный, можно лог в файл писать. Глюков пока не было на скоростях до мегабита работает.
http://realterm.sourceforge.net/
nik0lay_
Oct 20 2010, 04:47
Цитата(rezident @ Oct 19 2010, 22:45)

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

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

Зачем на них вообще заморачиваться то? Объясните, я не понимаю. Никогда этого не делал. Если используете асинхронный обмен, то Вам нужны только 3 линии:
Rx, Tx, GND. Больше ничего не нужно!
Да это все понятно!

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

Да это все понятно!

Изначально и было подцеплено 3 проводка, просто в поисках решения проблемы готов уже произвести обряд изгнания злых духов

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

Похоже интерфейсная микруха не раскачивается, хотя все по даташиту...
Для MAX232 на выходе TX - T2_OUT у компа это RX), должно быть -8 до -11 В примерно, это есть логическая единица, +8...+ 11 - лог 0.
iosifk
Oct 20 2010, 13:12
Цитата(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
Oct 20 2010, 18:43
А тактироваание UART достаточно точное и стабильное?
AHTOXA
Oct 20 2010, 19:13
Сдаётся мне, что данные передаются сплошным потоком, и поэтому терминал (любой) не всегда цепляется за начало байта. От этого спасут небольшие паузы перед началом передачи пакета.
nik0lay_
Oct 21 2010, 11:26
Еще раз здравствуйте!
Докладываю ситуацию.
Интерфейсная микруха оказалась не причем, не работала из-за того что "наелся" кондер, как раз на той части которая создает -10В, и этот конденсатор я, похоже, и свернул пока искал причину.
Решение проблемы оказалось во вставке задержки между посылками, спасибо AHTOXЕ.
Очень помогла программа Danis RealTerminal, ну и подцепил, на всякий случай, неиспользуемые выводы ADM232 как iosifk посоветовал.
Думаю тему можно закрыть. Всем большое спасибо!
Цитата(nik0lay_ @ Oct 21 2010, 14:26)

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