Документация к библиотеке

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: Пред. 1 2 3
Ответить
RSS
Документация к библиотеке
 
Здравствуйте! Нам не очень понятны Ваши выкладки. Откуда берется, например, утверждение о том, что при максимальной эфирной битовой скорости (500 кбит/с) и скорости UART 9,6 кбит/с данные передаваться не будут?

Никаких однозначных соотношений между этими скоростями не существует. Есть только оценка: при непрерывном потоке входных данных на интерфейсе UART, эфирная скорость должна быть не менее, чем на 50% быть больше битовой скорости UART. Это связано с тем, что данные в эфир передаются пакетами с максимальной полезной нагрузкой 40 байт и числом служебных байт 24. То есть общая длина пакета превышает длину полезной нагрузки приблизительно на 50%. Обращаю Ваше внимание, что эта оценка верна только для однонаправленной передачи данных и при условии, что все пакеты принимаются без ошибок, что, как Вы понимаете, в реальной жизни неосуществимо. Как только в пакеты начинают теряться, эта оценка работать перестает. А дальше все зависит от качества канала связи - чем больше пакетов теряется, тем больше должен быть запас.
Если же у Вас канал дуплексный, то ситуация еще больше усугубляется за счет того, что все радиомодули разделяют одну и ту же среду передачи, то есть эфир.
 
Добрый день! Благодарю за ответ он полезен. Значит в идеальных условиях отношение скоростей примерно 1:2 UART к эфиру. По поводу скоростей. Вот кусок кода, который отправляет пакеты. Условия - эфирная скорость 500 к. Расстояние - 3 метра. Мощность 10 дБм. Выставляете в коде скорость инициализирующую порт (одинаковую для приемного модуля и передающего) и смотрите как моргает индикатор и что и как принимает приемник. Возможно, проблемы были связаны с длиной массива, который я передавал (он менялся от 10 до 63 байт). Но факт остается фактом, если на 9600 и 500к 63 байта проходили без потерь, то при 38400 и 500к принимались только 46 байт из отправленных 63, а на более высоких еще меньше.

void setup()
{
// serial2.begin(115200);
serial2.begin(57600);
// serial2.begin(38400);
// serial2.begin(19200);
// serial2.begin(9600);
// serial2.begin(4800);
// serial2.begin(2400);
// serial2.begin(1200);
// serial2.begin(110);
lcd.begin(16, 2); // Задаем размерность экрана
lcd.clear();

for(int i =0; i<N; i++) //Инициализация массива Str из N байтов.
{
Str[i]='F';
}
}

void loop()
{
int count=0;
for(int i = 0; i<50; i++) //Отправка массива 50 раз - 50 раз по N байт
{
// lcd.clear();
lcd.setCursor(11, 0);
lcd.print('i');
lcd.print(i);
t0 = micros();
serial2.write(Str); //отправка строки из N байт
serial2.flush();
dt=micros()-t0; //время отправки-получения N байт в микросекундах
tau=tau+dt;
}


T=tau/1000000.0; //время отправки-приема 50*N*8 бит в секундах.
COR = 100*8*long(N-1); //число отправленных бит
V=COR/T; //скорость бит в сек
 
Как мне отредактировать текст? Я там не правильно написал.
 
Для редактирования текста необходимо зарегистрироваться на сайте.

Скорее всего, вы осуществляете передачу на большой мощности и маленьком расстоянии. Попробуйте разнести модули или снизить мощность хотя бы до 0 дБм. Описанная зависимость исчезнет.
Страницы: Пред. 1 2 3
Ответить
Читают тему
Форма ответов
 
Текст сообщения*
Отправить Отменить