Improve frequency rounding

This commit is contained in:
Jan Hamal Dvořák 2025-08-30 21:44:29 +02:00
parent 4b9f377bb0
commit eb52048770
Signed by: mordae
GPG key ID: 1782BCC23EE007B9

View file

@ -241,8 +241,8 @@ static void lo_generate_phase(uint32_t *buf, size_t len, uint32_t step, uint32_t
static void rx_lo_init(double freq)
{
double frac = (double)CLK_SYS_HZ / (8 << LO_BITS_DEPTH);
freq = roundf(freq / frac) * frac;
double n = round(freq * (8 << LO_BITS_DEPTH) / CLK_SYS_HZ);
freq = n * CLK_SYS_HZ / (8 << LO_BITS_DEPTH);
uint32_t step = freq * 4294967296.0 / CLK_SYS_HZ;
lo_generate_phase(lo_cos, LO_WORDS, step, COS_PHASE);
lo_generate_phase(lo_sin, LO_WORDS, step, SIN_PHASE);
@ -565,7 +565,7 @@ static void do_rx()
fwrite(block, IQ_BLOCK_LEN, 1, stdout);
fflush(stdout);
} else {
sleep_us(1);
sleep_us(10);
}
}