Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 03.08.2014, 14:29  
rus_12345
Частый гость
 
Регистрация: 06.03.2011
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
rus_12345 на пути к лучшему
По умолчанию Тормоза при передаче данных через UART в Bluetooth модуль

Всем привет!
Делаю Bluetooth HID джойстик на микроконтроллере PIC18F4550 и bluetooth модуле Bluegiga WT12. Микроконтроллер с модулем общается через UART на скорости 115200, эта скорость вшита в модуль производителем. С конфигурацией bluetooth модуля разобрался, компьютер определяет его как HID джойстик, данные тоже передаются, кнопки джойстика работают, но есть одна проблемка при передаче данных. Данные передаются в WT12 микроконтроллером через UART постоянно в цикле. Почему-то возникают тормоза при передаче данных, а именно, если передавать данные без паузы после каждого байта, то данные идут с тормозами, а если добавить паузу после передачи очередного байта, то все нормалек. У меня контролируется буфер UART, контролируется буфер WT12, и все равно эти не понятные тормоза. Такое впечатление, что где-то что-то еще осталось без контроля, и оно типа переполняется и дает ошибки, хотя данные поступают на комп без искажений, проверял спец прогой, которая, показывает входящие HID данные. Программку для контроллера пишу в MikroC. Вот два варианта кода:

Вариант передачи данных через UART в Bluetooth WT12 без паузы, который дает тормоза т.е. я нажимаю кнопку джойстика и через секунду вижу как загорается кнопка в параметрах джойстика, в винде, а так же вижу во входящих данных в программе которая показывает входящие данные HID.

PHP код:
while(1)
{
  
writebuff[0]=0x9F;
  
writebuff[1]=0x07;
  
writebuff[2]=0xA1;
  
writebuff[3]=x_axis;
  
writebuff[4]=y_axis;
  
writebuff[5]=x2_axis;
  
writebuff[6]=y2_axis;
  
writebuff[7]=hat;
  
writebuff[8]=~PORTD;

  for(
i=0;i9;i++)
  {
    while( 
PIR1.TXIF == 0){}//контроль буфера UART
    
while(UART1_Tx_Idle() == 0) {}//контроль буфера UART
    
while( BTM_NRTS_bit == 1){}//контроль буфера WT12

    
UART1_Write(writebuff[i]);//передача байта в WT12
    //Delay_us(100);//пауза
  
}


Вариант, который работает нормально, но с паузой после очередной передачи данных.

PHP код:
while(1)
{
  
writebuff[0]=0x9F;
  
writebuff[1]=0x07;
  
writebuff[2]=0xA1;
  
writebuff[3]=x_axis;
  
writebuff[4]=y_axis;
  
writebuff[5]=x2_axis;
  
writebuff[6]=y2_axis;
  
writebuff[7]=hat;
  
writebuff[8]=~PORTD;

  for(
i=0;i9;i++)
  {
    while( 
PIR1.TXIF == 0){}//контроль буфера UART
    
while(UART1_Tx_Idle() == 0) {}//контроль буфера UART
    
while( BTM_NRTS_bit == 1){}//контроль буфера WT12

    
UART1_Write(writebuff[i]); //передача байта в WT12
    
Delay_us(100);//пауза
  
}

Подскажите, пожалуйста, в чем может быть дело? Может кто-то работал с WT12 и сталкивался с такой проблемой?
Реклама:
rus_12345 вне форума  
Непрочитано 03.08.2014, 15:26  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,016
Сказал спасибо: 0
Сказали Спасибо 4,954 раз(а) в 2,378 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Тормоза при передаче данных через UART в Bluetooth модуль

rus_12345,
а что показывают NRTS/NCTS - может нужно работать с учетом "переваривания" потока? или попробовать снизить скорость до 9600 - зачем джойстику скорость 115к?
jump вне форума  
Непрочитано 03.08.2014, 15:38  
locik_1
Почётный гражданин KAZUS.RU
 
Аватар для locik_1
 
Регистрация: 18.02.2012
Адрес: Саратов
Сообщений: 1,647
Сказал спасибо: 168
Сказали Спасибо 428 раз(а) в 347 сообщении(ях)
locik_1 на пути к лучшему
По умолчанию Re: Тормоза при передаче данных через UART в Bluetooth модуль

в энтом не разбираюсь.может размер стека увеличить.
locik_1 вне форума  
Непрочитано 04.08.2014, 08:58  
rus_12345
Частый гость
 
Регистрация: 06.03.2011
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
rus_12345 на пути к лучшему
По умолчанию Re: Тормоза при передаче данных через UART в Bluetooth модуль

Цитата:
а что показывают NRTS/NCTS - может нужно работать с учетом "переваривания" потока? или попробовать снизить скорость до 9600 - зачем джойстику скорость 115к?
NRTS bluetooth модуля контролируется:
while( BTM_NRTS_bit == 1){}//контроль буфера WT12

т.е. когда модуль разрешает, тогда данные и отправляются. Точно так же с буфером микроконтроллера - если буфер полный, то запись в него приостанавливается.

На счет скорости. Не знаю, может и хватит скорости по меньше, нужно проверить, но предварительно необходимо сконфигурировать модуль на эту скорость. Думаете эти тормоза из-за высокой скорости? А модуль разве не рассчитан на эту скорость? Мне просто интересно, 115200 как бы рекомендуемая скорость производителем, если его прописали по умолчанию. Микроконтроллер тоже поддерживает данную скорость. На этой скорости в самом начале программы идет конфигурирование модуля и получение инфы в ответ на АТ команды т.е. все проходит хорошо, а в режиме данных такая беда. Не знаю может дело в HID библиотеке? Хотя через USB HID мой джойстик работает без проблем, а скорость передачи та же что и через bluetooth. Я попробую на скорости 9600, посмотрим что получится, но странно что не работает нормально на 115200. Пропускная способность радиоканала вроде как не слабая, в datasheet написано: BlueCore4 implements Bluetooth® 2.1 + EDR (Enhanced Data Rate) and it can deliver data rates up to 3 Mbps. Если я правильно понимаю...
Какие еще варианты могут быть?
rus_12345 вне форума  
Непрочитано 06.08.2014, 08:47  
rus_12345
Частый гость
 
Регистрация: 06.03.2011
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
rus_12345 на пути к лучшему
По умолчанию Re: Тормоза при передаче данных через UART в Bluetooth модуль

Проверил вчера передачу данных микроконтроллером в bluetooth модуль через UART на скорости 9600. Результат тот же т.е. данные доходят до компа с задержкой.
rus_12345 вне форума  
Непрочитано 06.08.2014, 11:36  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,616
Сказал спасибо: 708
Сказали Спасибо 4,383 раз(а) в 2,007 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: Тормоза при передаче данных через UART в Bluetooth модуль

Попробуйте модули HC-06 у меня не было проблем при непрерывном потоке на 921600бод
__________________
Я не помогаю. Я провоцирую думать.
Не дай вам Бог плохих контактов.
Kabron вне форума  
Непрочитано 05.01.2015, 16:47  
pasipaka
Прописка
 
Регистрация: 21.03.2011
Сообщений: 107
Сказал спасибо: 15
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
pasipaka на пути к лучшему
По умолчанию Re: Тормоза при передаче данных через UART в Bluetooth модуль

Народ, кто знаком с БТ модулями?
Есть ли у них возможность получать уровень сигнала???
pasipaka вне форума  
Непрочитано 05.01.2015, 18:35  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Тормоза при передаче данных через UART в Bluetooth модуль

У дешевых нет, у дорогих есть
niXto вне форума  
Непрочитано 05.01.2015, 19:39  
pasipaka
Прописка
 
Регистрация: 21.03.2011
Сообщений: 107
Сказал спасибо: 15
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
pasipaka на пути к лучшему
По умолчанию Re: Тормоза при передаче данных через UART в Bluetooth модуль

Сообщение от niXto Посмотреть сообщение
У дешевых нет, у дорогих есть
не подскажешь модель модуля небольшую по размерам и экономную в плане энергии.
pasipaka вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бортовой комп (почти) теперь и у меня (+) kd_Rash Микроконтроллеры, АЦП, память и т.д 79 11.08.2011 14:23
Передача данных через мобильник без оператора Zemlyanov Автоматика и аппаратура связи 11 14.08.2008 22:37
Проблемы с приемом данных через UART Tiny 2313 SoapMaker Микроконтроллеры, АЦП, память и т.д 0 08.04.2008 10:35
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49
ЗУ/БП 14.4В 20А SacreD_ Источники питания и свет 31 24.07.2007 13:01


Часовой пояс GMT +4, время: 03:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot