diff --git a/nanovna.h b/nanovna.h index e49e55c..3c952b5 100644 --- a/nanovna.h +++ b/nanovna.h @@ -639,8 +639,8 @@ enum { S_OFF=0, S_ON=1, S_AUTO_OFF=2, S_AUTO_ON=3 }; #define ONE_SECOND_TIME 1000000U // One second uS #define ONE_MS_TIME 1000U // One ms uS -#define REPEAT_TIME 134 // Time per extra repeat in uS -#define MEASURE_TIME 175 // Time per vbwstep without stepdelay in uS +#define REPEAT_TIME 110 // Time per extra repeat in uS +#define MEASURE_TIME 127 // Time per vbwstep without step delay in uS extern uint32_t frequencies[POINTS_COUNT]; extern const float unit_scale_value[]; diff --git a/sa_core.c b/sa_core.c index ad6f404..98c4650 100644 --- a/sa_core.c +++ b/sa_core.c @@ -31,6 +31,7 @@ float actual_rbw = 0; int vbwSteps = 1; uint32_t minFreq = 0; uint32_t maxFreq = 520000000; +uint32_t measured_sweep_time = 0; //int setting.refer = -1; // Off by default int const reffer_freq[] = {30000000, 15000000, 10000000, 4000000, 3000000, 2000000, 1000000}; @@ -1594,12 +1595,14 @@ again: // Waiting for a trigger jumps back to here if (MODE_OUTPUT(setting.mode) && t < 500) // Minimum wait time to prevent LO from lockup during output frequency sweep t = 500; - set_freq_time = 0; // for predicting the weep time sweep_again: // stay in sweep loop when output mode and modulation on. + set_freq_time = 0; // for predicting the weep time + // ------------------------- start sweep loop ----------------------------------- - // START_PROFILE; + START_PROFILE; // needed to measure actual sweep time except for fast scan in zero span mode + for (int i = 0; i < sweep_points; i++) { if (start_index == -1 && start_time == 0 && set_freq_time != 0) { // Sweep time prediction: first real set SI4432 freq @@ -1732,7 +1735,8 @@ sweep_again: // stay in sweep loop when output mo goto sweep_again; // Keep repeating sweep loop till user aborts by input - // STOP_PROFILE; + measured_sweep_time = DELTA_TIME*100; // in us + //STOP_PROFILE; // --------------- check if maximum is above trigger level ----------------- if (setting.trigger != T_AUTO && setting.frequency_step > 0) { // Trigger active diff --git a/si4432.c b/si4432.c index 2543b6a..247a0b4 100644 --- a/si4432.c +++ b/si4432.c @@ -448,7 +448,7 @@ float SI4432_RSSI(uint32_t i, int s) } SI4432_frequency_changed = false; } else if (SI4432_offset_changed) { - stepdelay = 280 + stepdelay/8; + stepdelay = 280 + (stepdelay - 280)/8; SI4432_offset_changed = false; } if (stepdelay)