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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> XMega - FT232RL - PS
zombi
сообщение May 15 2012, 20:51
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Господа помогите. Мозг уже плавится.
Схема: Xmega <-> FT232RL <-> PS.
Нужно по запросу от PS (путём посылки байта 0x40) получить от иксмеги 32MB данных.
Прогу на PS пишу на Delphi.
Передавать решил пачками по 512 байт (т.е. 65536 транзакций).
Скорость сом порта 2Mb/s.
Всё вроде работает, но есть один нюанс (напишу позже).
Вот так открываю порт:
Код
var h:thandle;
...
h:=fileopen('COM7',fmOpenReadWrite);
...

Вот процедура вычитки сом порта (максимально упростил для наглядности):
Код
procedure BUF_read;
var i,k:dword;B:byte;
    BUF:array [0..511] of byte;
begin
  B:=$40;
  for k:=0 to $FFFF do begin
    _hwrite(h,@B,1);
    for i:=0 to 511 do _hread(h,@buf0[i],1);
  end;
end;

RXD и TXD наблюдаю осциллографом.
Сразу после передачи писишкой байта 0x40 иксмега передаёт в ответ 512 байт затем пауза примерно 17ms и цикл повторяется.
Откуда эта пауза берётся?
Как от неё избавиться?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 15 2012, 21:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(zombi @ May 15 2012, 23:51) *
Сразу после передачи писишкой байта 0x40 иксмега передаёт в ответ 512 байт затем пауза примерно 17ms и цикл повторяется.
Откуда эта пауза берётся?
Как от неё избавиться?

Может watchdog сбрасывает?
Go to the top of the page
 
+Quote Post
zombi
сообщение May 15 2012, 21:17
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(_Артём_ @ May 16 2012, 00:08) *
Может watchdog сбрасывает?

watchdog в мк выключен.
Проблема в том что писишка следющий байт запроса (0х40) передаёт после паузы.
Задержка именно в писишке.
мк отвечает сразу и нужным количеством байт, писишка их успешно принимает но следующий запрос передаёт после паузы!
Пробывал играться с таймаутами но ниче не меняется crying.gif
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение May 15 2012, 21:25
Сообщение #4





Guests






Цитата(zombi @ May 16 2012, 01:17) *
... Задержка именно в писишке...

Вы ничего не сказали про управление потоком. Какие настройки для COM-порта в PC?
И как управляете этими сигналами со стороны UART FT232?
Go to the top of the page
 
+Quote Post
zombi
сообщение May 15 2012, 21:32
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(@Ark @ May 16 2012, 00:25) *
Вы ничего не сказали про управление потоком.
Наверное никак не управляю. Тупо сижу и жду когда придут все 512 байт.
Цитата(@Ark @ May 16 2012, 00:25) *
Какие настройки для COM-порта в PC?
Getcommstate(h,DCB);
DCB.BaudRate:=2000000;
Setcommstate(h,DCB);
Цитата(@Ark @ May 16 2012, 00:25) *
И как управляете этими сигналами со стороны UART FT232?
Какими сигналами? и как оными управлять?
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение May 15 2012, 21:42
Сообщение #6





Guests






Цитата(zombi @ May 16 2012, 01:32) *
Наверное никак не управляю. Тупо сижу и жду когда придут все 512 байт.
Getcommstate(h,DCB);
DCB.BaudRate:=2000000;
Setcommstate(h,DCB);

На счет Дельфи я Вам не подскажу, но желательно выставить режим порта 'без управления потоком', если этот механизм никак не используете.
В принципе, винда (если речь о ней) может давать задержки от 10мс до 300мс (иногда и более), Вас ни спрашивая ни о чем, и ни о чем
не уведомляя... Не реал-тайм эта система - имеет право, как говориться...

Сообщение отредактировал @Ark - May 15 2012, 21:44
Go to the top of the page
 
+Quote Post
zombi
сообщение May 15 2012, 21:57
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(@Ark @ May 16 2012, 00:42) *
В принципе, винда (если речь о ней)
О ней родимой. windows 7
Цитата(@Ark @ May 16 2012, 00:42) *
На счет Дельфи я Вам не подскажу, но желательно выставить режим порта 'без управления потоком', если этот механизм никак не используете.
Надо будет поискать что это за режим.
Цитата(@Ark @ May 16 2012, 00:42) *
В принципе, винда (если речь о ней) может давать задержки от 10мс до 300мс (иногда и более), Вас ни спрашивая ни о чем, и ни о чем
не уведомляя... Не реал-тайм эта система - имеет право, как говориться...
Настораживает завидное постоянство задержки ~17ms. Хотя небольшая девиация имеется ~0.4ms.
При общем периоде транзакций ~20ms.
Не может ли это быть как-то связано с RTC писишки? что то когдато слышал про какието вродебы 18ms?
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение May 15 2012, 22:11
Сообщение #8





Guests






Цитата(zombi @ May 16 2012, 01:57) *
Настораживает завидное постоянство задержки ~17ms. Хотя небольшая девиация имеется ~0.4ms.
При общем периоде транзакций ~20ms.
Не может ли это быть как-то связано с RTC писишки? что то когдато слышал про какието вродебы 18ms?

Насчет таймера - не знаю, его период когда-то был порядка 18,2 мс (точная частота 1193180/65536).
Но нужно принимать, как данность, задержку между пакетами в 20мс, как среднестатистическую, если имеете дело с виндой.
И быть готовым к задержкам порядка 100-300мс - время от времени. И, очень редко, - к 'зависаниям' на пару-другую секунд.
Все это - по опыту общения с виндой, вплоть до ХР. Что там дальше- не ведомо...

Сообщение отредактировал @Ark - May 15 2012, 22:12
Go to the top of the page
 
+Quote Post
zombi
сообщение May 15 2012, 22:28
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(@Ark @ May 16 2012, 01:11) *
Но нужно принимать, как данность, задержку между пакетами в 20мс, как среднестатистическую, если имеете дело с виндой.
И быть готовым к задержкам порядка 100-300мс - время от времени. И, очень редко, - к 'зависаниям' на пару-другую секунд.
Все это - по опыту общения с виндой, вплоть до ХР. Что там дальше- не ведомо...

Дык, сама то задержка не напрягает. Напрягает время за которое, с учётом оной, писишка прочитает 32МB.
По идее без задержки (на скорости 2Mb) должно быть ~167 сек, а с задержкой получается 1310 сек!!! wacko.gif в восемь раз дольше!!!
Наверно надо размер буфера увеличивать.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение May 15 2012, 22:39
Сообщение #10





Guests






Цитата(zombi @ May 16 2012, 02:28) *
Дык, сама то задержка не напрягает. Напрягает время за которое, с учётом оной, писишка прочитает 32МB.
По идее без задержки (на скорости 2Mb) должно быть ~167 сек, а с задержкой получается 1310 сек!!! wacko.gif в восемь раз дольше!!!
Наверно надо размер буфера увеличивать.

На сколько помню, передаваемый по USB пакет имеет ограничение. Выше него не "прыгните".
Давайте подождем комментариев более компетентных в этом вопросе коллег. sm.gif
Go to the top of the page
 
+Quote Post
V_G
сообщение May 15 2012, 22:55
Сообщение #11


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



А вы попробуйте какой-нибудь терминалкой принять файл 32 метра с другого компа через 2 адаптера USB-COM (или через две FT232). Получите опорное время, вокруг которого можно будет прыгать
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение May 15 2012, 23:12
Сообщение #12





Guests






Цитата(V_G @ May 16 2012, 02:55) *
А вы попробуйте какой-нибудь терминалкой принять файл 32 метра с другого компа через 2 адаптера USB-COM (или через две FT232). Получите опорное время, вокруг которого можно будет прыгать

Да вот и не факт, что получите, оказывается! Я вот сталкивался с ситуациями, когда передача идет в одну сторону на скорости порядка 2Мбит/сек (от камеры). И винда такой поток прекрасно "переваривает". Именно через FT232! А вот когда нужно часто переключаться с приема на передачу - скорость падает до 18 пакетов в секунду, не зависимо от их размера. Опять же из опыта... laughing.gif
Go to the top of the page
 
+Quote Post
V_G
сообщение May 16 2012, 01:07
Сообщение #13


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Так у топикстартера и есть двусторонний обмен, хоть и несимметричный: 1 байт запроса - 512 байт ответа. Протокол передачи файла вроде как (не знаю точно) более симметричен, т.е. предполагает больший поток запросных и проверочных байтов. Но все-таки будет какая-то опорная цифра, не зависящая от аппаратуры и программы топикстартера. Боюсь, потребные ТС 167 сек на 32 Мбайта по компорту (даже виртуальному) - это фантастика.

PS. Там еще какие-нить таймауты в дровах или в FT232 надо подкручивать, ведь по USB идут свои пачки и на гораздо более высокой скорости. Оптимально и размеры пачек COM и USB надо тоже как-то согласовывать.

Сообщение отредактировал V_G - May 16 2012, 01:11
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 16 2012, 03:42
Сообщение #14


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Я может, что-то не понял, но при чём тут винда вообще? Задержки-то в передаче у меги?
Цитата(zombi @ May 16 2012, 02:51) *
RXD и TXD наблюдаю осциллографом.
Сразу после передачи писишкой байта 0x40 иксмега передаёт в ответ 512 байт затем пауза примерно 17ms и цикл повторяется.



--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
V_G
сообщение May 16 2012, 03:59
Сообщение #15


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Нет, как раз пауза 17 мс может быть вызвана как тормозами винды, так и таймаутом заполнения буфера USB в FT232. Если знать точно размер этого буфера и подогнать размер пакета UART под него, ожидания таймаута не будет. То же самое с запросным байтом, надо как-то сразу после его помещения в буфер, без таймаутов, инициировать передачу по USB.
Go to the top of the page
 
+Quote Post

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

 


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


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