Decrease DC bias removal alpha

This requires use of int64_t, which is emulated.
This commit is contained in:
Jan Hamal Dvořák 2024-02-23 11:31:06 +01:00
parent f6e579919a
commit 29f726894f

View file

@ -538,7 +538,7 @@ static void rf_rx(void)
uint32_t prev_transfers = dma_hw->ch[dma_ch_in_cos].transfer_count; uint32_t prev_transfers = dma_hw->ch[dma_ch_in_cos].transfer_count;
unsigned pos = 0; unsigned pos = 0;
int dcI = 0, dcQ = 0; int64_t dcI = 0, dcQ = 0;
while (true) { while (true) {
if (multicore_fifo_rvalid()) { if (multicore_fifo_rvalid()) {
@ -573,11 +573,11 @@ static void rf_rx(void)
int I = cos_neg - cos_pos; int I = cos_neg - cos_pos;
int Q = sin_neg - sin_pos; int Q = sin_neg - sin_pos;
dcI = (dcI * 255 + I * 256) >> 8; dcI = (dcI * 8191 + ((int64_t)I << 16)) / 8192;
dcQ = (dcQ * 255 + Q * 256) >> 8; dcQ = (dcQ * 8191 + ((int64_t)Q << 16)) / 8192;
I -= dcI >> 8; I -= dcI >> 16;
Q -= dcQ >> 8; Q -= dcQ >> 16;
*blockptr++ = I; *blockptr++ = I;
*blockptr++ = Q; *blockptr++ = Q;