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

AlexRose

20 - Power min (0-7, +128=highU) – уровень мощности при нижнем положении тумблера управляющего канала (длительность PPM импульса < 1.3 мс). Код от 0-7 задает выходную мощность RFMки. Нулю соответствует минимальный уровень (около 1 мВт для RFM22B и 100 мВт для RFM23BP), 7-ке – максимальный уровень (100 мВт для RFM22B, 1 Вт для RFM23BP). Старший бит (+128) позволяет управлять напряжением RFM23BP в проектах типа SkyHawk. Единица в старшем бите регистре приводит к поднятию напряжения питания RFM23BP (обычно с 3.3 до 5 В);
21 - Power middle (0-7,+128=highU) - уровень мощности при среднем положении тумблера управляющего канала (длительность PPM импульса > 1.3 мс но меньше 1.7 мс);
22 - Power max (0-7, +128=highU) - уровень мощности при верхнем положении тумблера управляющего канала (длительность PPM импульса > 1.7 мс), или когда управление мощностью не используется;
23 - PA calibr const(0-255) - настройка максимальной мощности для УМ модуля Expert 2G. Работает только для модуля Expert 2G. Задает уровень напряжения на затворе УМ передатчика в режиме макс. мощности. Настройка индивидуальная для каждой платы. Сюда нужно перенести константу из регистра 22 оригинальной прошивки 2G.

ставил даже все 0

BAU

Понятно. Тогда ой… Все мысли кончились)) Надо смотреть программу…

AlexRose

вот такие строчки есть в OpenTiny_TX.ino

#if (TX_BOARD_TYPE == 5) // Только для Expert 2G board
analogWrite(5,PowReg[4]); // установим напряжение для УМ

#endif

rx_reset();

mppmDif=maxDif=0; // сброс статистики
unsigned long time = micros();
lastSent=time;

while(1) {
ppmLoop();
wdt_reset(); // поддержка сторожевого таймера

if(checkMenu()) { // проверяем на вход в меню
doMenu();
**#if (TX_BOARD_TYPE == 5) // Только для Expert 2G board
analogWrite(5,PowReg[4]); // установим напряжение для УМ_**_
#endif
lastSent=micros();
}

if (_spi_read(0x0C) == 0) { // detect the locked module and reboot
Terminal.println(“RFM lock”);
Green_LED_ON;
Sleep(249);
re_init:
RF22B_init_parameter();
rx_reset();
mppmDif=maxDif=0; // !!!
continue;
}

зачем два раза? и зачем там ставить что то кроме 0?
это в блоке инициализации-старта как я понимаю

upd. и еще мысль, управление УМ модуль RFM в момент запуска что то там))) как то крутиться в голове, объяснить не могу

ключевая вещь здесь - щелчок в динамиках одновременно с подачей питания

тигромух

Так вы проверьте свою гипотезу. Подайте ППМ через пару секунд после включения.

AlexRose

ps. прошивка просто отличная, сильно расширяющая и улучающая работу передатчика, и поэтому хочется довести до ума (так то все тут есть что нужно) - дело осталось за стабильностью, можно будет “прошить и забыть” - летать, летать, летать…

тигромух:

Так вы проверьте свою гипотезу. Подайте ППМ через пару секунд после включения.

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

Baychi soft 2013
TX Open Expert V2 F8

Rg=Val Comment▒▒
Baychi soft 2013
TX Open Expert V2 F8

Rg=Val Comment▒▒
Baychi soft 2013
TX Open Expert V2 F8

Rg=Val Comment▒▒
Baychi soft 2013
TX Open Expert V2 F8

и так далее, бексонечно

AlexRose:

ключевая вещь здесь - щелчок в динамиках одновременно с подачей питания

ИМХО

DChernov

Вообще-то мега в этой конструкции работает за пределами ТУ. Атмели гарантируют при 3.3В питания стабильную работу до 10МГц, а здесь 16.
90% камней заводятся и работают безупречно, остальные очень причудливо выпендриваются.
Напрашивается для начала просто поменять Атмегу.
С большой вероятностью на этом Ваши мучения завершатся.

Plohish

а резистор так сложно воткнуть 😃

dragen25
DChernov:

Напрашивается для начала просто поменять Атмегу.
С большой вероятностью на этом Ваши мучения завершатся.

Вряд ли. Так как у меня такой же глюк. Не верю я в такие совпадения, чтобы быстрое передергивание питания со 100% вероятностью приводило к корректной работе. А на экспертовской прошивке это не проявлялось.

AlexRose
DChernov:

Вообще-то мега в этой конструкции работает за пределами ТУ. Атмели гарантируют при 3.3В питания стабильную работу до 10МГц, а здесь 16.
90% камней заводятся и работают безупречно, остальные очень причудливо выпендриваются.
Напрашивается для начала просто поменять Атмегу.
С большой вероятностью на этом Ваши мучения завершатся.

тогда встречный вопрос, почему на прошивке от эксперта все работает без резисторов и прочих махинаций…

Plohish:

а резистор так сложно воткнуть 😃

резистор дома попробую. но это что нам дает?

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

Согласен с Вами, Евгнений

dragen25:

Вряд ли. Так как у меня такой же глюк. Не верю я в такие совпадения, чтобы быстрое передергивание питания со 100% вероятностью приводило к корректной работе. А на экспертовской прошивке это не проявлялось.

  • есть еще двое человек с 2G с этим же эффектом
dragen25

Вопрос скорее всего тигромуху😃
Константин, проблема у нас с АlexRose скорее всего из-за уже упоминавшейся выше ножке SDN rfm-ки. На мой взгляд это следует вот из этой переписки с Александром:

=======================
Сообщение от baychi:
Вы проверили ножку SDN? Там точно 0? У меня была похожая нестабильность, когда эта нога осталась в 3-м состоянии.

Сообщение от dragen25:
Вы были правы. Дело именно в SDN. Замерял на днях - был ноль. Сегодня - то ноль, то неопределенное значение. Временно замкнул на землю - передатчик стал запускаться даже после морозилки. Вопрос - а что мешает меге подавать ноль? Я так понял, что этот вход отвечает за отключение rfm-ки. Мне подпаяться не жалко, просто любопытно.

Сообщение от baychi:
Вот и мне интересно.
Либо мы ошиблись с номерм ножки здесь:
#define SDN_pin A5
либо, не выполняется вот эти строки:

#if(SDN_pin != 0)
pinMode(SDN_pin, OUTPUT); //SDn
digitalWrite(SDN_pin, LOW);
#endif

например, потому что A5 трактуется как = 0.

Попробуйте временно закоменнтировать #if(SDN_pin != 0) и #endif.
Если SDN станет 0-м, значит надо по другому делать проверку в #IF. Если нет - ошибка в привязке. На какой ножке меги реально сидит SND?

Сообщение от dragen25:
Закомментировал. SDN стал 0-м. Все работает даже на холодной плате.
Сможете поправить?[/QUOTE]

Сообщение от baychi:
Ясно.
Надо написать
#ifdef SDN_pin
вместо
#if(SDN_pin != 0)
===================
То есть до правки строки if мега не подавала на SDN лог. 0 - отсюда нестабильность запуска передачи и некорректные символы в терминале. После правки - все нормально, но только при пересбросе питания. Может мега почему-то не успевает подать ноль на SDN при первоначальном включении?

AlexRose

update/
вообщем резюк дает эффект - но мне это не нравится

еще раз погонял на прошивке эксперта f10

насчет щелчка в динамиках я оказался не прав, он все равно есть… но это оказывается не главное
запуск передатчика осуществляется так:

  1. подключил питание - один пик buzzer’ом
  2. 1-2 пауза видимо
  3. перемигнул диодом красный-зеленый (думаю инициализация)
  4. пауза 7-8 секунд ( не зря она тут такая длинная)
  5. на 8-9 секунде подхватывает входящий ппм и начинает излучение (включается УМ или RMF)

вот лог этого процесса, еле успел подключить в уарту после подачи питания 😃 (если подключить до тогда только в меню попадешь, думаю все знают)

IRQ=0
START
08
06
20
NS
T=17
PPM Mode, 1.5ms or 750ms center 12ch max!
Detect PPM=8
1500us center

dragen25:

Мне подпаяться не жалко, просто любопытно.

ну на постоянку так нельзя, так как будет идти излучение когда его можно не включать, или не нужно

dragen25
AlexRose:

ну на постоянку так нельзя, так как будет идти излучение когда его можно не включать, или не нужно

да по идее не будет, т.к. SDN переводит rfm-ку в shut down режим. А есть режим standby.

Константин, Ваш вопрос:

тигромух:

Только сейчас заметил, что у эксперта еще и SDN подключен к атмеге. А с какой целью кто нибудь знает?

становиться все актуальней:)

AlexRose
dragen25:

Сообщение от dragen25:
Закомментировал. SDN стал 0-м. Все работает даже на холодной плате.
Сможете поправить?

Сообщение от baychi:
Ясно.
Надо написать
#ifdef SDN_pin
вместо
#if(SDN_pin != 0)
===================[/quote]

вот здесь чуть чуть не дошли до истинны:(

то есть фактически получается МЕГА зависает от не своевременного запуска RFM?

dragen25
AlexRose:

вот здесь чуть чуть не дошли до истинны

Ну я тогда похоже был один, кто реально хотел чтобы Baychi OpenLRS работала на 2G, поэтому и “доставал” Александра. Но до конца все глюки не смог выловить, точнее списывал их на фрискаевский приемник:(

AlexRose

офф. все равно, говоря современным языком - прошивка огонь!

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

тигромух

Проверить гипотезу с SDN тоже очень просто: замкните этот контакт на землю и проверьте стабильность работы.
Ничего не сгорит, т.к. это штатный режим, так работают все оранжи, например.

dragen25
тигромух:

Проверить гипотезу с SDN тоже очень просто: замкните этот контакт на землю и проверьте стабильность работы.

AlexRose, сможете проверить? У меня все так собрано, неохота разбирать-собирать.

AlexRose

ребята, можете нас всех поздравить!
замкнул SDN и GND - все стало запускаться как положено!
мне не удалось добиться чтобы он не запустился при замкнутых… 10 из 10
а вот с разомкнутыми еще раз сейчас проверил, 5 из 10 не запустился

и еще, для уточнения на эксперте стоит RFM23B-S2

dragen25
AlexRose:

замкнул SDN и GND - все стало запускаться как положено!

И все-таки это решение какое-то “дубовое”. Ведь программа что-то проверяет и в зависимости от этого выдает на SDN 0. Да, похоже только Александр смог бы дать объяснение.

И в продолжение, что нужно добавить в программе, чтобы мега всегда подавала 0 на SDN без всяких IF. Тоже конечно не совсем корректно, но по крайней мере паять не надо.

Собственно уже нашел, сам же выше цитировал Александра.
===============
Сообщение от bachi:
Попробуйте временно закоменнтировать #if(SDN_pin != 0) и #endif.
===============

Придется видимо не временно…