From 8adcafc85b9454bfc2ddc5bb50d7a3e17ca8d569 Mon Sep 17 00:00:00 2001 From: DiSlord Date: Tue, 7 Jul 2020 12:29:34 +0300 Subject: [PATCH] Disable wide ofsset, need more test for it --- sa_core.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/sa_core.c b/sa_core.c index 69a192a..5f11513 100644 --- a/sa_core.c +++ b/sa_core.c @@ -919,7 +919,7 @@ void setupSA(void) extern int SI4432_frequency_changed; extern int SI4432_offset_changed; -#define __WIDE_OFFSET__ +//#define __WIDE_OFFSET__ void set_freq(int V, unsigned long freq) // translate the requested frequency into a setting of the SI4432 { @@ -936,7 +936,11 @@ void set_freq(int V, unsigned long freq) // translate the requested frequency if (real_old_freq[V] >= 480000000) // 480MHz, high band delta = delta >> 1; +#ifdef __WIDE_OFFSET__ if (delta > -80000 && delta < 80000) { // and requested frequency can be reached by using the offset registers +#else + if (delta >=0 && delta < 80000) { // and requested frequency can be reached by using the offset registers +#endif #if 0 if (real_old_freq[V] >= 480000000) shell_printf("%d: Offs %q HW %d\r\n", SI4432_Sel, (uint32_t)(real_old_freq[V]+delta*2), real_old_freq[V]); @@ -954,15 +958,15 @@ void set_freq(int V, unsigned long freq) // translate the requested frequency #endif #ifdef __WIDE_OFFSET__ if (freq >= 480000000) { - SI4432_Set_Frequency(freq + 160000 ); // Impossible to use offset so set SI4432 to new frequency + SI4432_Set_Frequency(freq + 160000 - 2); // Impossible to use offset so set SI4432 to new frequency SI4432_Write_Byte(SI4432_FREQ_OFFSET1, 0); // set offset to most negative SI4432_Write_Byte(SI4432_FREQ_OFFSET2, 0x02); - real_old_freq[V] = freq + 160000; + real_old_freq[V] = freq + 160000 - 2; } else { - SI4432_Set_Frequency(freq + 80000 ); // Impossible to use offset so set SI4432 to new frequency + SI4432_Set_Frequency(freq + 80000 - 1); // Impossible to use offset so set SI4432 to new frequency SI4432_Write_Byte(SI4432_FREQ_OFFSET1, 0); // set offset to most negative SI4432_Write_Byte(SI4432_FREQ_OFFSET2, 0x02); - real_old_freq[V] = freq + 80000; + real_old_freq[V] = freq + 80000 - 1; } #else SI4432_Set_Frequency(freq); // Impossible to use offset so set SI4432 to new frequency