From 1eeb22e6dbe86c482648591fc1463c0a7e5b7fcc Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Sat, 6 Mar 2021 12:25:01 +0100 Subject: [PATCH] Improved speed --- sa_core.c | 28 ++++++++++++++++++---------- si4468.c | 2 +- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/sa_core.c b/sa_core.c index 9e48d1b..eabd398 100644 --- a/sa_core.c +++ b/sa_core.c @@ -918,7 +918,7 @@ void set_harmonic(int h) void set_step_delay(int d) // override RSSI measurement delay or set to one of three auto modes { - if ((3 <= d && d < 100) || d > 30000) // values 0 (normal scan), 1 (precise scan) and 2(fast scan) have special meaning and are auto calculated + if ((3 <= d && d < 10) || d > 30000) // values 0 (normal scan), 1 (precise scan) and 2(fast scan) have special meaning and are auto calculated return; if (d <3) { setting.step_delay_mode = d; @@ -1265,9 +1265,9 @@ void calculate_step_delay(void) #endif #endif #ifdef __SI4463__ - if (actual_rbw_x10 >= 6000) { SI4432_step_delay = 400; SI4432_offset_delay = 100; spur_gate = 400000; } - else if (actual_rbw_x10 >= 3000) { SI4432_step_delay = 400; SI4432_offset_delay = 100; spur_gate = 200000; } - else if (actual_rbw_x10 >= 1000) { SI4432_step_delay = 400; SI4432_offset_delay = 100; spur_gate = 100000; } + if (actual_rbw_x10 >= 6000) { SI4432_step_delay = 80; SI4432_offset_delay = 50; spur_gate = 400000; } + else if (actual_rbw_x10 >= 3000) { SI4432_step_delay = 80; SI4432_offset_delay = 50; spur_gate = 200000; } + else if (actual_rbw_x10 >= 1000) { SI4432_step_delay = 100; SI4432_offset_delay = 100; spur_gate = 100000; } else if (actual_rbw_x10 >= 300) { SI4432_step_delay = 400; SI4432_offset_delay = 120; spur_gate = 100000; } else if (actual_rbw_x10 >= 100) { SI4432_step_delay = 400; SI4432_offset_delay = 120; spur_gate = 100000; } else if (actual_rbw_x10 >= 30) { SI4432_step_delay = 900; SI4432_offset_delay = 300; spur_gate = 100000; } @@ -2584,14 +2584,20 @@ modulation_again: if (tf + actual_rbw_x10*100 >= lf && tf < lf + actual_rbw_x10*100) { ADF4351_R_counter(6); } else { - freq_t tf = ((lf + actual_rbw_x10*100) / TXCO_DIV3) * TXCO_DIV3; - if (tf + actual_rbw_x10*100 >= lf && tf < lf + actual_rbw_x10*100) - ADF4351_R_counter(4); - else - ADF4351_R_counter(3); + if (setting.frequency_step < 100000) { + freq_t tf = ((lf + actual_rbw_x10*100) / TXCO_DIV3) * TXCO_DIV3; + if (tf + actual_rbw_x10*100 >= lf && tf < lf + actual_rbw_x10*100) + ADF4351_R_counter(4); + else + ADF4351_R_counter(3); + } else + ADF4351_R_counter(1); } } else - ADF4351_R_counter(3); + if (setting.frequency_step < 100000) + ADF4351_R_counter(3); + else + ADF4351_R_counter(1); } else ADF4351_R_counter(setting.R); @@ -4360,6 +4366,8 @@ void self_test(int test) setting.repeat = 20; #endif setting.step_delay = setting.step_delay * 5 / 4; + if (setting.step_delay < 1000) + setting.step_delay = 1000; setting.offset_delay = setting.step_delay ; setting.rbw_x10 = force_rbw(j); diff --git a/si4468.c b/si4468.c index 8484e96..19916db 100644 --- a/si4468.c +++ b/si4468.c @@ -1937,9 +1937,9 @@ int16_t Si446x_RSSI(void) my_microsecond_delay(SI4432_step_delay * ((setting.R == 0 && old_R > 5 ) ? 8 : 1)); ADF4351_frequency_changed = false; SI4463_frequency_changed = false; + SI4463_offset_changed = false; } else if (SI4432_offset_delay && SI4463_offset_changed) { my_microsecond_delay(SI4432_offset_delay); - ADF4351_frequency_changed = false; SI4463_offset_changed = false; } #define SAMPLE_COUNT 1