mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
fix(tx): bfo=1 в OpenChannel TXA — устранён фазовый разрыв TUN-тона
Всплески на водопаде + щелчки в аудио при TX (openHPSDR TUN/DUP): периодический ~72° фазовый разрыв передаваемого PostGen-тона на границе TX-блока, в среднем ~5 раз за сессию, привязан к фазе тона. Причина: TX-канал открывался с bfo=0 (13-й параметр OpenChannel). При bfo=0 fexchange0 читает выход из кольца r2 асинхронно (заполняет DSP-поток), а r2_outidx продвигается на out_size каждый вызов; при рассинхроне DSP-потока блок изредка читается со швом → разрыв фазы тона (err=0, амплитуда постоянна). В DUP этот сплаттер принимается обратно = широкополосная строка на водопаде и слышимый щелчок. Диагностика A/B: pihpsdr на том же WDSP/радио и на той же частоте 750 Гц — чист; единственное отличие в открытии TX-канала — bfo=1 (transmitter.c:1316). При bfo=1 fexchange0 ждёт Sem_OutReady и отдаёт полный выходной блок синхронно/фазонепрерывно (wdsp/iobuffs.c). Продюсер даёт ровно один вход-блок на вызов → стойла нет. Исключено прямыми зондами: рендер, NB/NB2, перегруз ADC, потеря пакетов DDC (seq), переполнение RX-очереди, временно́й разрыв в принятом IQ, burst catch-up продюсера, TX-пейсинг. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+3
-1
@@ -1181,7 +1181,9 @@ begin
|
|||||||
1,
|
1,
|
||||||
0,
|
0,
|
||||||
0.010, 0.010, 0.010, 0.010,
|
0.010, 0.010, 0.010, 0.010,
|
||||||
0
|
1 // bfo=1: fexchange0 БЛОКИРУЕТСЯ до готовности выходного блока (как
|
||||||
|
// pihpsdr). bfo=0 давал async-чтение кольца r2 со сдвигом outidx →
|
||||||
|
// изредка фазовый разрыв PostGen-тона (всплеск на водопаде + щелчок).
|
||||||
);
|
);
|
||||||
|
|
||||||
SetTXAMode(TXA_CHAN, ModeToWDSP(FMode));
|
SetTXAMode(TXA_CHAN, ModeToWDSP(FMode));
|
||||||
|
|||||||
Reference in New Issue
Block a user