Радиомодули TR24A.

Итак, предлагаю поставить жирную точку в деле освоения этих радиомодулей. В рунете много обсуждений на эту тему, несмотря на все многообразие участников до сих пор качественный код и схема соединения этого модуля с контроллером мною не была обнаружена. Исключение может составлять лишь код, написанный эмбедером A9d из Украины, к сожалению не представившемся. Признаюсь, это один из образцов документации, о том как работает модуль я понял (правда до сих пор не до конца) именно отсюда.  Я его выложу здесь. Немного кода оттуда использовано у меня в проекте. Кстати, слышал, что A9D работал над протоколом, но пока не обнаружил это в сети.

Почему именно он?

- SPI интерфейс. Остальное в моем проекте было занято.

- Дешево, нет, почти бесплатно. Я купил за 80 руб.

- Многоканальный. В моем проекте требовалось минимум 5 каналов, так как 5 устройств общаются друг с другом.

- Есть фрагменты кода, описание, опыт использования другими пользователями.

- Дырочный монтаж. Так уж получилось, что место на плате ограничено, но этот модуль после монтажа как бы нависает над платой и под него умещается куча компонентов.

Теперь о вопросах практического использования.

- Модуль имеет напряжение питания 3.3 вольта.  Этот факт меня всегда выводит из себя, так как большинство радиомодулей имеет питание 3.3 вольта и устройство требует согласования при использовании контроллера и питания 5 вольт. Здесь именно  такой случай, поэтому контроллер я запитывал тоже от 3.3 вольт, так как стараюсь избегать приведения уровней,  потому что есть печальный опыт использования преобразователей на больших скоростях  (от 1 МБит).

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

- Модуль требует подтяжки некоторых ножек, подробности ниже на схеме.

О недостатках расскажу позже.

Теперь, в чем фишка? Есть такой проект, называется Ардуино, о нем еще будет рассказано в наших статьях. Для него по стандарту Wiring отписаны библиотеки для использования множества устройств. В том числе есть проект для TR24A. Сложность в том, что все библиотеки зависят от ядра Ардуино и портировать быстро не получается. Я знаю ядро Ардуино и портировал необходимые классы ядра в свой проект, теперь можно использовать полноценный класс VTR24Adapter автономно в своих проектах.  Его возможности:

- Инициализация модуля.

- Выбор канала передачи/приема данных и режима передачи.

- Посылка данных.

- Выбор системы исправления ошибок.

- Определение и задание типа кодирования данных.

Кроме того, класс не требует внешних прерываний для работы.

Код состоит из класса, одно элементного множества, VTR24Adapter и низкоуровневых C-функций.

Задание конфигурации ножек контроллера и модуля производится в файле Aspi.h. Например для контроллера ATMega32A я добавил туда следующий код:

#elif defined(__AVR_ATmega32__)
 
#define SPI0_SS_BIT					    BIT4
 
#define SPI0_SS_DDR					    DDRB
 
#define SPI0_SS_PORT					    PORTB
 
#define SPI0_SCLK_BIT					    BIT7
 
#define SPI0_SCLK_DDR				    DDRB
 
#define SPI0_SCLK_PORT				    PORTB
 
#define SPI0_MOSI_BIT					    BIT5
 
#define SPI0_MOSI_DDR				    DDRB
 
#define SPI0_MOSI_PORT				    PORTB
 
#define SPI0_MISO_BIT				         	BIT6
 
#define SPI0_MISO_DDR					DDRB
 
#define SPI0_MISO_PORT					PORTB

Схема подключения модуля:

 

 

 

 

 

 

 

 

 

 

Пример использования в проекте:

#include "tr24/v_tr24_adapter.h"
 
enum { RADIO_CHANNEL = 76 };
 
int main ()
{
    VTR24Adapter::tr24.setChannel(RADIO_CHANNEL);
    VTR24Adapter::tr24.on(VTR24Adapter::FEC13, VTR24Adapter::LINE_CODE_8_10);
    uint8_t buffer[64] = {1, 2, 3};
    VTR24Adapter::tr24.write( buffer, 3);
    int read;
    do {
        VTR24Adapter::tr24.setMode(VTR24Adapter::RECIEVE_MODE);
        read = VTR24Adapter::tr24.read(buffer, 64);
    }
    while(read <= 0);
    VTR24Adapter::tr24.off();
    return 0;
}

На мой взгляд, код достаточно нагляден, поэтому коментарии не пишу. Если будут вопросы пишите в коментариях.

Теперь о проблемах насущных:
- Модуль принимает данные с ошибками, если приемник движется относительно передатчика.
- У модуля не работает аппаратное CRC в некоторых режимах.
- Нет протокола. Для этого модуля нужен хороший протокол с контролем ошибок и доступом к множествам устройств по адресам.
- Если будет необходимость считать RSSI, то имейте ввиду это можно сделать только, когда модуль находится в режиме приема, считан буфер. Только после этого можно получить реальную мощность принимаемого сигнала, в противном случае придет 0. На расстоянии 20см между приемником и передатчиком максимум RSSI был на уровне 28. Зависимость мощности от расстояния больше напоминает нормальную функцию распределения и могла бы быть отлично использована в качестве генератора случайных чисел, это чисто из моих наблюдений. :)

Мы недавно разработали протокол, гарантирующий доставку пакета через tr24a. Можете посмотреть здесь.

Скачать проект tr24a
Документация на русском языке от A9D

38 Comments

  1. a9d:

    "- Модуль имеет напряжение питания 3.3 вольта. Этот факт меня всегда выводит из себя, так как большинство радиомодулей имеет питание 3.3 вольта и устройство требует согласования при использовании контроллера и питания 5 вольт. Здесь именно такой случай, поэтому контроллер я запитывал тоже от 3.3 вольт, так как стараюсь избегать приведения уровней, потому что есть печальный опыт использования преобразователей на больших скоростях (от 1 МБит)."

    АВР не может быть работать корректно на частоте 16Мгц с питанием 3.3В. Читаем даташит. Для приведения лог. уровней можно использовать буферные толерантные микросхемы, частоту в 3Мбит держат без проблем. Если лень, то можно использовать делитель напряжения на резисторах. Резисторы держат частоту хорошо. Смотрим даташит на проволочные резисторы(у них самые галимы частотные характеристики) и убеждаемся в этом.

    "- Модуль требует подтяжки некоторых ножек, подробности ниже на схеме."

    SPI всегда требует подтяжки. Подтягивать нужно MISO, MOSI, CLK.

    "- Модуль принимает данные с ошибками, если приемник движется относительно передатчика."

    Ничего подобного. У меня двигается робот как угодно и процент битых пакетов не меняется.

    "- Скорее всего у модуля не работает аппаратное CRC."

    Он работает. Но непонятно как именно.

    "- При считывании буфера приемника обнаруживаются байты, которые не относятся к данным. Причем это первый байт, скорее всего это длина посылки."

    Читаем даташит. Да это везде написано. Первый бай всегда содержит размер пакета.

    "- Нет протокола. Для этого модуля нужен хороший протокол с контролем ошибок и доступом к множествам устройств по адресам."

    Протокол был разработан 29 янв 2011. Статья была написана 06 Март 2011.

    "- Если будет необходимость считать RSSI, то имейте ввиду это можно сделать только, когда модуль находится в режиме приема, считан буфер. Только после этого можно получить реальную мощность принимаемого сигнала, в противном случае придет 0."

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

    • a9d:

      "схема соединения этого модуля с контроллером мною не была обнаружена."

      Схема подключения указана в даташите. Даже если б не была указа, то это SPI. Поэтому никто и не заморачивается с обьяснением. Итак понятно, что куда подключается. Если не понятно, то учимся работать с SPI а уже потом с модулем.

    • Delphi:

      Atmega 32A может работать при тактировании от 16Мгц и питания от 2.7 вольт. Этот контроллер мы и используем.

      • a9d:

        Atmel не производит микроконтроллеры серии atmega которые способны работать на частоте 16Мгц с питанием 3.3В.
        Что касается Atmega32A, то читаем даташит раздел "27.3 Speed Grades". Там указана зависимость частоты от напряжения.

        Если не сильно хочется возится с согласованием уровней и хочется дешевый трансивер с замечательными характеристиками, то есть ATmega128RFA1. Этот контроллер превосходит модуль TR24A по всем параметрам. При этом цена почти такая же.

        • Delphi:

          Сложно купить ATmega128RFA1. Удивительно, что авторы даташита поместили такой важный график на 298 странице. Удивительно и то, что я еще сделал по крайней мере 4 устройства с питанием 3.3 - 3.6 вольт и на Атмеге32А, при тестировании они не показали неустойчивую работу, так что ваше замечание для меня новость. Спасибо.

  2. Delphi:

    Спасибо A9D, давно ждали вас на сайте в этой статье. По теме: подтянем, почитаем, проверим, протестим, покажем, обновим статью.

  3. Delphi:

    Мы запарились с этими модулями. Уже все работает, наш протокол тоже, но дальность - не более 2 метров. Может помехи по питанию?

  4. Delphi:

    Может стоит попробовать изменить коэффициент усиления контура передачи/приема. Регистр 9, 5 бит данных 7-11 биты.

  5. a9d:

    Напишу тут ибо по этому сайту тяжело ореентироваться. Статья про джойстики мутноватая. В винде есть стандартные функции для работы с джойстиками. Их более чем достаточно. Собственно их и использую для управления своим роботом.

    А откуда вообще информация, что сигнал передается только на два метра? Откуда уверенность, что сигнал именно передается. Если модуль и маякнул пином PKT, то это еще и не означает что он что то принял. Одним словом у вас код стремноватый, много мутных моментов+отсутствуют коменты. Я его не тестил, т.к. ардуино не уважаю.

    С мощностью играть смысла нет. В первую очередь играет качество антенны, а уже потом фильтры и усилители. Поэтому на модуле TR24P антенна внешняя.

    • отвечу по порядку …

      1) ну если вам не нравиться код для джойстика не используйте – сидите под виндой и не знайте больше ничего … кстати SDL обращается именно к тем самым *винде есть стандартные функции для работы с джойстиками* к драйверам directx. Если вы используете более низкоуровневые функции то вы динозавр … этот код запускается под многими OS.

      2) Если вы не верите – ваше дело … протокол работает … ибо с его помощью передаются различные данные и они выводятся на дисплей … все приходит четко … маяков в сети 4. Код приличный … кода по модулям много … но писали его люди которые врядли прочитали книгу по С … я не говорю о чем – то большем …

      3) В Италии недавно открылся завод по производству ARDUINO. Люди на этом делают проекты – учебные и коммерческие … по платам хороший суппорт и много библиотек … самое главное их можно быстро купить … тк в РЕАЛЬНЫХ задачах нужно бывает заменить сейчас чтобы работало а не тратить неделю на отладку своей платки …

  6. Delphi:

    А я дополню по порядку:
    1. Надеюсь, это очевидно, что мультиплатформенное решение для управления с джойстка - куда круче любых стандартных ... функций.
    2. Улучшением питания удалось повысить гарантируемое расстояние с нашим протоколом до 3 метров. Каждый пакет состоит из 9 байт и только безошибочная пересылка всех 9 дает пересылку пакета, а так как протокол с гарантированной доставкой, то еще и ответ должен обязательно дойти, вкупе все это резко повышает зависимость этого протокола от расстояния, но зато он работает без ошибок.Кроме того, если прочитать нашу статью про систему навигации, где есть маяк, его модель, фотографии, то легко увидеть, что модуль спрятан внутри и прикрыт крышками сверху и снизу, что также плохо влияет на диаграмму направленности.
    Можно ли сделать для TR24 внешнюю антенну.? Игры с коэффициентами усиления результата не дали.
    3. Заметьте, что я написал в статье, что код портирован с ядра Ардуино вместе с зависимостями ядра. И он теперь уже НЕЗАВИСИМ ОТ АРДУИНО, можете скачать и проверить. Поэтому вы можете использовать его в своих проектах на контроллерах AVR.
    4. Скоро будет выложена переработанная библиотека с уровнем протокола, надеюсь код не будет впредь считаться стремноватым-мутноватым :).

  7. a9d:

    1) Доведите до ума сайт. На сайте можно авторизироваться через раз.
    2) При переводе даташита я ошибся. Сбрасывать указатели можно только в режиме простоя. Эту ошибку я в своем коде исправил и давно его опубликовал. В вашем коде эта ошибка повторена. Из-за этой ошибки трансивер только делает вид, что он что-то там принимает. В реале прием будет идти как попало.
    3) В коде нет коментов и многое непонятно. Отсюда и мутность. К примеру почему в коде вечно сбрасывается в регистре 7 делитель частоты? Это значение важное и очень сильно влияет на передачу. Почему выбрана длина пакета 127 байт при этом нигде не проверяется флаг FIFO?? и т.п.
    4) Про ардуино забываем сразу. Я работал над коммерческими продуктами. Не знаю как в Москве но у нас за предложение ардуино пошлют на Х**. Ибо эта хрень имеет сомнительную стабильность(имеется ввиду код и "стандарт"). Да и платить баснословные деньги за МК с обвязкой не имеет смыла.
    5) При просмотре кода сложилось впечатление, что он писался под синдромом "Не мной написано". У студентов это частое заболевание навязанное не далекими преподами. У нас некоторые умники умудрялись даже модифицировать алгоритм CRC16 и MD5 заявляя, что ихняя версия намного круче. Я над своим кодам работал очень долго. Т.к. на этих модулях собираю всякую хрень и код вылизал вдоль и поперек. Если хочется переписать, то повнимательней его просмотрите. Он писался не с от балды.
    6) Насчет статьи, то сначала прочитайте статью от DI HALTA а после свои. Ди пишет намного информативней. Где в статье указанно, что код кросплатформенный? Во фразе Qt?
    7) Живу в панельном доме. Стены железобетонные. Сигнал, при фек 1/3, есть в каждой комнате и на балконе. На дальность 20м испытывал при демонстрации на ГОСЕ. Все работало отлично. На данный момент робот катается по квартире и передает картинку. Стены влияют на процент ошибок, но это терпимо.

    • " Так как SDL портирована на множество операционных систем, то класс можно использовать везде где есть Qt и SDL. Точно могу сказать, что в Linux, Windows, MacOS этот код будет работать, все что нужно для работы его в других ОС это наличие SDL и Qt. " И еще были упоминания о кроссплатформенности кода. У всех авторов свое видение статьи ... каждый пишет как он считает нужным ...

    • Delphi:

      В новом коде мы очищаем TX буфер перед записью, это и есть сброс указателя, если говорить в ваших терминах, можем опубликовать и сейчас, но все-таки еще немного потестим. Делитель частоты установлен в 0, мы его не используем. Кажется, мы уже пробовали чистить буферы в режиме простоя, в итоге работать у нас перестало совсем. Завтра еще раз проверим

  8. Delphi:

    Большое спасибо, поправим и завтра попробуем. QT - кросплатформенный, это очевидно. Мы не зря заюзали в конце концов не ваш код, так как ваш не стартовал, гораздо позднее я обратил внимание, что у вас нет define SS, а выбор мастер-раб производится обращением к какому-то порту на прямую, в общем в итоге, Ардуино код заработал быстрее и я его портировал в свой проект. Ну, до DiHaltа нам далеко, но мы будем стараться, кроме того, стоит обратить внимание, что в вопросах программирования наш сайт будет гораздо богаче, это касается не только контроллеров. Надеюсь, компенсируем этим "неудобство" сайта. .... честно, может глаз замылился, но я не вижу в сайте неудобств. Статьи очень разноплановые, может это доставляет неудобство, может стоит сделать панель с ссылками на популярные темы, если сложно бывает найти.

  9. a9d:

    Делитель частоты всегда нужен. Он необходим трансиверу.
    Зачем он нужен, читаем в литературе по модемам. Это важный параметр, и по умолчанию он равен 9.

    В коде вы сбрасываете указатель в режиме передачи.

    Майкрасофт тоже обещала полную совместимость фрейм верков))) Ага, щас. Хотя можно их понять. Программисты люди а люди ошибаются.

    • Я тестировал этот код в linux opensuse 11.3/11.4 ... тестировал его в Windows ... тестировал его в MacOS - специально просил принести мне мак ... работает почти одинаково ... единственная разница - может отличаться число аналоговых осей - но это уже зависит от драйвера. Класс это не фреймворк - тут нет ошибок ...

  10. Я только что проверил. Абсолютно без разницы, когда сбрасывать буффер: в режиме простоя или в чтения/записи. Работает одинаково.

  11. a9d:

    Dmitry только что проверил. Разница есть и причем сильная. Внимательней проверяй.
    Буфер нужно сбрасывать до передачи. С приемом разници нет.

  12. Delphi:

    В нашей задаче нужно выполнять гарантированную передачу на 4.2 метра. Эти модули можно использовать на 3 метра. Похоже, что на этом с этими модулями всё! Дальше не имеет смысла что-либо делать. Мы перейдем на другое решение, скорее всего RFM

  13. a9d:

    ГГГГ)))) Точнее вы не смогли использовать их на большое расстояние. У многих работает.
    У вас код нужно переписать полностью. Косяков полно.

  14. Delphi:

    Наша проблема очень распространена, у многих работает на малом расстоянии. Я с помощью этого кода передавал данные через стену и на 10 метров, но это касалось одного числа, не было проверки доставки, в общем не было протокола гарантированной доставки, без которого вообще говорить о слове РАБОТАЕТ для радиомодулей и вообще для устройства говорить не имеет смысла. Сейчас идет речь и том, что 9 байт передаются без ошибок в приемлемое время на расстоянии не более 3 метров. На этом же расстоянии можно без проблем организовать работу хоть нескольких устройств на одной частоте, модель обмена данными при этом будет устойчива и система будет работать. Не знаю, может пока идут RFM, покопаемся еще в коде, в том числе еще раз внимательно пройдемся по вашему коду, A9D

  15. a9d:

    А что на 10ть метров передается с какой то большой задержкой??
    Еще раз говорю, у вас код работать нормально не может. Поэтому все ваши передачи не имеют какого либо смысла. Перепишите код а после уже делайте выводы. Ны данном этапе вы можете делать выводы только о работе вашей программы и не более.
    Иначе если верить вашим выводам, то у меня ряд устройств совершают просто невозможное передавая данные на расстояние через железобетонную стену.

    Это из серии тормозит комп а виновата мышка.

  16. Все замечания a9d относително работы модуля я проверял - на качество передачи или на её дальность они никак не влияют. Хотя, признаю, обнуление делителя частоты я убрал, из эстетических соображений. И поскольку модуль на расстояниях до 3 метров работает стабильно, с уверенностью могу сказать, что дело не в коде. Код работает верно.

    Относительно замечания "Буфер нужно сбрасывать до передачи" - внимательней смотрите код, там так и делается.

    Относительно замечания "косяков полно" - если есть ещё конкретные замечания, я с удовольствием выслушаю.

    Относительно "мутности кода" и намёков вроде "я гений, все вокруг дебилы".
    Я бы вам для начала порекомендовал перечитать(или прочитать) книгу по языку C++, главу про битовые операции. У вас очень много объединений с операторами выбора. Объёмы исходников, да исполняемого файла, легко можно уменьшить в разы заменив это всё на битовые "и", "или" и сдвиги. Да и вообще, в C++ не принято использовать union. Это слово сохранено только для совместимости с C. Со встраевыми методами рекомендую подружиться - на контроллерах актуально.
    Ваша текущая реализация никак не запрещает создать два объекта работающих с модулем tr24. С точки зрения объектно-ориентированного дизайна это совершенно неправильно. Тут идеально подойдёт шаблон Одноэллементное множество(Одиночка, Singleton).
    В разделе Литература есть пара отличных книг по C++ и по шаблонам проектирования. Рекомендую.
    Давайте всё-таки уважительно относиться друг другу и замечания высказывать только по делу.

  17. Кстати, исходники к статье на днях обновим.

  18. a9d:

    "Все замечания a9d относително работы модуля я проверял – на качество передачи или на её дальность они никак не влияют."

    Если у вас все так хорошо, то почему не работает? Я скоро на ютубе вылажу видео которое с вашей точки зрение просто невозможно.

    "Относительно замечания “косяков полно” – если есть ещё конкретные замечания, я с удовольствием выслушаю."

    На приеме у вас максимальная посылка 127 байт. Откуда это число взялось?? Если на вход подать буффер меньше 127 байт то при битом пакете переполнение буффера гарантированно. Это самое очевидно.

    "Относительно “мутности кода” и намёков вроде “я гений, все вокруг дебилы”."

    Это ваши слова.

    "Я бы вам для начала порекомендовал перечитать(или прочитать) книгу по языку C++, главу про битовые операции. У вас очень много объединений с операторами выбора. Объёмы исходников, да исполняемого файла, легко можно уменьшить в разы заменив это всё на битовые “и”, “или” и сдвиги."

    С битовыми полями работать легко и просто. В разы это ничего не уменьшит. Тем более компилятор все хорошо оптимизирует. Union не перечит стандарту а значит использовать можно. Также юнионом не брезгует Страуструп. Я думаю его тоже нужно в этом обвинить :)))

    "Ваша текущая реализация никак не запрещает создать два объекта работающих с модулем tr24."

    А почему их может стать два? Если код криво написан, то их может стать и десять.

  19. a9d:

    А откуда вообще такая информация насчет "union" ??
    Перелистал книгу Страуструпа по С++, он очень часто использует union. Он забыл, что в его языке это нельзя делать?

  20. С битовыми полями кода намного больше. Обычно всё-таки стараются писать коротко, ясно и эффективно. Такую программу легче отлаживать, поддерживать, что-то менять. Да и всё-таки работает по-эффективнее.
    Насчёт того что в разы ничего не уменьшит не соглашусь. Например, ваш ControlDataType можно написать тремя строчками, что короче минимум в 5 раз.) А после этого его можно сделать и встраиваемым.
    "А почему их может стать два? Если код криво написан, то их может стать и десять." Объектно-ориентированный дизайн позволяет защитить пользователей от неправильного использования уже написанного кода. Это как минимум хороший тон. Вообщем-то, C++ создавался для написания больших проектов. По производительности он слегка проигрывает C, но позволяет достичь большей ясности кода.

  21. a9d:

    "Насчёт того что в разы ничего не уменьшит не соглашусь. Например, ваш ControlDataType можно написать тремя строчками, что короче минимум в 5 раз.) А после этого его можно сделать и встраиваемым."

    ассемблерный листинг в студию. Количество строк и размер прошивок не связанны. Компилятор хорошо оптимизирует битовые поля. Битовые поля я свиснул из апнотов атмела.

    "Объектно-ориентированный дизайн позволяет защитить пользователей от неправильного использования уже написанного кода. Это как минимум хороший тон."

    В первом моем проекте я ставил два модуля. Один на прием другой на передачу. Работали на разных канала. Но хороший тон важнее)) Компилятору можно дать команду выбросить неиспользуемые методы.

    http://akb77.com/g/avr/usb-dongle-with-tr24a-radio-module/

    А почему у вас код очень сильно похож на сей? Про того автора вы ни слова не сказали))) Кстати от туда и ошибки ваши перекочевали.

  22. Delphi:

    "Количество строк и размер прошивок не связанны" - Да, но связанны количество строк и удобство сопровождения.
    "А почему у вас код очень сильно похож на сей?" - не знаю. По-моему, не особо похоже.) Рекомендую перескачать. Если что, то низкоуровневые функции портированны из ядра Arduino. Сверху написано.)

  23. Delphi:

    Кстати, чаще всего размер прошивки и объём исходников всё-таки связаны.

  24. a9d:

    Я сегодня сравнил ваши коды. Они очень сильно похожи. У вас даже файлы называются одинаково.
    Тот автор написал свою версию кода намного раньше меня. Я с ним переписывался и мне он свой исходник отказался показывать. Недавно он его раскрыл.
    Вы использовали его код после непонятно зачем связали этот код со мной и начали заявлять что он нерабочий.
    Я к тому коду отношения не имею. При разработки своей версии у меня его на руках не было.

    К тому же из статьи видно, что вы не читали даташит. Медвед кстати сделал качественный перевод. Но без ознакомления с даташитом у вас получилось написать код.

  25. Delphi:

    Основа кода взята с сайта akb77.com . Не знаю о каком авторе идет речь. В статье указано, что к авторству я не имею отношения, но все же мы его поправили и дополнили протоколом. Он работает, но уверенно на 3 метра. Кстати, это уже другая статья. Судя во вашим высказываниям, А9D, следующим комментарием будет претензия на авторские права. Запомните, задача этого сайта - предоставить средства для работы, сюда может быть отнесен код, схемы, советы. У всех них есть автор и мы это указываем, когда не являемся оными. И далеко не всегда получается вот так вот легко воспользоваться тем, что уже якобы готово. Ваши комментарии уже выглядят провокационными. Мы пробовали сделать то, что вы предложили, это не возымело результата. Давайте обсудим, в чем еще может быть проблема, а не будем разводить флуд.

  26. a9d:

    Где протокол и исправления? Исправления появились позже а протокола так и не вижу.
    Вы не указали чей был взят код. Но почему то указали меня. После пожаловались мне, что у вас не работает.
    Я какое отношение имею к вашей нерабочей программе?

    После речь зашла об оптимальности. Если вы не писали этот код, то почему вы сочли его оптимальным?
    В нем меньше функций поэтому и размер меньше.

    Медвед переписал код на микропаскаль, сделал перевод. Описал полученный результат.

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

  27. Delphi:

    А в чем смысл твоих комментариев? Ты сам подумал? Смысл статьи - взят код, отвязан от платформы, проверен, получен результат, выложен код. Ни к какой Ардуино мы его не привязывали. Протокол в другой статье. Результат получен, но он неудовлетворительный. Ты про пару строчек по ControlFEC такую истерику закатываешь, уберем. Что дальше?

  28. a9d:

    Истерики нет. Вы притензии о работе кода предъявили не тому автору

  29. Delphi:

    Хорошо, а теперь опять по делу. Вы писали, что используете 2 модуля: раздельно на прием и передачу. С чем это связано. Я ранее тестил код, где один модуль был передатчиком и слал в эфир данные, а второй читал их. На проверку сигнал пропадал примерно в 10-20 метрах, бил через стену, но не мог через 2. Я не проверял количество потерянных байтов при этом, но думаю при увеличении расстояния процент брака растет. Может ли влиять смена режима на работу модуля?

  30. a9d:

    Модули работают в half-duplex режиме. Я хотел получить full-duplex. При двух сторонней связи пропускная способность будет максимальной. Делал чисто ради интереса.

Leave a Reply

You must be logged in to post a comment.