From 9ad84bf8a87f531a2dd9b61b450ba69e060e28be Mon Sep 17 00:00:00 2001 From: Felix Erckenbrecht Date: Sun, 26 Jul 2020 14:08:47 +0200 Subject: Implement proper amplitude scaling by 1/sqrt(2) to achieve correct amplitude --- src/fl2k_iq.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/fl2k_iq.c b/src/fl2k_iq.c index 9821d4f..0ea1c77 100644 --- a/src/fl2k_iq.c +++ b/src/fl2k_iq.c @@ -200,11 +200,11 @@ static inline int8_t dds_real(dds_t *dds) dds->phase &= 0xffffffff; //amp = 255; - amp_i = creal(dds->amplitude) * 32768.0; // 0..15 - amp_q = cimag(dds->amplitude) * 32768.0; - amp_i = amp_i * trig_table.sine[tmp]; // 0..31 - amp_q = amp_q * trig_table.cosine[tmp]; // 0..31 - amp8 = (int8_t) ((amp_i + amp_q) >> 25); // 0..32 >> 25 => 0..8 + amp_i = creal(dds->amplitude) * 23170.0; // 0..15, * 1/SQRT(2) + amp_q = cimag(dds->amplitude) * 23170.0; + amp_i = amp_i * trig_table.sine[tmp]; // 0..31, * 1/SQRT(2) + amp_q = amp_q * trig_table.cosine[tmp]; // 0..31, * 1/SQRT(2) + amp8 = (int8_t) ((amp_i + amp_q) >> 24); // 0..31 >> 24 => 0..8 dds->amplitude += dds->ampslope; return amp8; } -- cgit v1.2.3