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

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> падает скорость на rs232
aaarrr
сообщение Aug 24 2009, 22:57
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(x736C @ Aug 25 2009, 02:39) *
Кстати сказать, для одних скоростей ширина единицы превалирует над шириной нуля, а для других скоростей наоборот.
Поясните, пожалуйста, как это может быть связано с преобразователем уровней.

Никак, естественно. Так сразу бы написали, а то "на скоростях близких к максимальной" - что тут можно еще подумать?
Go to the top of the page
 
+Quote Post
x736C
сообщение Aug 24 2009, 23:08
Сообщение #32


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Понятно. Просто этот эффект уменьшается со скоростью, поэтому так написал.
Видимо, это связано с делением/умножением частоты.

Сообщение отредактировал x736C - Aug 24 2009, 23:09
Go to the top of the page
 
+Quote Post
=AK=
сообщение Aug 25 2009, 07:21
Сообщение #33


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(manul78 @ Aug 24 2009, 05:22) *
Обязательно найду и приложу документ, в котором я вычитал про ФАПЧ в контроллере RS-232. Я помню
тоже удивлялся. Там приводилась аналогия с радиоприемником. Возможно, данная схема называется
немного по другому, но я точно помню про Автоматическую Подстройку Частоты...

Единственное объяснение, какое приходит в голову: в какой-то микросхеме могла быть использована ФАПЧ для умножения тактовой частоты. В самом же UART-e никаких ФАПЧ не используется, он тактируется от фиксированной частоты.

Чаще всего приемный тракт UART тактируют от частоты в 16 раз большей, чем бодовая. По приходу падающего фронта старт-бита отсчитывают 8 тиков, чтобы попасть в середину тактового интервала. После этого через каждые 16 тиков берут самплы в середине каждого бита. В простейшем случае берут 1 сампл. Если тактовые частоты приемника и передатчика не совпадают, то сампл постепенно "съезжает" из центра, однако за время передачи байта "съезжает" не так уж далеко, чтобы прием был с ошибками. Достаточно, чтобы частоты не сопадали не более чем примерно на 2%, чтобы гарантировать уверенный прием. К ФАПЧ все это не имеет ни малейшего отношения.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 25 2009, 10:22
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(x736C @ Aug 25 2009, 00:46) *
Писал в прошлом году autobaud rate на hdl и обнаружил следующее.
Как оказалось, переходники usb-com на современных чипах имеют очень неравное соотношение положительного БИ к отрицательному.
На скоростях близких к максимальной (115200) коэф. заполнения двухбитового интервала «10» отклонялся на 10% от нормы.
Проверял на конвертерах двух разных производителей.
Это не сильно принципиально для фиксированных скоростей.
Другое дело для автоматической подстройки, которая должна это учитывать.

Они выполняются как правило на счетчике. С ФАПЧ в классическом смысле что-то не встречал, хотя активно тогда гуглил.
Скорее всего у вас что-то было с МК или с программой.
Имею в виду программно-аппаратную неисправность , а не изначальную кривость USART.


Что-то совсем не понял. Я например, делал autobaud модема и совсем не заметил разницы м/у 1 и 0. Более того, имея представление о цифровой реализации схемы не могу поверить в такое. Конвертер - это врят ли фиксированная аппаратная фича. Не те времена. Это встроенный мк который имеет 2 интерфейса. Соответственно UART реализован стандартно. Так откуда взятся такой разнице??? Если брать CP, то там сразу виден МК, который применён. В FTDI не так очевидно, но косвенно тоже понятно. Могу только предположить что у вас что-то с преобразователями уровня не то. Хотя это только догадка.

По поводу эха. А что команда "ate0" уже перестала работать? Или список команд модема почитать религия запрещает?
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Aug 25 2009, 10:47
Сообщение #35





Guests






Цитата
Писал в прошлом году autobaud rate на hdl и обнаружил следующее.
Как оказалось, переходники usb-com на современных чипах имеют очень неравное соотношение положительного БИ к отрицательному... Это не сильно принципиально для фиксированных скоростей.
Другое дело для автоматической подстройки, которая должна это учитывать.

По своему опыту реализации autobaud rate, пришел к выводу, что измерять длительность передачи одиночных битов - не самое лучшее решение. Сейчас измеряю время от начала старт-бита до начала стоп-бит и делю на количество бит. Получается много лучше, точнее. И описанные выше проблемы (даже если они есть) уже не критичны. Естественно, нужно знать, что передается, чтобы пропустить "лишние" фронты. Пока эта методика не подводила...
Go to the top of the page
 
+Quote Post
x736C
сообщение Aug 25 2009, 11:29
Сообщение #36


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Немного отклонились от темы, но все-таки.
Если не заметили разницы, значит, скорее всего у вас ее и не было. UART интерфейсы по-разному паршивы.
У меня есть табличка со снятыми значениями для Huge Pine конвертера. Разве что осциллограммы не делал. Но и это не долго, если надо. smile.gif
Прикрепленное изображение

Если что-то с преобразователем уровня, то в конвертере.
Микросхема бескорпусная, так что бог ее знает.
На конвертерах подороже в той или иной степени тоже это проявляется. Смотрел еще конвертер ST-Lab.


@Ark, как вы достоверно определяете стоп-бит? И что значит «знать, что передается»?
На произвольных данных, в том числе непрерывном потоке, ваша реализация не ошибется?

Сообщение отредактировал x736C - Aug 25 2009, 11:34
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Aug 25 2009, 12:07
Сообщение #37





Guests






Ну, конечно, не на произвольном и непрерывном потоке. smile.gif
Этот способ хорошо работает для обмена, построенного по принципу "запрос-ответ", с паузами ожидания.
Предполагается, что формат и заголовок запроса известны устройству, неизвестна только текущая скорость...
Ждем паузы (прекращения текущей передачи), далее ожидаем начала следующего запроса. Достаточно знать только первый передаваемый байт. Он выбирается так, чтобы последний бит был нулевой - чтобы обнаружить начало стоп-бита. Ну, а дальше - дело техники программирования...
Go to the top of the page
 
+Quote Post
x736C
сообщение Aug 25 2009, 12:23
Сообщение #38


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Тогда ясно. В моем случае это не подходило.
В вашем случае, когда заголовок посылки известен, можно измерить и первый стартовый бит, заранее зафиксировав в протоколе ограничение следующей за ним единицей.
Смещения (1/0) можно учесть доверительным интервалом. Значения БИ для разных скоростей при неблагоприятных смещениях не перекрываются. И это самое главное. Так что не суть, как измерять.
Поправьте, если неправ.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Aug 25 2009, 12:36
Сообщение #39





Guests






Все немного проще. По первому фронту (начало старт-бита) снимаете показания таймера, затем пропускаете известное количество фронтов, и по фронту начала стоп-бита снимаете второе значение таймера. Разница значений таймера - это суммарная длительность 9-ти бит (для 8-ми битного формата). Смысл в том, что измерив интервал из 9 бит подряд, получите в 9 раз меньшую ошибку длительности одного бита.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 25 2009, 12:58
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(@Ark @ Aug 25 2009, 14:36) *
...затем пропускаете известное количество фронтов

Отличный "алгоритм" sad.gif откуда это вдруг количество фронтов на произвольном байте статет "известным". А если байт известный, то проблема выеденного яйца не стоит и городить ловлю фронтов и прочее лишнее.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Aug 25 2009, 13:02
Сообщение #41





Guests






Цитата
... откуда это вдруг количество фронтов на произвольном байте статет "известным".

А Вы внимательно читать не пробовали? smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 25 2009, 13:28
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(@Ark @ Aug 25 2009, 15:02) *
А Вы внимательно читать не пробовали? smile.gif

Пробовал, пробовал.... сначала пауза гарантированная, потом байт гарантированный, потом бит в байте гарантированный... Повторяю "отличый" алгоритм sad.gif. Непонятно, отчего это только вдруг скорость не принять тоже известной smile.gif. Ну его в болото.
P.S.
Модемы 100 лет в субботу, как по известным "AT" скорость детектят, причем молча. Аппаратная подержка автодетекта в микроконтроллерных UART тоже уже часто имеет место быть.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 25 2009, 13:41
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(@Ark @ Aug 25 2009, 13:47) *
По своему опыту реализации autobaud rate, пришел к выводу, что измерять длительность передачи одиночных битов - не самое лучшее решение. Сейчас измеряю время от начала старт-бита до начала стоп-бит и делю на количество бит. Получается много лучше, точнее. И описанные выше проблемы (даже если они есть) уже не критичны. Естественно, нужно знать, что передается, чтобы пропустить "лишние" фронты. Пока эта методика не подводила...


А кто вам сказал, что я проверяю единичные биты?

У меня проверяются биты и разница битов и прогнозируется длительность байта. Восстанавливается инфа включая первый байт с вероятностью 98%. Хотя этого и не требуется так как это в модеме стоит и первый байт чаще всего a. Тем не менее восстанавливается всё подряд, кроме символов восстановить которые нельзя. Всё это восстанавливается прямо в потоке.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Aug 25 2009, 13:46
Сообщение #44





Guests






Цитата
... Непонятно, отчего это только вдруг скорость не принять тоже известной.
Аппаратная подержка автодетекта в микроконтроллерных UART тоже уже часто имеет место быть.

Да-да, конечно. smile.gif Все просто и не интересно, когда тактовый генератор от кварца. Тогда можно и перебором нужную скорость найти... Какие проблемы...
P.S. Попробуйте на некалиброванном RC-генераторе UART реализовать, в целях экономии...
Go to the top of the page
 
+Quote Post
x736C
сообщение Aug 25 2009, 13:55
Сообщение #45


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



SasaVitebsk, человек вообще-то мне оппонировал. smile.gif

«Восстанавливается инфа включая первый байт с вероятностью 98%».
Странно, что вы указываете вероятность успешного приема первого байта, хотя не известна вероятность получения конкретных байт.
Вероятность успешного приема первого байта, имхо, сильно зависит от того, какой это будет байт. Поэтому откуда взята цифра 98% ? smile.gif
Вероятность появления неблагоприятного байта при «случайном» обмене, конечно, можно посчитать, но не думаю, что вы это делали.
@Ark этот вопрос решил просто, сделал её единицей (около того), пожертвовав первым байтом.

И потом, по моему мнению, вы сильно усложнили. Проверять одно, второе, прогнозировать третье. В погоне за этим первым байтом что ли?

Сообщение отредактировал x736C - Aug 25 2009, 13:57
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 01:16
Рейтинг@Mail.ru


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