Baychi OpenLRS - дружелюбная ЛРС с широкими возможностями )
а резистор так сложно воткнуть 😃
Напрашивается для начала просто поменять Атмегу.
С большой вероятностью на этом Ваши мучения завершатся.
Вряд ли. Так как у меня такой же глюк. Не верю я в такие совпадения, чтобы быстрое передергивание питания со 100% вероятностью приводило к корректной работе. А на экспертовской прошивке это не проявлялось.
Вообще-то мега в этой конструкции работает за пределами ТУ. Атмели гарантируют при 3.3В питания стабильную работу до 10МГц, а здесь 16.
90% камней заводятся и работают безупречно, остальные очень причудливо выпендриваются.
Напрашивается для начала просто поменять Атмегу.
С большой вероятностью на этом Ваши мучения завершатся.
тогда встречный вопрос, почему на прошивке от эксперта все работает без резисторов и прочих махинаций…
а резистор так сложно воткнуть 😃
резистор дома попробую. но это что нам дает?
думаю что здесь тоже можно этого добиться, что то изменив/дополнив в коде программы
Согласен с Вами, Евгнений
Вряд ли. Так как у меня такой же глюк. Не верю я в такие совпадения, чтобы быстрое передергивание питания со 100% вероятностью приводило к корректной работе. А на экспертовской прошивке это не проявлялось.
- есть еще двое человек с 2G с этим же эффектом
Вопрос скорее всего тигромуху😃
Константин, проблема у нас с А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 при первоначальном включении?
update/
вообщем резюк дает эффект - но мне это не нравится
еще раз погонял на прошивке эксперта f10
насчет щелчка в динамиках я оказался не прав, он все равно есть… но это оказывается не главное
запуск передатчика осуществляется так:
- подключил питание - один пик buzzer’ом
- 1-2 пауза видимо
- перемигнул диодом красный-зеленый (думаю инициализация)
- пауза 7-8 секунд ( не зря она тут такая длинная)
- на 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
Мне подпаяться не жалко, просто любопытно.
ну на постоянку так нельзя, так как будет идти излучение когда его можно не включать, или не нужно
ну на постоянку так нельзя, так как будет идти излучение когда его можно не включать, или не нужно
да по идее не будет, т.к. SDN переводит rfm-ку в shut down режим. А есть режим standby.
Константин, Ваш вопрос:
Только сейчас заметил, что у эксперта еще и SDN подключен к атмеге. А с какой целью кто нибудь знает?
становиться все актуальней:)
Сообщение от dragen25:
Закомментировал. SDN стал 0-м. Все работает даже на холодной плате.
Сможете поправить?
Сообщение от baychi:
Ясно.
Надо написать
#ifdef SDN_pin
вместо
#if(SDN_pin != 0)
===================[/quote]
вот здесь чуть чуть не дошли до истинны:(
то есть фактически получается МЕГА зависает от не своевременного запуска RFM?
вот здесь чуть чуть не дошли до истинны
Ну я тогда похоже был один, кто реально хотел чтобы Baychi OpenLRS работала на 2G, поэтому и “доставал” Александра. Но до конца все глюки не смог выловить, точнее списывал их на фрискаевский приемник:(
офф. все равно, говоря современным языком - прошивка огонь!
ничего, я же говорил коллективный разум победит!
будет у нас стабильная версия
Проверить гипотезу с SDN тоже очень просто: замкните этот контакт на землю и проверьте стабильность работы.
Ничего не сгорит, т.к. это штатный режим, так работают все оранжи, например.
Проверить гипотезу с SDN тоже очень просто: замкните этот контакт на землю и проверьте стабильность работы.
AlexRose, сможете проверить? У меня все так собрано, неохота разбирать-собирать.
про это речь?
попробуем
про это речь?
да
ребята, можете нас всех поздравить!
замкнул SDN и GND - все стало запускаться как положено!
мне не удалось добиться чтобы он не запустился при замкнутых… 10 из 10
а вот с разомкнутыми еще раз сейчас проверил, 5 из 10 не запустился
и еще, для уточнения на эксперте стоит RFM23B-S2
замкнул SDN и GND - все стало запускаться как положено!
И все-таки это решение какое-то “дубовое”. Ведь программа что-то проверяет и в зависимости от этого выдает на SDN 0. Да, похоже только Александр смог бы дать объяснение.
И в продолжение, что нужно добавить в программе, чтобы мега всегда подавала 0 на SDN без всяких IF. Тоже конечно не совсем корректно, но по крайней мере паять не надо.
Собственно уже нашел, сам же выше цитировал Александра.
===============
Сообщение от bachi:
Попробуйте временно закоменнтировать #if(SDN_pin != 0) и #endif.
===============
Придется видимо не временно…
ну и еще, я считаю не хватает каких то пауз… не зря они есть на эксперте, так как весь старт там около 7-8 секунд
старт там около 7-8 секунд
Не, лучше без этих задержек. Мешают они, особенно при настройке иглов.
Попробуйте временно закоментировать #if(SDN_pin != 0) и #endif.
===============Придется видимо не временно…
Александр не зря написал “временно” и только он может ответить почему…
И все-таки это решение какое-то “дубовое”. Ведь программа что-то проверяет и в зависимости от этого выдает на SDN 0. Да, похоже только Александр смог бы дать объяснение.
Ничего она не проверяет. То, о чем вы думаете, это директива условной компиляции. Для типа железа 5, код, выставляющие указанное значение на ножке, генерируется, а для остальных - нет. Грубо говоря, проверяет она только на этапе компиляции.
Использование SDN на передатчике само по-себе спорное решение, поэтому ничего зазорного в том, чтобы перемкнуть ноги я не вижу. 😃
Если хотите поэспериментировать с паузами поправьте код в OpenTiny_TX.ino:
#ifdef SDN_pin
pinMode(SDN_pin, OUTPUT); //SDn
digitalWrite(SDN_pin, LOW);
delay(1000);
#endif
Жирным то, что нужно добавить.
Александр не зря написал “временно” и только он может ответить почему…
Это уже пофикшено.
Проблема была в том, что у передатчика 2G SDN_pin оказался не числом, как у всех, а строкой “A5”. Строку сравнивать с нулем нельзя, потому и глюк.
Код был заменен на #ifdef SDN_pin и все стало хорошо.
Код был заменен на #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;
}
}
}
}
пищалку тяжело реализовать?
я не понимаю где все стало хорошо? а с чем же мы сейчас пытаемся бороться?
Та борьба уже в прошлом. Я отвечал Сергею.
подскажите пожалуйста как 1000 перевести в секунды? здесь микросекунды, да?
1000 - это одна секунда.
и что здесь добавить чтобы зеленый диод тоже заработал
Зеленый диод должен работать. Если не работает, значит в схеме ошибка.
А пищалки нет ни у кого, т.к. патч на гитхабе без baychi не выложить.