Auto AGC bug solved

Removed_REF_marker
erikkaashoek 5 years ago
parent 7fb1895f75
commit ab037a2917

@ -2512,7 +2512,6 @@ int test_output = false;
int test_output_switch = false; int test_output_switch = false;
int test_output_drive = 0; int test_output_drive = 0;
int test_output_attenuate = 0; int test_output_attenuate = 0;
int start_temperature = 0;
bool level_error = false; bool level_error = false;
#endif #endif
@ -2561,7 +2560,6 @@ pureRSSI_t perform(bool break_on_operation, int i, freq_t f, int tracking) /
correct_RSSI_freq = get_frequency_correction(f); // for i == 0 and freq_step == 0; correct_RSSI_freq = get_frequency_correction(f); // for i == 0 and freq_step == 0;
} else { } else {
clock_at_48MHz(); clock_at_48MHz();
start_temperature = Si446x_get_temp();
} }
// if (MODE_OUTPUT(setting.mode) && setting.additional_step_delay_us < 500) // Minimum wait time to prevent LO from lockup during output frequency sweep // if (MODE_OUTPUT(setting.mode) && setting.additional_step_delay_us < 500) // Minimum wait time to prevent LO from lockup during output frequency sweep
// setting.additional_step_delay_us = 500; // setting.additional_step_delay_us = 500;
@ -3636,12 +3634,12 @@ static bool sweep(bool break_on_operation)
#ifdef __SI4432__ #ifdef __SI4432__
if (!in_selftest && setting.mode == M_HIGH && S_IS_AUTO(setting.agc) && UNIT_IS_LOG(setting.unit)) { if (!in_selftest && setting.mode == M_HIGH && S_IS_AUTO(setting.agc) && UNIT_IS_LOG(setting.unit)) {
#define AGC_RSSI_THRESHOLD (-55+get_attenuation()) #define AGC_RSSI_THRESHOLD (-55+get_attenuation())
float local_rssi = RSSI +setting.external_gain;
if (RSSI > AGC_RSSI_THRESHOLD && RSSI > agc_prev_rssi) { if (local_rssi > AGC_RSSI_THRESHOLD && local_rssi > agc_prev_rssi) {
agc_peak_freq = frequencies[i]; agc_peak_freq = frequencies[i];
agc_peak_rssi = agc_prev_rssi = RSSI; agc_peak_rssi = agc_prev_rssi = local_rssi;
} }
if (RSSI < AGC_RSSI_THRESHOLD) if (local_rssi < AGC_RSSI_THRESHOLD)
agc_prev_rssi = -150; agc_prev_rssi = -150;
freq_t delta_freq = frequencies[i] - agc_peak_freq; freq_t delta_freq = frequencies[i] - agc_peak_freq;
if (agc_peak_freq != 0 && delta_freq < 2000000) { if (agc_peak_freq != 0 && delta_freq < 2000000) {
@ -4858,6 +4856,7 @@ void test_prepare(int i)
#endif #endif
setting.auto_IF = true; setting.auto_IF = true;
setting.auto_attenuation = false; setting.auto_attenuation = false;
setting.attenuate_x2 = 0;
setting.spur_removal = S_OFF; setting.spur_removal = S_OFF;
in_selftest = true; in_selftest = true;

Loading…
Cancel
Save

Powered by TurnKey Linux.