|
Atmega128 UART на 230400, Не получается завести Atmega128 UART на 230400 кбит/с... |
|
|
|
Jan 7 2008, 00:15
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 6-08-07
Из: Moscow
Пользователь №: 29 586

|
Странно, но 230400 для Fosc=11059200 соответствует UBRR = 0x002. А вобще, пробовал вплоть до 921600, всё шло как надо.
На случай если сильно расходятся частоты, как может быть в случае с ft(2)232, могу лишь посоветовать ставить на ПК 2 стоп-бита, на МК - один и отправлять очередной байт с МК не по UDRE, а по UTXC, и может даже добавить небольшую задержку, удлинняющую стоповый бит - это чтобы не накапливалась ошибка расхождения частоты.
|
|
|
|
|
Jan 7 2008, 19:11
|

Частый гость
 
Группа: Свой
Сообщений: 145
Регистрация: 11-12-06
Пользователь №: 23 382

|
Цитата(rezident @ Jan 7 2008, 16:08)  А временнЫе паузы задержек переключения драйвера RS485 передача/прием и задержки выдачи ответа выдерживаются? Ну ясен перец 8) Я же сказал, что все работало на 115200...
--------------------
--- human traffic - всегда 8)
|
|
|
|
|
Jan 7 2008, 22:38
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(anpilog @ Jan 8 2008, 00:11)  Ну ясен перец 8) Я же сказал, что все работало на 115200... Дык, а мне не ясно, откуда этот перец? Ведь не работает же  Кроме того, что многие UART в PC не поддерживают работу на скорости выше чем, 128000 бит/с, могу сказать, что я не видел вашу схему конвертора. Каким способом переключается направление передачи в конверторе USB-RS485? Собственное "эхо" на выбранной скорости оба устройства (PC с конвертором USB-RS485 и МК с RS485) ловят? Проверить это можно, если не отключать приемник RS485 на время передачи, например, для MAX485 нужно управлять только сигналом DE, а RE просто "приземлить". Если "эхо" ловится нормально, то какие временные паузы у вас: - удержания линии RS485 после передачи - задержки передачи ответа после приема пакета? Они постоянные или рассчитываются в зависимости от скорости передачи?
|
|
|
|
|
Jan 8 2008, 00:01
|
Участник

Группа: Свой
Сообщений: 33
Регистрация: 29-04-07
Из: Минск
Пользователь №: 27 397

|
попробуйте согласно AN232B-05_BaudRates(FTDI appl. note) исправить одну из маленьких скоростей на ту что нужно вам. мне однажды это помогло.
|
|
|
|
|
Jan 8 2008, 20:54
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(anpilog @ Jan 8 2008, 23:30)  Висим в приеме. Как только приняли пакет данных - переключаемся на передачу. Передаем данные. Здесь ошибка. Нужно выждать гарантированную паузу, чтобы уже мастер был готов к приему ответа. В вашем случае FT232 видимо быстро в готовность переходит, а другому оборудованию может потребоваться до десятков мс, чтобы перейти в режим приема ответа. Тем более когда линия связи весьма протяженная и на линии присутствуют репитеры RS485. А такой вариант исключать никогда нельзя. Цитата(anpilog @ Jan 8 2008, 23:30)  Передаем данные. Ждем 1мс Здесь тоже должна быть временнАя задержка пропорциональная скорости передачи длительностью хотя бы в один символ. Хотя 1мс задержки переключения передатчика RS485 на прием достаточно вплоть до скорости 9600, но если вы только не "настольный" вариант делаете, то все эти паузы и задержки должны быть настраиваемыми под конкретное оборудование (контроллер/конвертор), скорость передачи и линию связи.
|
|
|
|
|
Jan 9 2008, 09:54
|

Частый гость
 
Группа: Свой
Сообщений: 145
Регистрация: 11-12-06
Пользователь №: 23 382

|
Цитата(rezident @ Jan 8 2008, 22:54)  Здесь ошибка. Нужно выждать гарантированную паузу, чтобы уже мастер был готов к приему ответа. В вашем случае FT232 видимо быстро в готовность переходит, а другому оборудованию может потребоваться до десятков мс, чтобы перейти в режим приема ответа. Тем более когда линия связи весьма протяженная и на линии присутствуют репитеры RS485. А такой вариант исключать никогда нельзя. Здесь тоже должна быть временнАя задержка пропорциональная скорости передачи длительностью хотя бы в один символ. Хотя 1мс задержки переключения передатчика RS485 на прием достаточно вплоть до скорости 9600, но если вы только не "настольный" вариант делаете, то все эти паузы и задержки должны быть настраиваемыми под конкретное оборудование (контроллер/конвертор), скорость передачи и линию связи. Я разве говорил про какое-то стороннее оборудование? Ничего такого нет и не предвидится. А мне нужно получить наибольшую скорость передачи данных. Да и все пакеты приходят гарантированно сбоев нету. Есть какая-то задержка!!! ЗЫ: Комментарии полезные (за них спасибо) но не по существу 8(
--------------------
--- human traffic - всегда 8)
|
|
|
|
|
Jan 17 2008, 13:38
|
Группа: Новичок
Сообщений: 6
Регистрация: 30-10-07
Пользователь №: 31 895

|
Цитата(anpilog @ Jan 8 2008, 21:30)  Добрался до железа. Повозился - завёл. Что ни говори а усиленное штудирование мануалов - прочищает 8)
Железо: Atmega128 - 11.0592MGz Драйвер RS485 линия передачи Драйвер RS485 FT232BM c подключенным TXDEN к RXEN и TXEN на драйвере RS485. Скорость 230400. Передача данных работает. Байтики бегают и принимаются.
FT232BM сам регулирует прием перачу и задержки. Мега работает так: Висим в приеме. Как только приняли пакет данных - переключаемся на передачу. Передаем данные. Ждем 1мс переключаемся в прием.
Но вот, что вылезло: Время от отправки пакета (10 байт) до получения ответа (5 байт) составляет 15-16мс (замерял Visual Studio)
Что-то многовато 8( Появилось подозрение на дрова FTDI 8(
Скачал последнюю версию. Поигрался с Latency Timer в настройках драйвера. По умолчанию - 16 мс. Поставил на 1мс. Слегка помогло. Но теперь каждые 5-6 запрос/ответ отрабатывает по старой схеме (15-16мс на цикл опроса).
Никто не сталкивался с подобной ситуацией? Или для это FT232BM нормальная ситуация? зайди на сайт FTDI и прочитай AN232B-04_DataLatencyFlow.pdf
|
|
|
|
|
Jan 17 2008, 20:56
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(anpilog @ Jan 8 2008, 21:30)  Поигрался с Latency Timer в настройках драйвера. По умолчанию - 16 мс. Поставил на 1мс. Слегка помогло. Но теперь каждые 5-6 запрос/ответ отрабатывает по старой схеме (15-16мс на цикл опроса). Поздравляю, Вы опытным путем установили такт Вашей операционки Windows... Он оказался 15-16мс... Хотя чтобы это понятять не нужно было такие сложные тесты придумывать  А как с этим бороться, это уже совсем другой и очень непростой вопрос...
|
|
|
|
|
Jan 18 2008, 11:41
|

Частый гость
 
Группа: Свой
Сообщений: 145
Регистрация: 11-12-06
Пользователь №: 23 382

|
Цитата(singlskv @ Jan 17 2008, 22:56)  Поздравляю, Вы опытным путем установили такт Вашей операционки Windows... Он оказался 15-16мс... Хотя чтобы это понятять не нужно было такие сложные тесты придумывать  А как с этим бороться, это уже совсем другой и очень непростой вопрос... Ну я бы так не сказал 8) Абсолютно правильный ответ дал yuldash А по поводу такта ОС - сильно сомневаюсь 8)
--------------------
--- human traffic - всегда 8)
|
|
|
|
|
Jan 18 2008, 12:31
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(anpilog @ Jan 18 2008, 13:41)  Ну я бы так не сказал 8) Абсолютно правильный ответ дал yuldash А по поводу такта ОС - сильно сомневаюсь 8) +1 +1 +1 Кстати, когда я первый раз увидел подобное обсуждение, я удивился - о каком таком козырьке какой такой задержке идёт речь? У себя несколько раз скопом лазил - никаких задержек в кучу милисекунд не видел. Потом дошло - я гораздо раньше обмен для просто COM-порта сделал через OVERLAPPED с отмашкой по EventCharacter (и выставил его на SLIP_END), чтобы поток ком-порта всплывал по концу пакета, а не на каждый байт. А драйвер VCP аккуратно передал этот код из DCB в ft232 и всё бегало так быстро, как могло.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Jan 18 2008, 12:38
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(anpilog @ Jan 18 2008, 14:41)  А по поводу такта ОС - сильно сомневаюсь 8) В чем сомневаетесь ? В том что такт у Windows от 10 до 20 мс ? Это легко можно померить, у меня на одном компе 10мс на другом ~16мс. Правда например у Windows Server такт 1-3мс Ну и еще есть проги которые меняют такт Windows до 1-3мс ни у кого не спрашивая и никого не предупреждая, например так ведет себя Qip.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|