OrangeRx Open LRS 433MHz TX Module

тигромух
BAU:

Это так называемый “джиттер”. Бороться можно только корректировкой прошивки.

KHA ответил так:

Due to lack of timer resources on the atmega328 the PWMs are generated by interrept routine which is prone to interrupt latency (another tinterrupt running e.g. timer).There is not much I can do to make it better however I have something in mind to reduce it but it may have some ill effects so I need to test it throughly.

BAU
тигромух:

KHA ответил так:

Ну что сказать… Пусть проверяет.
Видать код у него оптимизирован хуже чем у эксперта. У него ресурсов 328 хватает.

Necromant
baychi:

RSSI полета с карбонового планера. Антенна (штатная спиралька) стоит над крылом.

Во-во, на коптерах все еще хуже…

Vladimir_N
BAU:

Ну что сказать… Пусть проверяет.
Видать код у него оптимизирован хуже чем у эксперта. У него ресурсов 328 хватает.

Проблема там не в оптимизации кода, а том что используются штатные библиотеки и среда ардуины. Некоторые прерывания и таймера там просто недоступны для программирования, поэтому и возникают иногда случайные задержки. У Эксперта прошивка полностью самостоятельная (у меня под RMILEC тоже) поэтому таких проблем не возникает.

Панкратов_Сергей
Vladimir_N:

У Эксперта прошивка полностью самостоятельная

Откуда информация? Эксперт начинал с Ардуино, написанное на Си в ардуино работает- прямой доступ к регистрам доступен.

тигромух
Vladimir_N:

Проблема там не в оптимизации кода, а том что используются штатные библиотеки и среда ардуины. Некоторые прерывания и таймера там просто недоступны для программирования, поэтому и возникают иногда случайные задержки. У Эксперта прошивка полностью самостоятельная (у меня под RMILEC тоже) поэтому таких проблем не возникает.

Не могу согласиться. Если почитаете код, то увидите, что библиотеки ардуины (даже тривиальный analogWrite) там не используются. Вывод PWM реализован на прерываниях и счетчиках атмеги. Просто слегка неоптимально.
Сегодня Kha написал, что внес правки в код, генерирующий PWM и обещает, что серво джиттер теперь “virtually nonexistent” 😃
Проверим 😃

Vladimir_N
Панкратов_Сергей:

Откуда информация? Эксперт начинал с Ардуино, написанное на Си в ардуино работает- прямой доступ к регистрам доступен.

У Эксперта используется загрузчик не от Ардуино, и при использовании родного загрузчика от Ардуино, ему пришлось отключить WDT на прошивках для Оранж. Отсюда и этот вывод.
Хотя могу и ошибаться т.к. у него тоже раньше были проблемы с джиттером.
В ардуино нет доступа например - к прерыванию от таймера 0. Пока оно обрабатывается запросто может возникнуть задержка в несколько микросекунд. Конечно можно эти проблемы “героически” преодолеть, введя более сложный анализ времени, но кардинально проблема легко решается написанием прошивки в другом компиляторе Си без использования среды Ардуино.

Панкратов_Сергей
Vladimir_N:

У Эксперта используется загрузчик не от Ардуино,

Загрузчик не причем. Многие пользуясь Ардуино не пользуются загрузчиком.
Или пользуются сторонним.
Реально другой загрузчик у него только в передатчике Тини, с функцией защитой прошивки.

baychi
Vladimir_N:

У Эксперта используется загрузчик не от Ардуино,

От Megaload.

Vladimir_N:

при использовании родного загрузчика от Ардуино, ему пришлось отключить WDT на прошивках для Оранж.

Да, потому что родной не поддерживает сторожевика.

Vladimir_N:

т.к. у него тоже раньше были проблемы с джиттером.

Проблемма была в первой версии софта/железа. Сейчас все чисто до длоей микросекунды (100 -150 нс джиттер, удивляюсь, что 10 бит PWM он так и не релизовал).
Насчет кода: по дизассемблеру видно, что Эксперт использовал Си. Но так-же видно что некоторые защиты от копирования ( я ля передатчик Тини, выполнены без учета среды, со вставками на ассемблере).

Панкратов_Сергей:

Многие пользуясь Ардуино не пользуются загрузчиком.

А ка спроецировать вектора прерываний к себе?

Панкратов_Сергей
baychi:

А ка спроецировать вектора прерываний к себе?

А зачем? В среде Ардуино пишется программа, получаем hex и грузим в контроллер.
Или я вопрос не понял?

baychi
Панкратов_Сергей:

вопрос не понял?

Не силен в тонкостях аурдиновой среды.
Но если во фьюзах включен загрузчик, то вектора прерываний сначала попадают в него, а дальше - как он решит. Некоторые сразу джамп в наш код, некоторые дополнительно обрабатываются, а некоторы вообще не доходят.
Я не знаю, как обеспечить дохождение прерываний в пользовательскую часть, с минимальным временем задержки в аурдиновском варианте.

тигромух

В общем, вопрос решен. С последним коммитом (добавлены две задержки в прерывании), сервы в FS стоят как вкопанные. В обычном режиме у меня изредка подрагивают, но это я грешу на аппу с deviationtx. Будет возможность - проверю с другой.

F_R
тигромух:

Будет возможность - проверю с другой.

Кость, могу предоставить тебе эту возможность 😆

alexpv
тигромух:

Думаю, что это не проблема. Если частоты выловить, то можно их обойти.
Там в другом косяк: регистр канала однобайтный… При 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

  1. Base frequency: 432800000
  2. RF magic: 89405197
  3. RF power (0-7): 7
  4. Channel spacing: 5
  5. Hop channels (6): 2,123,58,178,102,234
  6. Baudrate (0-2): 1
  7. Beacon frequency: 0
  8. Beacon Interval: 10
  9. 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 подтвердил, все совпадает
зы: разобрался - среднее и длительное нажатие кнопки на передатчике (при вкл) затирает вручную установленный список каналов…

тигромух
alexpv:

зы: разобрался - среднее и длительное нажатие кнопки на передатчике (при вкл) затирает вручную установленный список каналов…

Надо больше 10 секунд держать кнопку. Иначе он делает randomize 😃
В новой версии, конечно, сильно все поменялось. Можно не лазить в код и выставить все из менюшки. На мой взгляд, добавилось лишнее действие, но зато эта замута с рандомайзом теперь не актуальна.
Я все равно перебил дефайны в binding.h, т.к. фьюзы у меня еще не правленые, опасаюсь, что EEPROM слетит в самый неподходящий момент…

У меня сейчас вот так (загружено по “[I] renitialize settings to sketch defaults”):

  1. Base frequency: 432800000
  2. RF magic: 39414C46
  3. RF power (0-7): 6
  4. Channel spacing: 6
  5. Hop channels (6): 2,123,58,178,102,234
  6. Baudrate (0-2): 0
  7. Beacon frequency: 446006250
  8. Beacon Interval: 10
  9. Beacon Deadtime: 30
    A) Channel config: 8
    В) Telemetry: Disabled
    C) Failsafe delay: Long (2s)
    D) Stop PPM on F/S: Disabled
F_R:

Кость, могу предоставить тебе эту возможность

Спс, воспользуюсь 😃

alexpv

Выше говорилось о преимуществах калибровки частоты конкретных модулей RFM, есть ли в этом практический смысл (увеличится ли дальность), возможно ли это на прошивке KHA? Просто заметил в HDSDR что середина полосы (или как это правильно назвать) каждого канала смещена относительно частоты показанной HDSDR процентов на 20. Вопрос насколько критично это смещение, чем оно вызвано (модулем или SDR)?
Думаю SDR можно проверить по известным частотам радиостанций, а затем уже по ней откалибровать RFM

polarfox

Вчера прошил крайней финской прошивкой,всё-равно изредка подрагивают сервы,не так сильно как на предидущей,но тем не менее.И ещё одна особенность,в режиме работы маяка,во время посылки сигнала аналоговые сервы дрожат как ужаленные,на более ранних прошивках такого не было,началось с предидущей.

baychi
alexpv:

говорилось о преимуществах калибровки частоты конкретных модулей RFM, есть ли в этом практический смысл (увеличится ли дальность), возможно ли это на прошивке KHA?

Явная калибровка и подстройка частоты от температуры есть только на прошивках Эксперта. В КНА можнно вероятно заложить индивидуальный поправочный коэффициент модуля.
Необходимость и эффективность точного совпадения частот зависит от параметров протокола. Эксперт использует низкоскоростной (7200) узкополосный канал с девиацией +/-8.75 КГц. Такая девиация дает более помехозащищенный канал (в узкую полосу труднее попасть), но требует совпадения частот в пределах +/-5 кГц. Поэтому здесь очень важна калибровка и полезна автоподстройка от температуры.
У KHA скорость больше (9600-38400) , полоса шире 30 кГц. Соответственно требования к разбежке слабее - +/-15 кГц. Но и помехозащенность (и чувствительность) ниже.

alexpv:

Просто заметил в HDSDR что середина полосы (или как это правильно назвать) каждого канала смещена относительно частоты показанной HDSDR процентов на 20. Вопрос насколько критично это смещение

20% - некритично. Критично >40-50%.

alexpv:

чем оно вызвано (модулем или SDR)?

Разбросом кварцев RFM-мок, плюс разницей температур.

тигромух
polarfox:

Вчера прошил крайней финской прошивкой,всё-равно изредка подрагивают сервы,не так сильно как на предидущей,но тем не менее.И ещё одна особенность,в режиме работы маяка,во время посылки сигнала аналоговые сервы дрожат как ужаленные,на более ранних прошивках такого не было,началось с предидущей.

А в ФС сервы дрожат?
У меня с маяком все ок, как и раньше. Посмотрел в гите, по маяку в коде давненько ничего не менялось…
Да и менять там нечего, все же просто.

alexpv:

Выше говорилось о преимуществах калибровки частоты конкретных модулей RFM, есть ли в этом практический смысл (увеличится ли дальность), возможно ли это на прошивке KHA? Просто заметил в HDSDR что середина полосы (или как это правильно назвать) каждого канала смещена относительно частоты показанной HDSDR процентов на 20.

HDSDR тут особо не при чем, важнее железо, с которым он работает. А оно, как правило, кривое 😃
Но это не важно. Важнее убедиться, что совпадают частоты у приемника и передатчика, а это лучше проверить, запустив на приемыше спектроанализатор.

alexpv

Еще вопрос, хотя и немного не по теме. Как правильно закрепить антенну типа nagoya na-771 (BNC) на передатчик Турнигу? Сначала я сделал пластиковое крепление на металлическую ручку для самодельного кабеля (20см) SMA-BNC, но потом прочитал что для таких антенн нужен противовес, поэтому переделал крепление на металлическое и соединил ручку передатчика с землей внутри корпуса, дальность пока не проверял.

baychi

Смотрите, чтобы передатчик не заглючил от близости к антенне.