|
Связь двух мег по UART, Если кому интересно - результаты экспериментов :) |
|
|
|
Jun 13 2006, 19:49
|

Иногдящий
   
Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931

|
Как-то я задавал тут вопрос про максимальную дальность связи двух мег по UART без дополнительных преобразователей. Недавно дошли руки попробовать все это самому. Условия: - две платы, на одной МЕГА8 (подчиненная), на другой МЕГА16 (ведущая) - плоский 5-жильный кабель с сигналами: земля-txd-земля-rxd-земля, 6 метров, лежащий поверх клубка кабелей (силовые, езернет, USB) позади системного блока компьютера  . - выходной сигнал UART (txd) каждого контроллера идет через логический буфер, входной (rxd) - от разъема резистор 33 Ома, далее подтяжка 10 КОм и на вход RXD. - параметры протокола: 9N1 - в МЕГЕ8 включен режим мультипроцессорной связи - передаются пакеты - сначала байт адреса, потом заголовок и данные пакета, всего около 100 байт на пакет, все принимаемое проверяется по CRC. Результаты: - на скорости 1 МБит/сек примерно 0,4% ошибок. - на скоростях 500 КБит/сек и меньше за время непрерывной работы в течении 5-6 часов ошибок не выявлено. Надеюсь, эта информация окажется кому-нибудь полезной. Или хотя бы интересной  .
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Jun 13 2006, 21:18
|

Участник

Группа: Участник
Сообщений: 31
Регистрация: 26-05-05
Из: Севастополь
Пользователь №: 5 391

|
ну как всегда... данные поподробнее!!! приведи пожалуйста параметры кварца и прескаллера Кстати, незабудем что уарт ето не рс-232, и тем более не 485. логические уровни при "клубе" кабелей могут искажаться(ЭМС епрст)... скорость скажи?! PS.: редактирую вот, патамучто невнимательно прочитал (на счет скоростей): я так понимаю скорости не стандартные, но ето то и не важно.... если в обоих контроллерах кварц и прескалер на уарт одинаковые... рекомендация - использовать 485 с его дифференциальными сигналами и витой парой. Возможно развязку делать оптическую или на "адумах" (ну ето если припрет)
Сообщение отредактировал Woodoo - Jun 13 2006, 21:27
|
|
|
|
|
Jun 13 2006, 21:31
|

Иногдящий
   
Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931

|
Кварцы 16 МГц на обоих контроллерах, прескалеры (UBRR) = 1. Дык я ведь указал скорости в результатах  . Цитата логические уровни при "клубе" кабелей могут искажаться(ЭМС епрст)... В этом, в основном, и стоял передо мной вопрос: можно ли при наличии близко проходящих силовых кабелях достигнуть без ошибок скорости 300-400 КБит/сек на расстоянии 1,5-2 метров. Цитата рекомендация - использовать 485 с его дифференциальными сигналами Так и поступлю, если понадобится протянуть сигналы на расстояние больше 5 метров  . До 5 метров, как показали эксперименты, это необязательно (при скорости <= 500 КБит/сек).
|
|
|
|
|
Jun 13 2006, 22:01
|

Участник

Группа: Участник
Сообщений: 31
Регистрация: 26-05-05
Из: Севастополь
Пользователь №: 5 391

|
возможно добиваться большей надежности не стоит, если используеться проверка црц. На счет протакола 9н1 не знаю, есть ли там возможность перезапросить испорченый пакет?, но если есть, то вроде беспокоица неочем. На счет влияния кабелей - силовой кабель, если ето тот что питает камп, влиять не должен, памучто частота тока маловата. усб и прочее - отпадает - малая энергетика сигналоф. Ради эксперимента папробуй взять экранированый кабель (Мне даже самому интересно стало, уменьшиться ли при етом процент ошибки?!). имхо: при таких расстояниях оправдано использовать другие последовательные, синхронизированные, чтонить типо I2C (1-Ware??? мож?  )
|
|
|
|
|
Jun 14 2006, 02:56
|
Группа: Новичок
Сообщений: 1
Регистрация: 23-07-05
Пользователь №: 7 032

|
А можно ссылочку выложить по этим датчикам? Тоже очень интересуюсь.
|
|
|
|
|
Jun 14 2006, 13:54
|

Иногдящий
   
Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931

|
Цитата возможно добиваться большей надежности не стоит, если используеться проверка црц. На счет протакола 9н1 не знаю, есть ли там возможность перезапросить испорченый пакет?, но если есть, то вроде беспокоица неочем. Мне нужна определенная пропускная способность канала. Если мне придется перезапрашивать каждый 10й пакет (в среднем), это будет не очень хорошо  . Ну и надежность вообще - существует ведь вероятность ошибки, не проверяемой по CRC... По поводу 9N1 - он никак не привязан к возможности перезапросить пакет. Это делает софтовый обработчик верхнего протокола. Цитата Ради эксперимента папробуй взять экранированый кабель Увы, нет под рукой двухжильного экранированного кабеля... Цитата при таких расстояниях оправдано использовать другие последовательные, синхронизированные, чтонить типо I2C Не хочу синхронные, хочу асинхронные  . К тому же в девайсах есть свои ньюансы. Цитата Э-э-э, а как бы мега тут при чем? Я уверен, что такие же результаты вы получите с любыми 5 вольтовыми контроллерами Ну, не факт. Это ведь зависит не только от уровня сигналов, но и, например, от количества сэмплов, по которым принимается решение о значении очередного бита. Меги принимают решение по 16 (или по 8 на удвоенной скорости) сэмплам. Кроме того, у Мег стоит на входе RXD фильтр... Цитата а там ЭМ обстановка, я думаю, похуже чем сзади вашего системного блока =) Думаю, что не на много  . В машинах практически не используется переменный ток. Ну если только кабель от датчика не тянется рядом с проводами к катушке зажигания  . Вот по питанию там хуже, это да...
|
|
|
|
|
Jun 15 2006, 12:17
|

Знающий
   
Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274

|
>> А можно ссылочку выложить по этим датчикам? >> Тоже очень интересуюсь. Да пожалуйста: http://www.omnicomm.ru/lls.htmlhttp://www.asva.ru/products/ckpt.aspИ это еще не все. Стоит обратить внимание, что все они, как правило, продаются в составе системы, поэтому покупку одних датчиков нужно обговаривать с производителем отдельно. >> Ну, не факт. Это ведь зависит не только от уровня >> сигналов, но и, например, от количества сэмплов Тут вы наверное правы. Но частоты захвата меньше чем 8*F я чего то не видел ни в одном контроллере. >> Вот по питанию там хуже, это да... Ну питание, извините, подается по длинным-длинным проводам =)
|
|
|
|
|
Jun 15 2006, 12:48
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Когда-то случайно с одним из дисков мне попалась электронная книга про модемы. Там доступным русским языком кратко изложены методы передачи, сжатия, коррекции ошибок, протоколы, протоколы соединения. После этого я очень долго работал с этой книгой. И скажу что она совсем не бесполезна в обычных проектах не связанных с модемами. Многие, из описанных протоколов, мне позднее приходилось реализовывать. Делал сжатие и коррекцию ошибок. Проверял всё это в различных условиях. Реализовывал протокол коррекции ошибок при работе с пакетами переменной длины. (т.е. чем меньше ошибок, тем длиннее пакет) По ходу передачи обрабатывается статистика. Таким образом добивался передачи данных по линии по которой не разобрать речи. При чём скорость не сильно падала. В часности по rs232 пришёл к аналогичным выводам. Правда высоких скоростей мне не требовалось, а так получается что при применении стандартных приёмопередатчиков на стандартных расстояниях применение протоколов типа MODBUS и т.п. не оправдано. А вот при применении стандарта rs485 в режиме двунаправленной работы протокол типа MODBUS имеет глубокий смысл. Пришёл также ещё к одному выводу: Надёжность изделия определяется не только надёжностью применённых деталей, качеством изготовления, но и во многом применёнными протоколами связи и выбранными алгоритмами работы с данными. Очень помогает применение многоуровнего програмного обеспечения. Где каждый уровень контролирует данные поступившие с предыдущего. Поэтому Ваши исследования это один из важных, на мой взгляд, шагов к созданию действительно надёжных изделий. А книга у меня сохранилась.  Жаль автора нет. В любом случае выражаю ему свою благодарность.
|
|
|
|
|
Jun 15 2006, 19:20
|

Иногдящий
   
Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931

|
Протоколы, разумеется, нужно выбирать, исходя из конкретных потребностей конкретной разработки. Мне, например, не нужно передавать большие объемы данных, то есть нет смысла делать адаптивную длину пакетов, нужно передавать кучу мелких пакетов (команды с параметрами) часто и быстро  . Само собой, кроме отсеивания помех на уровне железа, необходимо предусматривать и коррекцию (или хотя бы обнаружение) ошибок на уровне протокола. У меня это сделано несколькими путями, CRC - только один из них. По поводу сильных внешних ЭМИ, то у меня они не предусматриваются. Но в случае TomaT-а я бы не поленился защититься не только протоколом  . Цитата А книга у меня сохранилась. А не могли бы Вы выложить ее где-нить? Или прислать мне на мыло andybig на сервере neora.ru
|
|
|
|
|
Jun 15 2006, 20:00
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
AndyBigЦитата на скоростях 500 КБит/сек и меньше за время непрерывной работы в течении 5-6 часов ошибок не выявлено. Поздравляю! Помнится у Вас задача была несколько иная - соединить несколько (больше 2х) МК в сеть по УАРТу. Уже попробовали? Цитата(SasaVitebsk @ Jun 15 2006, 15:48)  Когда-то случайно с одним из дисков мне попалась электронная книга про модемы. Там доступным русским языком кратко изложены методы передачи, сжатия, коррекции ошибок, протоколы, протоколы соединения. После этого я очень долго работал с этой книгой. .... А книга у меня сохранилась.  Жаль автора нет. В любом случае выражаю ему свою благодарность. Если есть возможность может выложите где-нибудь? Очень заинтересовала эта книга. Цитата Или прислать мне на мыло и мне! ;> defunct собака freenet.de
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|