From f2d0519c9e2b47d29a7edf3c80d201b1407ce2a4 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Tue, 7 Jul 2026 15:35:31 +0300 Subject: [PATCH] =?UTF-8?q?fix(tx):=20bfo=3D1=20=D0=B2=20OpenChannel=20TXA?= =?UTF-8?q?=20=E2=80=94=20=D1=83=D1=81=D1=82=D1=80=D0=B0=D0=BD=D1=91=D0=BD?= =?UTF-8?q?=20=D1=84=D0=B0=D0=B7=D0=BE=D0=B2=D1=8B=D0=B9=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D1=80=D1=8B=D0=B2=20TUN-=D1=82=D0=BE=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Всплески на водопаде + щелчки в аудио при 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 --- WDSPEngine.pas | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/WDSPEngine.pas b/WDSPEngine.pas index f9c0158..423c4b6 100644 --- a/WDSPEngine.pas +++ b/WDSPEngine.pas @@ -1181,7 +1181,9 @@ begin 1, 0, 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));