mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
fix(puresignal): цель feedback 22 для Orion MkII + outlier-фильтр calcc
Разбор «IMD3 хуже, чем в Thetis»: юзерская плата (Orion MkII/Anvelina PRO3) при стоковой цели feedback 152 перегружает входные каскады ADC2208+кодека — фидбек сам интермодулирует, PS корректирует по искажённому наблюдению. Замеры eu2av (Thetis-Enhanced): оптимум FB≈22 при ATT≈10 дБ. - PSFBTarget: цель уровня feedback, авто по плате (board 5 → 22, иначе 152), настройка ps_fb_target (0 = авто) - авто-ATT: пороги от цели (FB > 1.5×цели / FB < 0.7×цели при ATT>0), ddB = 20*log10(FB/цель). Заодно чинит «ATT всегда 0»: старый порог >181 на этой плате никогда не достигался - PSOutlierSigmaEff → SetPSOutlierSigma (новый экспорт libwdsp): MAD- фильтр выбросов перед фитом calcc, авто σ=5.0 для Orion MkII, настройка ps_outlier_sigma (-1 = авто) - лампа FB в поповере: зоны от цели (0.7–1.3× зелёная), подпись «FB: тек/цель» Требует libwdsp с патчами eu2av (форк wdsp, коммит d27684c). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+7
-2
@@ -404,6 +404,7 @@ type
|
||||
FPSInts: Integer;
|
||||
FPSSpi: Integer;
|
||||
FPSHWPeak: Double;
|
||||
FPSOutlierSigma: Double; // eu2av MAD-фильтр перед фитом; 0 = выкл.
|
||||
|
||||
// Кэшированные TX-параметры — применяются после OpenChannel(TXA) и при изменении.
|
||||
// Для Filter/Compressor/Leveler/ALC/PhaseRot/EQ/AM/FM/CTCSS.
|
||||
@@ -668,7 +669,8 @@ type
|
||||
function PSGetMaxTX: Double;
|
||||
procedure PSSetParams(MoxDelay, LoopDelay: Double; TXDelayNs: Integer;
|
||||
RelaxPtol: Boolean; Pin, Map, Stabilize: Boolean;
|
||||
Ints, Spi: Integer; HWPeak: Double);
|
||||
Ints, Spi: Integer; HWPeak: Double;
|
||||
OutlierSigma: Double);
|
||||
|
||||
// Расширенное TX управление (применяются мгновенно если канал открыт)
|
||||
procedure SetTXFilterFull(Low, High, NC, MP, Window: Integer);
|
||||
@@ -1318,6 +1320,7 @@ begin
|
||||
FPSInts := 16;
|
||||
FPSSpi := 256;
|
||||
FPSHWPeak := 0.2899; // протокол 2 (Saturn: 0.6121)
|
||||
FPSOutlierSigma := 0.0; // выкл. до ApplyPSSettingsToDSP (авто по плате)
|
||||
FMonitorRXDuringTX := False;
|
||||
FPostTXMuteUntil := 0;
|
||||
FActiveDisplayID := RX_DISP_ID;
|
||||
@@ -3549,11 +3552,12 @@ begin
|
||||
SetPSStabilize(TXA_CHAN, Ord(FPSStabilize));
|
||||
SetPSIntsAndSpi(TXA_CHAN, FPSInts, FPSSpi);
|
||||
SetPSHWPeak(TXA_CHAN, FPSHWPeak);
|
||||
SetPSOutlierSigma(TXA_CHAN, FPSOutlierSigma);
|
||||
end;
|
||||
|
||||
procedure TWDSPEngine.PSSetParams(MoxDelay, LoopDelay: Double; TXDelayNs: Integer;
|
||||
RelaxPtol: Boolean; Pin, Map, Stabilize: Boolean; Ints, Spi: Integer;
|
||||
HWPeak: Double);
|
||||
HWPeak: Double; OutlierSigma: Double);
|
||||
begin
|
||||
FPSMoxDelay := MoxDelay;
|
||||
FPSLoopDelay := LoopDelay;
|
||||
@@ -3565,6 +3569,7 @@ begin
|
||||
if Ints > 0 then FPSInts := Ints;
|
||||
if Spi > 0 then FPSSpi := Spi;
|
||||
if HWPeak > 0 then FPSHWPeak := HWPeak;
|
||||
if OutlierSigma >= 0 then FPSOutlierSigma := OutlierSigma;
|
||||
ApplyPSParams;
|
||||
end;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user