Skip to content

AGC-T zeigte 98 dB daneben; NR1 kostet gemessen 10 dB - #438

Merged
oe5sos merged 2 commits into
mainfrom
fix/agc-schwelle-abgeleitet
Nov 13, 2026
Merged

oe5sos merged 2 commits into
mainfrom
fix/agc-schwelle-abgeleitet

Conversation

@oe5sos

@oe5sos oe5sos commented Nov 12, 2026

Copy link
Copy Markdown
Owner

Betreiber am 2026-11-12: „lautstärke ist sehr leise, sobald ich auf nr1 klicke, wird es zu leise!"

Gemessen, nicht vermutet

Neuer Messstand tests/tst_nr1_pegel_und_agc_schwelle.cpp fährt einen echten WDSP-Empfangskanal (USB, 150–3000 Hz, AGC Med, AF 50) mit Ton und Rauschen:

Messung Wert
NR1 hinter der AGC (Vorgabe, Thetis rx_anr_position = 1) −10,2 dB
NR1 vor der AGC −8,7 dB
90 dB Maximalverstärkung → dazu gehörende Schwelle −117,5 dBm
Schwelle −21 dBm → daraus folgende Maximalverstärkung −6,5 dB

Der NR1-Verlust ist WDSPs LMS ohne Nachverstärkung; Thetis verhält sich gleich. Die Positionsumstellung bringt 1,5 dB und lohnt nicht.

Der Fehler

wcpAGC.c kennt nur eine Größe, max_gain. Longpath hielt dafür zwei gespeicherte Zahlen nebeneinander: AgcMaxGain 90 und AgcThreshold −20. WDSP stand auf 90 dB, die Anzeige auf −20 dBm — 98 dB auseinander, beides gleichzeitig auf dem Schirm.

Dass es meist gutging, lag allein an der Gleichheitsschranke in setAgcThreshold, deren eigener Anfangswert zufällig auch −20 ist. Ein einziger Zug am AGC-T-Regler schreibt den Wert wirklich hinein und reißt den Empfänger um 96 dB ein — und das bleibt so, bis jemand die Maximalverstärkung neu setzt.

Die Behebung

RxChannel::setzeMaxVerstaerkungUndMeldeSchwelle setzt die Maximalverstärkung — bewusst ohne Gleichheitsschranke — und meldet die Schwelle zurück, die WDSP dazu ausrechnet. Die Schwelle wird also abgeleitet statt gespeichert geschrieben. Drei Stellen ziehen nach:

  • Verbindungsweg (RadioModel, Scheibe A): statt des gespeicherten agcThreshold die abgeleitete Zahl in die Anzeige
  • Setup-Regler „AGC Max Gain": setzt und schreibt die passende Schwelle zurück
  • Zug am AGC-T-Regler: zieht jetzt auch die Setup-Zahl nach, nicht nur rfGain

Geprüft

  • 5 Prüffälle im neuen Messstand, grün — einschließlich der Gegenprobe gegen den alten Zustand (Anzeige −20 gegen wirkliche −118)
  • alle 6 AGC-Prüfstände grün (ctest -R agc)
  • tools/syntax_check.sh, Pre-Commit-Kette und die vier übrigen Prüfskripte grün

Falle für den nächsten: ohne vorheriges setAnrTuning nimmt WDSP seine eigenen ANR-Werte, und der NR1-Verlust misst sich zu −17,5 dB statt −10,2.

🤖 Generated with Claude Code

oe5sos and others added 2 commits November 12, 2026 11:10
Betreiber am 2026-11-12: "lautstärke ist sehr leise, sobald ich auf nr1
klicke, wird es zu leise!"

Gemessen am echten WDSP (tests/tst_nr1_pegel_und_agc_schwelle.cpp):

  NR1 hinter der AGC   -10,2 dB
  NR1 vor der AGC       -8,7 dB
  AGC: 90 dB Maximalverstärkung -> Schwelle -117,5 dBm
  AGC: Schwelle -21 dBm         -> Maximalverstärkung -6,5 dB

Schwelle und Maximalverstärkung sind in wcpAGC.c dieselbe Größe
(max_gain). Longpath hielt dafür zwei Zahlen: AgcMaxGain 90 und
AgcThreshold -20. WDSP stand auf 90, die Anzeige auf -20 -- 98 dB
auseinander, beides gleichzeitig auf dem Schirm. Ein einziger Zug am
AGC-T-Regler schrieb die -20 wirklich hinein und riss den Empfänger um
96 dB ein; dass es bisher meist gutging, lag nur an der
Gleichheitsschranke in setAgcThreshold, deren eigener Anfangswert
zufällig auch -20 ist.

Jetzt wird die Schwelle ABGELEITET statt gespeichert geschrieben:
RxChannel::setzeMaxVerstaerkungUndMeldeSchwelle setzt die
Maximalverstärkung (ohne Gleichheitsschranke) und meldet die Schwelle,
die WDSP dazu ausrechnet. Verbindungsweg, Setup-Regler und der Zug am
AGC-T-Regler ziehen die jeweils andere Zahl nach.

Fünf Prüffälle, alle sechs AGC-Prüfstände grün.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@oe5sos
oe5sos merged commit 6653397 into main Nov 13, 2026
18 of 22 checks passed
@oe5sos
oe5sos deleted the fix/agc-schwelle-abgeleitet branch November 13, 2026 19:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant