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

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.
===============

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

AlexRose

ну и еще, я считаю не хватает каких то пауз… не зря они есть на эксперте, так как весь старт там около 7-8 секунд

BAU
AlexRose:

старт там около 7-8 секунд

Не, лучше без этих задержек. Мешают они, особенно при настройке иглов.

Plohish
dragen25:

Попробуйте временно закоментировать #if(SDN_pin != 0) и #endif.
===============

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

Александр не зря написал “временно” и только он может ответить почему…

тигромух
dragen25:

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

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

Использование SDN на передатчике само по-себе спорное решение, поэтому ничего зазорного в том, чтобы перемкнуть ноги я не вижу. 😃

Если хотите поэспериментировать с паузами поправьте код в OpenTiny_TX.ino:

#ifdef SDN_pin
pinMode(SDN_pin, OUTPUT); //SDn
digitalWrite(SDN_pin, LOW);
delay(1000);
#endif

Жирным то, что нужно добавить.

Plohish:

Александр не зря написал “временно” и только он может ответить почему…

Это уже пофикшено.
Проблема была в том, что у передатчика 2G SDN_pin оказался не числом, как у всех, а строкой “A5”. Строку сравнивать с нулем нельзя, потому и глюк.
Код был заменен на #ifdef SDN_pin и все стало хорошо.

AlexRose
тигромух:

Код был заменен на #ifdef SDN_pin и все стало хорошо.

я не понимаю 😃 где все стало хорошо? а с чем же мы сейчас пытаемся бороться?
на прошивке эксперта все хорошо в плане стабильности, но нет этого прекрасного функционала от baychi

тигромух:

Если хотите поэспериментировать с паузами поправьте код в OpenTiny_TX.ino:
#ifdef SDN_pin
pinMode(SDN_pin, OUTPUT); //SDn
digitalWrite(SDN_pin, LOW);
delay(1000);
#endif

подскажите пожалуйста как 1000 перевести в секунды? здесь микросекунды, да?

и что здесь добавить чтобы зеленый диод тоже заработал

void Red_LED_Blink(unsigned short blink_count) // на самом деле индикатор у нас только один 😃
{
word i;
for (i=0;i<blink_count;i++) {
wdt_reset(); // поддержка сторожевого таймера
Sleep(250);
Green_LED_ON;
Sleep(250);
Green_LED_OFF;
if(blink_count > 50) {
if(checkMenu()) {
doMenu();
break;
}
}
}
}

пищалку тяжело реализовать?

тигромух
AlexRose:

я не понимаю где все стало хорошо? а с чем же мы сейчас пытаемся бороться?

Та борьба уже в прошлом. Я отвечал Сергею.

AlexRose:

подскажите пожалуйста как 1000 перевести в секунды? здесь микросекунды, да?

1000 - это одна секунда.

AlexRose:

и что здесь добавить чтобы зеленый диод тоже заработал

Зеленый диод должен работать. Если не работает, значит в схеме ошибка.

А пищалки нет ни у кого, т.к. патч на гитхабе без baychi не выложить.