aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Erckenbrecht <eligs@eligs.de>2020-07-26 14:08:47 +0200
committerFelix Erckenbrecht <eligs@eligs.de>2020-07-26 14:08:47 +0200
commit9ad84bf8a87f531a2dd9b61b450ba69e060e28be (patch)
treef8464eb86a7f8855db4a8a8cf7ace21971b2d8ae
parentb28432638b2b80e5540f9d114fc791a1751215b5 (diff)
downloadosmo-fl2k-9ad84bf8a87f531a2dd9b61b450ba69e060e28be.tar.gz
osmo-fl2k-9ad84bf8a87f531a2dd9b61b450ba69e060e28be.tar.bz2
osmo-fl2k-9ad84bf8a87f531a2dd9b61b450ba69e060e28be.zip
Implement proper amplitude scaling by 1/sqrt(2) to achieve correct amplitude
-rw-r--r--src/fl2k_iq.c10
1 files 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;
}