Перейти к содержанию
    

Доброго времени суток!

 

Есть небольшой проектик в котором я расчитывал передавать по RS485 данные на ПК со скоростью более 115200.

Первую прикидку делал в CodeVision:

// USART0 initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART0 Receiver: On

// USART0 Transmitter: On

// USART0 Mode: Asynchronous

// USART0 Baud rate: 115200

UCSR0A=0x02;

UCSR0B=0x98;

UCSR0C=0x06;

UBRR0H=0x00;

UBRR0L=0x05;

 

Так вот при передачи данных с Atmega128 на ПК - получаю коверканые данне.

А при передачи с ПК на Atmega128 - ничего не получаею 8(

 

У когото был положительный опыт такой передачи?

 

ЗЫ:

Кварц 11,0592Мгц

На компе пробовал как родным COM портом так и USB-RS232(Ftdi)

В данный момент не могу посмотреть осцилографом 8(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А ваш COM-порт на PC "умеет" принимать данные на такой скорости? На более низкой скорости, скажем 115200, прием-передача идет нормально? И какой вы все же интерфейс испытываете? Вначале сообщения про RS485 вроде упоминается, а в реальности что? Если RS485, то какой конвертор RS485-RS232 используете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорее всего комп не поддерживает скорость выше 115200.

Кстати, на 115200 пробовали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странно, но 230400 для Fosc=11059200 соответствует UBRR = 0x002. А вобще, пробовал вплоть до 921600, всё шло как надо.

 

На случай если сильно расходятся частоты, как может быть в случае с ft(2)232, могу лишь посоветовать ставить на ПК 2 стоп-бита, на МК - один и отправлять очередной байт с МК не по UDRE, а по UTXC, и может даже добавить небольшую задержку, удлинняющую стоповый бит - это чтобы не накапливалась ошибка расхождения частоты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну ясен перец. что на 115200 я пробовал и передача шла нормальная!!!

Драйвер RS485 - поддерживает скорость до мегабита.

Приемная часть на ПR FT232BM + 485-й драйвер.

 

Спасибо "man with no name" за ответ по существу.

Сегодня попробую этот вариант.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Драйвер RS485 - поддерживает скорость до мегабита.

Приемная часть на ПR FT232BM + 485-й драйвер.

А временнЫе паузы задержек переключения драйвера RS485 передача/прием и задержки выдачи ответа выдерживаются?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А временнЫе паузы задержек переключения драйвера RS485 передача/прием и задержки выдачи ответа выдерживаются?

Ну ясен перец 8)

Я же сказал, что все работало на 115200...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А соедините вход и выход у FTDI (или у COM-порта), и попробуйте передавать данные. Сразу будет видно, где грабли - в ПК или в Меге. Попадались мне платы, которые не хотели понимать скорость больше, чем 115200. Хотя, FTDI вроде до 8 Мбит работает ... Может, её драйверы поток байтов разгребать не успевают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну ясен перец 8)

Я же сказал, что все работало на 115200...

Дык, а мне не ясно, откуда этот перец? Ведь не работает же ;)

Кроме того, что многие UART в PC не поддерживают работу на скорости выше чем, 128000 бит/с, могу сказать, что я не видел вашу схему конвертора. Каким способом переключается направление передачи в конверторе USB-RS485?

Собственное "эхо" на выбранной скорости оба устройства (PC с конвертором USB-RS485 и МК с RS485) ловят? Проверить это можно, если не отключать приемник RS485 на время передачи, например, для MAX485 нужно управлять только сигналом DE, а RE просто "приземлить". Если "эхо" ловится нормально, то какие временные паузы у вас:

- удержания линии RS485 после передачи

- задержки передачи ответа после приема пакета?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте согласно AN232B-05_BaudRates(FTDI appl. note) исправить одну из маленьких скоростей на ту что нужно вам.

мне однажды это помогло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрался до железа.

Повозился - завёл.

Что ни говори а усиленное штудирование мануалов - прочищает 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 нормальная ситуация?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Висим в приеме.

Как только приняли пакет данных - переключаемся на передачу.

Передаем данные.

Здесь ошибка. Нужно выждать гарантированную паузу, чтобы уже мастер был готов к приему ответа. В вашем случае FT232 видимо быстро в готовность переходит, а другому оборудованию может потребоваться до десятков мс, чтобы перейти в режим приема ответа. Тем более когда линия связи весьма протяженная и на линии присутствуют репитеры RS485. А такой вариант исключать никогда нельзя.

Передаем данные.

Ждем 1мс

Здесь тоже должна быть временнАя задержка пропорциональная скорости передачи длительностью хотя бы в один символ. Хотя 1мс задержки переключения передатчика RS485 на прием достаточно вплоть до скорости 9600, но если вы только не "настольный" вариант делаете, то все эти паузы и задержки должны быть настраиваемыми под конкретное оборудование (контроллер/конвертор), скорость передачи и линию связи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здесь ошибка. Нужно выждать гарантированную паузу, чтобы уже мастер был готов к приему ответа. В вашем случае FT232 видимо быстро в готовность переходит, а другому оборудованию может потребоваться до десятков мс, чтобы перейти в режим приема ответа. Тем более когда линия связи весьма протяженная и на линии присутствуют репитеры RS485. А такой вариант исключать никогда нельзя.

Здесь тоже должна быть временнАя задержка пропорциональная скорости передачи длительностью хотя бы в один символ. Хотя 1мс задержки переключения передатчика RS485 на прием достаточно вплоть до скорости 9600, но если вы только не "настольный" вариант делаете, то все эти паузы и задержки должны быть настраиваемыми под конкретное оборудование (контроллер/конвертор), скорость передачи и линию связи.

 

Я разве говорил про какое-то стороннее оборудование?

Ничего такого нет и не предвидится. А мне нужно получить наибольшую скорость передачи данных.

Да и все пакеты приходят гарантированно сбоев нету.

Есть какая-то задержка!!!

 

ЗЫ:

Комментарии полезные (за них спасибо) но не по существу 8(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы спрашиваете "как уменьшить паузу м/у приёмом и передачей менее 15мс на PC", то ответ - никак! Это обсуждалось уже. Даже из под ДОСа у вас будут просечки. А из под винды и подавно. Более того, чтобы обеспечить равномерность и единообразность работы на разном железе, я бы рекомендовал увеличить данный интервал до 20-25мс.

 

Для увеличения общей скорости необходимо увеличивать длину пакетов либо переходить на другой интерфейс. Например непосредственно на USB.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...