USART - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: DAlexV 
Форум Picbasic.ru » Программирование МК » Swordfish » USART
USART
AndrF Дата: Вт, 05.05.2015, 11:25  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 148
Репутация: 3   ±
Замечания:   ±
На сайте с 03.02.2012

Статус: Offline

Используется USART.bas. Скорость 115200.

Контроллер через FT232RL подключен к компу.

Данные (бинарные) передаются в цикле:

Код
For i = 0 To mUartBuffer(2) - 1
      USART.WriteByte(mUartBuffer(i))
    Next


Но передача идет медленно - создается такое впечатление что они где-то застревают в буфере контроллера. Если после цикла приведенного выше вставить:

Код
USART.WriteByte(13)
    USART.WriteByte(10)

То передача идет на порядок быстрей...

Вопрос - как обойтись без последних двух строк и просто сказать контроллеру что надо бы наконец передать?
ЯНДЕКС Дата: 05.05.2015
ADMIN Дата: Ср, 06.05.2015, 10:42  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1097
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Так можно в конце массива mUartBuffer вставить эти два символа. Это символы окончания строки и типа Enter. Они хоть как нужны
AndrF Дата: Ср, 06.05.2015, 12:40  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 148
Репутация: 3   ±
Замечания:   ±
На сайте с 03.02.2012

Статус: Offline

Цитата ADMIN ()
Так можно в конце массива mUartBuffer вставить эти два символа. Это символы окончания строки и типа Enter. Они хоть как нужны

Я не строку передаю, а бинарный массив. Пока в конце и поставил эти два символа, но хотелось бы обойтись без них.

Впрочем, на 100% я не уверен что проблема в контроллере - это надо хотя бы осциллографом смотреть. Может дело и в контроле VB6. Хотя бинарный режим у него включен...
ADMIN Дата: Ср, 06.05.2015, 13:00  |                                                                                                                Сообщение # 4
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1097
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Так какая разница, бинарный, не бинарный? Число оно и в африке число. Или я чего -то не понимаю?
AndrF Дата: Ср, 06.05.2015, 13:54  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 148
Репутация: 3   ±
Замечания:   ±
На сайте с 03.02.2012

Статус: Offline

Цитата ADMIN ()
Так какая разница, бинарный, не бинарный? Число оно и в африке число. Или я чего -то не понимаю?

Ну текстовый массив состоит все же из байтов содержащих коды символов. Для него завершение CrLf логично. А бинарный может содержать что угодно - завершение CrLF для него вроде смысла не имеет...

Сейчас убрал CrLf из конца массива - скорость как вчера не упала... Так что было вчера даже сказать не могу - с тех пор много поменял...

Но! Смущает вообще скорость - запрос и прием 1128 байт происходит примерно за 0.26 секунды. IMHO медленно для 115200 бод. Или я не прав? Данные принимаются все (у контроллера их забираю блоками до 128 байт плюс несколько служебных типа контрольной суммы и длины блока). Ошибок не наблюдаю...

Если к этому времени добавить еще время чтения этих байт из 24C128 по шине 1 Mhz, то выходит примерно 0,3 секунды.

Сообщение отредактировал AndrF - Ср, 06.05.2015, 14:09
ivan_fd Дата: Ср, 06.05.2015, 15:58  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Специалист
Сообщений: 882
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата AndrF ()
Но! Смущает вообще скорость - запрос и прием 1128 байт происходит примерно за 0.26 секунды. IMHO медленно для 115200 бод. Или я не прав?

Если бы просто передать 1128 байт, то немного медленно. А если с запросами и служебной инфой
, то может быть.


Меня все время преследуют умные мысли...но я быстрее!!!
AndrF Дата: Ср, 06.05.2015, 16:12  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 148
Репутация: 3   ±
Замечания:   ±
На сайте с 03.02.2012

Статус: Offline

Цитата ivan_fd ()
Если бы просто передать 1128 байт, то немного медленно. А если с запросами и служебной инфой , то может быть.

Да мало там служебной инфы-то - 5 байт на пакет. Кроме того, при росте объема данных скорость растет практически линейно.

Задал вопрос на их форуме - посмотрим что ответят...

Как с этим обстоит дело в Протоне - за сколько удавалось передать килобайт данных - никто не замерял?

P.S
Оно, конечно, для того что делаю не дюже критично, но хотелось бы понять в чем дело.

Сообщение отредактировал AndrF - Ср, 06.05.2015, 16:14
Форум Picbasic.ru » Программирование МК » Swordfish » USART
Страница 1 из 11
Поиск: