Baychi OpenLRS - дружелюбная ЛРС с широкими возможностями )

khomyakk
emax:

прошивка, что бы из 100мвт передатчика Orange сделать приемник.

Я так понимаю все действия по настройке совпадают с другим “железом” ?

AndreyI

А я вот хочу вернуться к моему старому вопросу про неработающий сбас оранжевого приемника и сбас2 оригинального футабовского приемника, работающего в режиме простого сбас.
Разобрался в прошивке, нашел один недочет в разборе протокола (из за этого не работал оранжевый сбас) и конкретный глюк который при определенной паузе между пакетами, приводил к ошибкам в распознавании пакетов. Так же поправил в прошивке корректное распознавание пакетов кастрированного сбас2.
Так что если кому надо, милости прошу в ЛС…

Shuricus

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

Что за недочет, и что за глюк? Интересно поподробнее.

Plohish

Уже хрен знает сколько использую Сбас на Байчи и никогда никаких глюков не видел…

kostya-tin
khomyakk:

Я так понимаю все действия по настройке совпадают с другим “железом” ?

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

AndreyI
Shuricus:

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

Что за недочет, и что за глюк? Интересно поподробнее.

Вот это я называю глюком:
// byte i=(val+TICK_IN_BIT/2)/TICK_IN_BIT; // сколько бит формируем (оригинальна строка)
word i=(val+TICK_IN_BIT/2)/TICK_IN_BIT; // сколько бит формируем (исправленая строка)

Переменная val это длительность импульса (значение таймера), размерность переменной 16 разрядов, при этом разрядность i назначается всего в восемь разрядов. Как следствие при определенном значении паузы между пакетами, эта самая пауза программой не увидится. Например при значении val=15530, прога не поймет что это пауза между пакетами и будет пытаться разобрать ее на байты.

Вот это я называю недочетом:
if(++pktPtr >= SBUS_PKT_SIZE) {
endPkt();
// break; // Оригинал
// } // Оригинал
} // Правка
break; // Правка

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

Изменение для SBUS2:
if(pktPtr >= SBUS_PKT_SIZE && eCntr1 == 0 && // если набран кворум, нет ошибок по четности
// sbusPkt[0] == 0x0F && sbusPkt[24] == 0x00 ) { // проверяем начало и конец (оригинальная строка)
sbusPkt[0] == 0x0F && (sbusPkt[24] == 0x00 || sbusPkt[24] == 0x04 || sbusPkt[24] == 0x14 || sbusPkt[24] == 0x24 || sbusPkt[24] == 0x34)) { // проверяем начало и конец (исправленая строка)

Смысл в том что современные приемники поддерживающие SBUS2, да же в режиме простого SBUS, в конце пакета передают не 0, а другие значения. Все они отражены выше.

Ну и для корректного определения ФС с оранжевого приемника, пришлось сделать такое изменение:
if(sbusPkt[23]&0x8 || sbusPkt[23]&0x10) return false;

Тут решение спорное, но работает нормально и на оранже и на оригинальном приемнике.

Plohish:

Уже хрен знает сколько использую Сбас на Байчи и никогда никаких глюков не видел…

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

Plohish
AndreyI:

… Именно по этому алгоритму происходит аппаратный разбор последовательного протокола в атмеге и именно по этому оранжевый приемник работает с OpenLrsNG и не работает с этой прошивкой.

резонный вопрос, в Тини от Эксперта тоже стоит Атмега, почему она работает без проблем?

emax

не забываем про фьюзы, через бутлоадер их изменить нельзя, нужен ISP программатор.

AndreyI
Plohish:

резонный вопрос, в Тини от Эксперта тоже стоит Атмега, почему она работает без проблем?

Так ответ был в предыдущем сообщении, у Эксперта все разбирается аппаратно Т.к. Сбас там подключается на последовательный порт. И соответственно там все работает.

khomyakk
emax:

не забываем про фьюзы

Я чуть выше спрашивал. Оптибут подходит? Дело в том, что у меня был глюк с родным ардуиновским загрузчиком на 100мВт передатчике в режиме приемника. После ряда ФС на 10км приёмник не восстановил связь с ретранслятором. Вернулся домой и сел по отсечке регуля. Вернуть связь помогло передергивание питания на приемник. Прошил оптибут в приёмник и больше такой глюк не повторялся.

khomyakk

Прошил модуль как приемник(Оранж - ещё раз спасибо Эдуарду), через путти подключился. попробовал менять регистры, вроде всё получается.
Теперь вопросы. 😃
Приемник у меня должен выдавать ппм для автопилота.
В регистр 7=1
Что писать в регистр 5? У меня в ретрансляторе стоит 10 канальный приёмник на 2,4ГГц с ппм выходом.
11-18 регистры отвечают за каналы. Так как нет рации на этот диапазон буду биндить с передатчиком с прописанными каналами и в эти регистры пропишутся каналы из передатчика. И частоты совпадут. И мне частоту не надо будет подстраивать. Всё правильно понял?
Теперь регистры по файлсейву, с 31 по 38. В опенлрснг я жестко(галочками) прописал в третий канал 950. Как здесь это осуществить? У меня АПМ настроен на ФС по 3-каналу.

Shuricus
khomyakk:

В опенлрснг я жестко(галочками) прописал в третий канал 950. Как здесь это осуществить?

Это я как раз попросил доделать AndreyI, если он захочет. Только добавлением строк в прошивку.
Пока ФС только кнопкой.

А где вы вообще нашли 31-38 регистры?

khomyakk

Александр, а остальные вопросы можешь прокомментировать?
31-38-й у меня отображается в путти

Shuricus

Это, видимо, emax добавил. Очень круто! А тогда вопрос к Эдику - можно отключить функцию изменения ФС дистанционно? Хочу, что бы сбросить ФС было невозможно. И выложить код с регистрами ФС сюда. Спасибо.

По остальным вопросам вроде все правильно, по пятому регистру - я летаю с 0, если у меня ППМ на входе.

Plohish

судя по F14 это чей то самопал…
на Гитхабе у Байчи только F13

Shuricus

Хорошая фишка! В АПМ долботня ФС на аппе настраивать. И слетать никогда не будет. Так надежнее.

khomyakk

Емах несколькими постами выше выкладывал. Но это для оранж 100мвт в режиме приемника. А можно указать ниже 1000мкс?

emax

Регистры с ФС делал для себя. Режим, как раньше тоже работает, можно потом проконтролировать, что туда записалось. Теперь можно изменить и вручную.
Никаких специальных защит от случайного изменения не добавлял. Но слет настроек может быть, только если произвести случайно их переустановку. Или если разрушатся данные в EEPROM, например от неправильных фьюзов.
Но прошивка Байчи при включении контролирует целостность данных в EEPROM.
Можно, (1500+/- 512) т.е. 988-2012 - это длительность PPM. у Байчи 880-2120.

Shuricus

А вы могли выложить код который выводит регистры, или весь исходничек?
И насколько реально попросить вас сделать запрет на переустановку?

С чем связано ограничение на 988? Почему нельзя сделать 950?