Selftest 3 working again

pull/4/head
erikkaashoek 6 years ago
parent 39e1a02220
commit 1897953749

@ -867,6 +867,7 @@ int SI4432_is_fast_mode(void);
void SI4432_Set_Frequency ( uint32_t Freq );
uint16_t SI4432_SET_RBW(uint16_t WISH);
void SI4432_SetReference(int freq);
extern uint16_t SI4432_force_RBW(int i);
// Speed profile definition
#define START_PROFILE systime_t time = chVTGetSystemTimeX();

@ -791,19 +791,21 @@ void calculate_step_delay(void)
{
if (setting.step_delay_mode == SD_MANUAL || setting.step_delay != 0) { // The latter part required for selftest 3
SI4432_step_delay = setting.step_delay;
if (setting.offset_delay != 0) // Override if set
SI4432_offset_delay = setting.offset_delay;
} else {
SI4432_offset_delay = 0;
if (setting.frequency_step == 0.0) { // zero span mode, not dependent on selected RBW
SI4432_step_delay = 0;
} else {
if (actual_rbw_x10 >= 1910) { SI4432_step_delay = 280; SI4432_offset_delay = 200; }
else if (actual_rbw_x10 >= 1420) { SI4432_step_delay = 350; SI4432_offset_delay = 200; }
else if (actual_rbw_x10 >= 750) { SI4432_step_delay = 450; SI4432_offset_delay = 200; }
else if (actual_rbw_x10 >= 560) { SI4432_step_delay = 650; SI4432_offset_delay = 200; }
else if (actual_rbw_x10 >= 370) { SI4432_step_delay = 700; SI4432_offset_delay = 200; }
else if (actual_rbw_x10 >= 180) { SI4432_step_delay = 1100; SI4432_offset_delay = 250; }
if (actual_rbw_x10 >= 1910) { SI4432_step_delay = 280; SI4432_offset_delay = 100; }
else if (actual_rbw_x10 >= 1420) { SI4432_step_delay = 350; SI4432_offset_delay = 100; }
else if (actual_rbw_x10 >= 750) { SI4432_step_delay = 450; SI4432_offset_delay = 100; }
else if (actual_rbw_x10 >= 560) { SI4432_step_delay = 650; SI4432_offset_delay = 100; }
else if (actual_rbw_x10 >= 370) { SI4432_step_delay = 700; SI4432_offset_delay = 100; }
else if (actual_rbw_x10 >= 180) { SI4432_step_delay = 1100; SI4432_offset_delay = 200; }
else if (actual_rbw_x10 >= 90) { SI4432_step_delay = 1700; SI4432_offset_delay = 400; }
else if (actual_rbw_x10 >= 50) { SI4432_step_delay = 3300; SI4432_offset_delay = 800; }
else if (actual_rbw_x10 >= 50) { SI4432_step_delay = 3300; SI4432_offset_delay = 400; }
else { SI4432_step_delay = 6400; SI4432_offset_delay =1600; }
if (setting.step_delay_mode == SD_PRECISE) // In precise mode wait twice as long for RSSI to stabalize
SI4432_step_delay *= 2;
@ -2812,7 +2814,7 @@ common_silent:
}
extern void menu_autosettings_cb(int item);
extern float SI4432_force_RBW(int i);
int last_spur = 0;
int add_spur(int f)
@ -2963,10 +2965,13 @@ do_again:
setting.step_delay_mode = SD_NORMAL;
setting.step_delay = setting.step_delay * 5 / 4;
setting.rbw_x10 = SI4432_force_RBW(j);
shell_printf("RBW = %d, ",setting.rbw_x10/10);
set_sweep_frequency(ST_SPAN, (uint32_t)(setting.rbw_x10 * 20000));
shell_printf("RBW = %f, ",setting.rbw_x10/10.0);
if (setting.rbw_x10 < 1000)
set_sweep_frequency(ST_SPAN, (uint32_t)(setting.rbw_x10 * 5000));
else
set_sweep_frequency(ST_SPAN, (uint32_t)(18000000));
setting.repeat = 10;
// setting.repeat = 10;
test_acquire(i); // Acquire test
test_validate(i); // Validate test
if (test_value == 0) {
@ -2979,17 +2984,19 @@ do_again:
// shell_printf("Peak level too low, abort\n\r");
// return;
// }
#if 0
#if 1
shell_printf("Start level = %f, ",peakLevel);
while (setting.step_delay > 10 && test_value != 0 && test_value > saved_peakLevel - 0.5) {
test_prepare(i);
setting.spur = 0;
setting.step_delay_mode = SD_NORMAL;
setting.step_delay = setting.step_delay * 4 / 5;
// shell_printf("\n\rRBW = %f",SI4432_force_RBW(j));
set_sweep_frequency(ST_SPAN, (uint32_t)(setting.rbw_x10 * 5000));
if (setting.rbw_x10 < 1000)
set_sweep_frequency(ST_SPAN, (uint32_t)(setting.rbw_x10 * 5000));
else
set_sweep_frequency(ST_SPAN, (uint32_t)(18000000));
setting.repeat = 10;
// setting.repeat = 10;
test_acquire(i); // Acquire test
test_validate(i); // Validate test
// shell_printf(" Step %f, %d",peakLevel, setting.step_delay);
@ -3008,9 +3015,11 @@ do_again:
setting.step_delay_mode = SD_FAST;
setting.offset_delay /= 2;
setting.spur = 0;
// shell_printf("\n\rRBW = %f",SI4432_force_RBW(j));
set_sweep_frequency(ST_SPAN, (uint32_t)(setting.rbw_x10 * 20000)); // 200 times RBW
setting.repeat = 10;
if (setting.rbw_x10 < 1000)
set_sweep_frequency(ST_SPAN, (uint32_t)(setting.rbw_x10 * 5000)); // 50 times RBW
else
set_sweep_frequency(ST_SPAN, (uint32_t)(18000000)); // Limit to 18MHz
// setting.repeat = 10;
test_acquire(i); // Acquire test
test_validate(i); // Validate test
// shell_printf(" Step %f, %d",peakLevel, setting.step_delay);

Loading…
Cancel
Save

Powered by TurnKey Linux.