OrangeRx Open LRS 433MHz TX Module
Проблема там не в оптимизации кода, а том что используются штатные библиотеки и среда ардуины. Некоторые прерывания и таймера там просто недоступны для программирования, поэтому и возникают иногда случайные задержки. У Эксперта прошивка полностью самостоятельная (у меня под RMILEC тоже) поэтому таких проблем не возникает.
Не могу согласиться. Если почитаете код, то увидите, что библиотеки ардуины (даже тривиальный analogWrite) там не используются. Вывод PWM реализован на прерываниях и счетчиках атмеги. Просто слегка неоптимально.
Сегодня Kha написал, что внес правки в код, генерирующий PWM и обещает, что серво джиттер теперь “virtually nonexistent” 😃
Проверим 😃
Откуда информация? Эксперт начинал с Ардуино, написанное на Си в ардуино работает- прямой доступ к регистрам доступен.
У Эксперта используется загрузчик не от Ардуино, и при использовании родного загрузчика от Ардуино, ему пришлось отключить WDT на прошивках для Оранж. Отсюда и этот вывод.
Хотя могу и ошибаться т.к. у него тоже раньше были проблемы с джиттером.
В ардуино нет доступа например - к прерыванию от таймера 0. Пока оно обрабатывается запросто может возникнуть задержка в несколько микросекунд. Конечно можно эти проблемы “героически” преодолеть, введя более сложный анализ времени, но кардинально проблема легко решается написанием прошивки в другом компиляторе Си без использования среды Ардуино.
У Эксперта используется загрузчик не от Ардуино,
Загрузчик не причем. Многие пользуясь Ардуино не пользуются загрузчиком.
Или пользуются сторонним.
Реально другой загрузчик у него только в передатчике Тини, с функцией защитой прошивки.
У Эксперта используется загрузчик не от Ардуино,
От Megaload.
при использовании родного загрузчика от Ардуино, ему пришлось отключить WDT на прошивках для Оранж.
Да, потому что родной не поддерживает сторожевика.
т.к. у него тоже раньше были проблемы с джиттером.
Проблемма была в первой версии софта/железа. Сейчас все чисто до длоей микросекунды (100 -150 нс джиттер, удивляюсь, что 10 бит PWM он так и не релизовал).
Насчет кода: по дизассемблеру видно, что Эксперт использовал Си. Но так-же видно что некоторые защиты от копирования ( я ля передатчик Тини, выполнены без учета среды, со вставками на ассемблере).
Многие пользуясь Ардуино не пользуются загрузчиком.
А ка спроецировать вектора прерываний к себе?
А ка спроецировать вектора прерываний к себе?
А зачем? В среде Ардуино пишется программа, получаем hex и грузим в контроллер.
Или я вопрос не понял?
вопрос не понял?
Не силен в тонкостях аурдиновой среды.
Но если во фьюзах включен загрузчик, то вектора прерываний сначала попадают в него, а дальше - как он решит. Некоторые сразу джамп в наш код, некоторые дополнительно обрабатываются, а некоторы вообще не доходят.
Я не знаю, как обеспечить дохождение прерываний в пользовательскую часть, с минимальным временем задержки в аурдиновском варианте.
В общем, вопрос решен. С последним коммитом (добавлены две задержки в прерывании), сервы в FS стоят как вкопанные. В обычном режиме у меня изредка подрагивают, но это я грешу на аппу с deviationtx. Будет возможность - проверю с другой.
Будет возможность - проверю с другой.
Кость, могу предоставить тебе эту возможность 😆
Думаю, что это не проблема. Если частоты выловить, то можно их обойти.
Там в другом косяк: регистр канала однобайтный… При 60кГц шаге весь диапазон от 417 до 450 в него не влезет, а значит придется лезть в прошивку менять ширину шага… В общем, я решил, что оно того не стоит.
Выбрал вот такие каналы:
#define DEFAULT_CARRIER_FREQUENCY 432800000
#define DEFAULT_HOPLIST 2,123,58,178,102,234
В частотах это вот так:
432.920, 440.180, 436.280, 443.480, 438.920, 446.840Сейчас прошью и посмотрю на спектроанализаторе.
попробовал забить такой же список каналов в .ino версии 1,9 (kha) и не получилось,
hdsdr показывает совсем не те частоты, не старые (по умолчанию) но и не нужные.
Возможно есть ограничение на номер канала? Прошил последнюю версию, так там
конфигурирование через терминал, и шаг поменялся на 50кгц, вот как получилось:
[R] calculate random key and hop list
[F] display actual frequencies used
- Base frequency: 432800000
- RF magic: 89405197
- RF power (0-7): 7
- Channel spacing: 5
- Hop channels (6): 2,123,58,178,102,234
- Baudrate (0-2): 1
- Beacon frequency: 0
- Beacon Interval: 10
- Beacon Deadtime: 30
A) Channel config: 8
😎 Telemetry: Disabled
C) Failsafe delay: Long (2s)
D) Stop PPM on F/S: Disabled
Calculated packet interval: 25000 == 40Hz
Hop channel 0 @ 432900000
Hop channel 1 @ 438950000
Hop channel 2 @ 435700000
Hop channel 3 @ 441700000
Hop channel 4 @ 437900000
Hop channel 5 @ 444500000
hdsdr подтвердил, все совпадает
зы: разобрался - среднее и длительное нажатие кнопки на передатчике (при вкл) затирает вручную установленный список каналов…
зы: разобрался - среднее и длительное нажатие кнопки на передатчике (при вкл) затирает вручную установленный список каналов…
Надо больше 10 секунд держать кнопку. Иначе он делает randomize 😃
В новой версии, конечно, сильно все поменялось. Можно не лазить в код и выставить все из менюшки. На мой взгляд, добавилось лишнее действие, но зато эта замута с рандомайзом теперь не актуальна.
Я все равно перебил дефайны в binding.h, т.к. фьюзы у меня еще не правленые, опасаюсь, что EEPROM слетит в самый неподходящий момент…
У меня сейчас вот так (загружено по “[I] renitialize settings to sketch defaults”):
- Base frequency: 432800000
- RF magic: 39414C46
- RF power (0-7): 6
- Channel spacing: 6
- Hop channels (6): 2,123,58,178,102,234
- Baudrate (0-2): 0
- Beacon frequency: 446006250
- Beacon Interval: 10
- Beacon Deadtime: 30
A) Channel config: 8
В) Telemetry: Disabled
C) Failsafe delay: Long (2s)
D) Stop PPM on F/S: Disabled
Кость, могу предоставить тебе эту возможность
Спс, воспользуюсь 😃
Выше говорилось о преимуществах калибровки частоты конкретных модулей RFM, есть ли в этом практический смысл (увеличится ли дальность), возможно ли это на прошивке KHA? Просто заметил в HDSDR что середина полосы (или как это правильно назвать) каждого канала смещена относительно частоты показанной HDSDR процентов на 20. Вопрос насколько критично это смещение, чем оно вызвано (модулем или SDR)?
Думаю SDR можно проверить по известным частотам радиостанций, а затем уже по ней откалибровать RFM
Вчера прошил крайней финской прошивкой,всё-равно изредка подрагивают сервы,не так сильно как на предидущей,но тем не менее.И ещё одна особенность,в режиме работы маяка,во время посылки сигнала аналоговые сервы дрожат как ужаленные,на более ранних прошивках такого не было,началось с предидущей.
говорилось о преимуществах калибровки частоты конкретных модулей RFM, есть ли в этом практический смысл (увеличится ли дальность), возможно ли это на прошивке KHA?
Явная калибровка и подстройка частоты от температуры есть только на прошивках Эксперта. В КНА можнно вероятно заложить индивидуальный поправочный коэффициент модуля.
Необходимость и эффективность точного совпадения частот зависит от параметров протокола. Эксперт использует низкоскоростной (7200) узкополосный канал с девиацией +/-8.75 КГц. Такая девиация дает более помехозащищенный канал (в узкую полосу труднее попасть), но требует совпадения частот в пределах +/-5 кГц. Поэтому здесь очень важна калибровка и полезна автоподстройка от температуры.
У KHA скорость больше (9600-38400) , полоса шире 30 кГц. Соответственно требования к разбежке слабее - +/-15 кГц. Но и помехозащенность (и чувствительность) ниже.
Просто заметил в HDSDR что середина полосы (или как это правильно назвать) каждого канала смещена относительно частоты показанной HDSDR процентов на 20. Вопрос насколько критично это смещение
20% - некритично. Критично >40-50%.
чем оно вызвано (модулем или SDR)?
Разбросом кварцев RFM-мок, плюс разницей температур.
Вчера прошил крайней финской прошивкой,всё-равно изредка подрагивают сервы,не так сильно как на предидущей,но тем не менее.И ещё одна особенность,в режиме работы маяка,во время посылки сигнала аналоговые сервы дрожат как ужаленные,на более ранних прошивках такого не было,началось с предидущей.
А в ФС сервы дрожат?
У меня с маяком все ок, как и раньше. Посмотрел в гите, по маяку в коде давненько ничего не менялось…
Да и менять там нечего, все же просто.
Выше говорилось о преимуществах калибровки частоты конкретных модулей RFM, есть ли в этом практический смысл (увеличится ли дальность), возможно ли это на прошивке KHA? Просто заметил в HDSDR что середина полосы (или как это правильно назвать) каждого канала смещена относительно частоты показанной HDSDR процентов на 20.
HDSDR тут особо не при чем, важнее железо, с которым он работает. А оно, как правило, кривое 😃
Но это не важно. Важнее убедиться, что совпадают частоты у приемника и передатчика, а это лучше проверить, запустив на приемыше спектроанализатор.
Еще вопрос, хотя и немного не по теме. Как правильно закрепить антенну типа nagoya na-771 (BNC) на передатчик Турнигу? Сначала я сделал пластиковое крепление на металлическую ручку для самодельного кабеля (20см) SMA-BNC, но потом прочитал что для таких антенн нужен противовес, поэтому переделал крепление на металлическое и соединил ручку передатчика с землей внутри корпуса, дальность пока не проверял.
Смотрите, чтобы передатчик не заглючил от близости к антенне.
Смотрите, чтобы передатчик не заглючил от близости к антенне.
Вроде у многих так, да и мощность пока 100мвт, хотя RFM23 уже едет 😃 Смущает что в моей схеме крепления две точки подключения земли - оплетка кабеля и кронштейн BNC
да и мощность пока 100мвт, хотя RFM23 уже едет
О да на 100 мВт опасности нет. 😃 На 1 Вт и выше - есть.
А в ФС сервы дрожат?
Можно сказать,что нет.Так, иногда скрипнет.Единственное,что в момент посылки маяком сигнала аналоговая серва дрожит как от видеопередатчика.Второй приёмник с цифровыми сервами вроде помалкивает.
в момент посылки маяком сигнала аналоговая серва дрожит как от видеопередатчика
Там может по аналогии наводку ловит. Пусть 100 мВт, но на 433 МГц да вблизи - мощность вполне существенная.
Может быть…,но раньше такого не наблюдалось.Только что мысль пришла,может это от БЕКа.Т.к. раньше я с другим БЕКом эксперименты ставил.На другом приёмнике(он уже в самолёте) антенна почти рядом с сервами стоит и питается он от того первого БЕКа и таких проблем при работе маяка нет,правда сервы цыфровые.