Baychi OpenLRS - дружелюбная ЛРС с широкими возможностями )
Код в регистре 9 (RFMки) влияет на частоту изменением емкости на кварце. Что бы этот механизм работал, старший бит должн быть 1.
Да, я смотрел код и даташит, однако факт. Могу завтра показать табличку изменения частоты в зависимости от регистра 2.
Кажется, нашел источник моих проблем. Это мелкий баг в строчке 662 в rfm22b.ino
Serial.print(fCh%1000);
Вместо 433.075 рисует 433.75. Мне кажется у меня в маяке такой же баг возможен, надо будет проверить 😃
Отстроил с точностью до килогерца. Теперь все нормально, спасибо 😃
Вместо 433.075 рисует 433.75. Мне кажется у меня в маяке такой же баг возможен
Врядли дело в этом. 700 кГц разности - никаким 9м регистром не перекрыть…
А ошибочку в коде можно заткнуть строчкой
if(fCh < 100) Serial.write(‘0’);
перед
Serial.print(fCh%1000);
Врядли дело в этом. 700 кГц разности - никаким 9м регистром не перекрыть…
Ну почти перекрыл же. 😃
Завтра покажу табличку - на работе осталась.
Все завелось после того, как я стал настраивать на .075, а не .75.
Получилось 214 на передатчике и 198 на приемнике (с прошивкой передатчика).
Насчет странного PPM:
PPM5 mode: T=53 Tc=-3 M=324 A=31
988 1199 1200 1201 1753
Еще и не все каналы иногда ловит.
Насчет странного PPM: PPM5 mode: T=53 Tc=-3 M=324 A=31 988 1199 1200 1201 1753 Еще и не все каналы иногда ловит.
Надо смотреть осциллом.
При отлове логика простая. Все что длиннее 800 мкс и короче 2500 - считается импульсом. Импульс длиннее 2500 мкс - межпакетной паузой.
Вы через PPM через ICP ловите или по прерыванию?
Если по прерыванию вот в этом месте (ppmsbus.ino)
#ifndef USE_ICP1 // неправильный режим - использованиие прерывания
pCntr++; // так как наш драйвер ловит оба фронта
if(!(pCntr&1)) { // половину нужно игнорировать
lastP=pulse;
return;
}
pulse+=lastP;
#endif
попробуйте поменять четность: if(pCntr&1) вместо if(!(pCntr&1)), может что даст?
Код в регистре 9 (RFMки) влияет на частоту изменением емкости на кварце. Что бы этот механизм работал, старший бит должн быть 1. Так что реальный диапазон регулировки +/- 64 относительно 192-х.
Даташиты RFM и Si44 немного различаются. В даташите RFM сказано, что старший бит добавляет 3.7пФ к емкости, и по дефолту он в нуле (0x7F = ). А в даташите Si про него сказано только, что он нужен для грубой подстройки частоты и все. По дефолту тоже в нуле (0x40).
Вообще параметр крайне неочевидный: прерывный, нелинейный, да еще и имеет обратное действие: увеличивая значение (емкость), уменьшаем частоту.
Имхо лучше его вообще не трогать, ребинд подгонит его сам. 😃
Табличка.
Вы через PPM через ICP ловите или по прерыванию?
Если по прерыванию вот в этом месте (ppmsbus.ino)
По прерыванию. Поменял код, результат такой же.
Еще заметил, что пока стик газа в нуле (988) на остальные стики реакции нет.
Ладно, это неважно, все равно 6-ти канальный ретранслятор - вещь бесполезная 😃
Вообще параметр крайне неочевидный: прерывный, нелинейный, да еще и имеет обратное действие:
Да, пожалуй в новом проекте, надо будет перейти на подстройку частоты через Frequensy offset (0x73,0x74), там и точность повыше - 156.25 Гц и нелинейности нет.
Поменял код, результат такой же.
По логике и не должно было.
что пока стик газа в нуле (988) на остальные стики реакции нет.
Не меняется код на входе? Или на приемнике. У Вас случайно R4=1 не стоит? Это специальный режим для ретрансляторов = прекращает передачу при отсутствии исходного сигнала, о оно определяется по выходу любого канала за пределы 1000-1999 мкс (рассчитано на настройку FS ретранслятора). Но коль у Вас при нижнем положении стика 988 мкс - эту фичу использовать нельзя.
неважно, все равно 6-ти канальный ретранслятор - вещь бесполезная
Жаль, что загадка осталась. Кто-то еще писал про подобное. А мне повторить не на чем.
Есть один 6-ти канальный ретранслятор. Внизу у него все в порядке. Проблемма когда все 6 каналов на максиммум ставишь (2 мс), он межканальную паузу меньше 2 мс оставляет. 😦
А вобщем-то обычные приемники приемники с sbus или PPM выходом - лучшее решение для ретранслятора. 😃
Да, пожалуй в новом проекте, надо будет перейти на подстройку частоты через Frequensy offset (0x73,0x74), там и точность повыше - 156.25 Гц и нелинейности нет.
Вы AFC разве не используете? Они же вместе не работают.
А чем плохо просто прибавить поправку в герцах к центральной частоте?
Не меняется код на входе? Или на приемнике.
Смотрю на передатчике в отладке PPMа. R4=0. Передача не прекращается, просто все каналы замирают в своих положениях.
А вобщем-то обычные приемники приемники с sbus или PPM выходом - лучшее решение для ретранслятора.
Да, я прицелился на 9-ти канальный DSM2 оранж с SBUS 😃
Вы AFC разве не используете? Они же вместе не работают.
Хочу уйти от AFC в новом протоколе. ИМХО, достаточно будет посткорекции. Нам точность важнее оперативности.
А чем плохо просто прибавить поправку в герцах к центральной частоте?
Строго говоря там не смещение, а kx, и нужно пересчитывать поправку в зависимости от частоты. С другой стороны на RFM69 регистра прыжков вообще нет…
Напомните, пожалуйста, как доработать приемник чтобы показания RSSI не скакали постоянно.
как доработать приемник чтобы показания RSSI не скакали постоянно.
- Поставить на выход первого разъема (RSSI) конденсатор в 1 мкФ между землей и сигналом.
- Использовать усредение с нужным коэффициентом в регистре 40 (обычно достаточно R40=10).
Конденсатор неполярный использовать? Или электролит?
- Использовать усредение с нужным коэффициентом в регистре 40 (обычно достаточно R40=10).
Кстати, если выбрать режим писка и повесить RSSI на другой пин, то усреднение включить нельзя?
то усреднение включить нельзя?
В текущей версии не получится, так как R40 задает одновременно режим и усреднение.
Но если что-то праввить и на другой pin вывести писк, R40 сможет работать только на усреденение.
Другой вопрос получится ли одновременно ШИМ RSSI и писк? Я не вникал, но там вроде один таймер на это задействован…
Конденсатор неполярный использовать?
Разумееется. Если не найдете на 1 мкФ, можно и меньше поставить. От 0.1 уже эффект есть…
Другой вопрос получится ли одновременно ШИМ RSSI и писк? Там вроде один таймер на это задействован…
Исходники на эту тему еще не читал. Но у одного таймера, вроде, два ШИМа?
В конце-концов, есть пищалки с генератором, им ШИМ не нужен. Я пищал такой из прошивки Kha на пине SDA.
Я пищал такой из прошивки Kha на пине SDA.
На микрофон ,а далее на передатчик?
На микрофон ,а далее на передатчик?
Да, конечно.
Да, конечно.
Надо попробывать пищалку к св.диоду подцепить через транзистор. Хочется одновременно и писк о потерянных пакетов слышать и на экране РССИ видеть.
Писк очень удобен! Не всегда успеваешь на РССИ смотреть… а в “ушах” уже попискивает 😃 А, бывает, чт оРССИ топчется в районе 10% а писка - битых пакетов нету…
Не всегда успеваешь на РССИ смотреть…
Совершенно верно, особенно когда летиш очень низко и быстро, чуть взгляд отвел и ты в земле))))
Было бы очень здорого, что б появилась возможность использовать в прошивке одновременно бип и РССИ на экране.
Но у одного таймера, вроде, два ШИМа?
Писк очень удобен!
Посмотрел детали. Ситуация такова. У Меги168/328 3 таймера и 6 ног для генерации ШИМ (D3, D11, D5, D6, D9, D10).
Но таймер 0 занят под время, таймер 1 работает на генерацию PWM/PPM. Свободен только таймер 2, поэтому гарантированно можно вывести писк (не теряя RSSI) на ножку D11- это 7-й выходной канал PWM.
Возможно сосуществовние с TIMER0 тоже не исключено и выходы 2,3 тоже смогут генерить звук аппаратно. Проверю…
Или можно забить на “чистый” звук и озвучивать потери пакетов “кряканьем” - типа щелчка в 1-2 мс на каждую потерю (10-20 колебаний). Это примерно как иммитация звука клавишь в мобильниках. Зато можно выдать куда угодно.
Какой вариант народу более интересен?
Писк лучше. “Кряк” из-за шума мотора/ветра можно и не услышать.
Сейчас используем зуммеры с драйвером. Достаточно подать на них ток и она завопит. Т.е. потерянный пакет - зажигает светодиод и пускает ток на би-би. Если пакеты постоянно теряются, то би-би идет тоже постоянно. Что тоже удобно, для поиска в траве 😃