below IF added

tinySA-v0.2
erikkaashoek 6 years ago
parent 6c1c5ea809
commit bbe264fb8e

@ -10,6 +10,7 @@ int setting_attenuate = 0;
int setting_auto_attenuation; int setting_auto_attenuation;
int setting_step_atten; int setting_step_atten;
int setting_rbw = 0; int setting_rbw = 0;
int setting_below_IF;
int setting_average = 0; int setting_average = 0;
int setting_show_stored = 0; int setting_show_stored = 0;
int setting_subtract_stored = 0; int setting_subtract_stored = 0;
@ -67,6 +68,7 @@ void reset_settings(int m)
setting_auto_reflevel = true; // Must be after SetReflevel setting_auto_reflevel = true; // Must be after SetReflevel
setting_decay=20; setting_decay=20;
setting_noise=5; setting_noise=5;
setting_below_IF = false;
setting_tracking_output = false; setting_tracking_output = false;
trace[TRACE_STORED].enabled = false; trace[TRACE_STORED].enabled = false;
trace[TRACE_TEMP].enabled = false; trace[TRACE_TEMP].enabled = false;
@ -182,6 +184,11 @@ void toggle_tracking_output(void)
setting_tracking_output = !setting_tracking_output; setting_tracking_output = !setting_tracking_output;
dirty = true; dirty = true;
} }
void toggle_below_IF(void)
{
setting_below_IF = !setting_below_IF;
dirty = true;
}
void SetModulation(int m) void SetModulation(int m)
{ {
@ -494,10 +501,10 @@ void apply_settings(void)
SI4432_SetReference(setting_refer); SI4432_SetReference(setting_refer);
update_rbw(); update_rbw();
if (setting_step_delay == 0){ if (setting_step_delay == 0){
if (actual_rbw >142.0) actualStepDelay = 450; if (actual_rbw > 90.0) actualStepDelay = 400;
else if (actual_rbw > 75.0) actualStepDelay = 550; else if (actual_rbw > 75.0) actualStepDelay = 550;
else if (actual_rbw > 56.0) actualStepDelay = 650; else if (actual_rbw > 56.0) actualStepDelay = 650;
else if (actual_rbw > 37.0) actualStepDelay = 800; else if (actual_rbw > 37.0) actualStepDelay = 700;
else if (actual_rbw > 18.0) actualStepDelay = 1100; else if (actual_rbw > 18.0) actualStepDelay = 1100;
else if (actual_rbw > 9.0) actualStepDelay = 2000; else if (actual_rbw > 9.0) actualStepDelay = 2000;
else if (actual_rbw > 5.0) actualStepDelay = 3500; else if (actual_rbw > 5.0) actualStepDelay = 3500;
@ -974,11 +981,9 @@ again:
setFreq (2, IF_2 + lf); setFreq (2, IF_2 + lf);
setFreq (1, 433800000); setFreq (1, 433800000);
#else #else
#ifdef BELOW_IF_BELOW_50MHZ if (setting_mode == M_LOW && !setting_tracking && setting_below_IF)
if (setting_mode == M_LOW && lf < 50000000)
setFreq (1, local_IF-lf); setFreq (1, local_IF-lf);
else else
#endif
setFreq (1, local_IF+lf); setFreq (1, local_IF+lf);
#endif #endif
} }
@ -991,9 +996,9 @@ again:
else else
#endif #endif
if (setting_mode == M_LOW) if (setting_mode == M_LOW)
signal_path_loss = -9.5; // Loss in dB, -9.5 for v0.1, -12.5 for v0.2 signal_path_loss = -5.5; // Loss in dB, -9.5 for v0.1, -12.5 for v0.2
else else
signal_path_loss = 7; // Loss in dB (+ is gain) signal_path_loss = -3; // Loss in dB (+ is gain)
float subRSSI = SI4432_RSSI(lf, MODE_SELECT(setting_mode))+settingLevelOffset()+ setting_attenuate - signal_path_loss; float subRSSI = SI4432_RSSI(lf, MODE_SELECT(setting_mode))+settingLevelOffset()+ setting_attenuate - signal_path_loss;
#ifdef __ULTRA__ #ifdef __ULTRA__
if (setting_spur == 1) { // First pass if (setting_spur == 1) { // First pass
@ -1132,11 +1137,11 @@ static bool sweep(bool break_on_operation)
draw_cal_status(); draw_cal_status();
} }
if (!in_selftest && setting_mode == M_LOW && setting_auto_attenuation && max_index[0] > 0) { if (!in_selftest && setting_mode == M_LOW && setting_auto_attenuation && max_index[0] > 0) {
if (actual_t[max_index[0]] - setting_attenuate < -32 && setting_attenuate >= 10) { if (actual_t[max_index[0]] - setting_attenuate < - 3*setting_scale && setting_attenuate >= setting_scale) {
setting_attenuate -= setting_scale; setting_attenuate -= setting_scale;
redraw_request |= REDRAW_CAL_STATUS; redraw_request |= REDRAW_CAL_STATUS;
dirty = true; // Must be above if(scandirty!!!!!) dirty = true; // Must be above if(scandirty!!!!!)
} else if (actual_t[max_index[0]] - setting_attenuate > -18 && setting_attenuate <= 20) { } else if (actual_t[max_index[0]] - setting_attenuate > - 1.5*setting_scale && setting_attenuate <= 30 - setting_scale) {
setting_attenuate += setting_scale; setting_attenuate += setting_scale;
redraw_request |= REDRAW_CAL_STATUS; redraw_request |= REDRAW_CAL_STATUS;
dirty = true; // Must be above if(scandirty!!!!!) dirty = true; // Must be above if(scandirty!!!!!)
@ -1569,8 +1574,8 @@ static const struct {
{TC_SIGNAL, TP_10MHZ_SWITCH,20, 7, -58, 30, -90 }, // 10 Switch isolation {TC_SIGNAL, TP_10MHZ_SWITCH,20, 7, -58, 30, -90 }, // 10 Switch isolation
{TC_END, 0, 0, 0, 0, 0, 0}, {TC_END, 0, 0, 0, 0, 0, 0},
{TC_MEASURE, TP_30MHZ, 30, 7, -22.5, 30, -70 }, // 12 Measure power level and noise {TC_MEASURE, TP_30MHZ, 30, 7, -22.5, 30, -70 }, // 12 Measure power level and noise
{TC_MEASURE, TP_30MHZ, 270, 4, -45, 30, -75 }, // 13 Measure powerlevel and noise {TC_MEASURE, TP_30MHZ, 270, 4, -50, 30, -75 }, // 13 Measure powerlevel and noise
{TC_MEASURE, TPH_30MHZ, 270, 4, -45, 30, -65 }, // 14 Calibrate power high mode {TC_MEASURE, TPH_30MHZ, 270, 4, -50, 30, -65 }, // 14 Calibrate power high mode
{TC_END, 0, 0, 0, 0, 0, 0}, {TC_END, 0, 0, 0, 0, 0, 0},
{TC_MEASURE, TP_30MHZ, 30, 1, -20, 30, -70 }, // 16 Measure RBW step time {TC_MEASURE, TP_30MHZ, 30, 1, -20, 30, -70 }, // 16 Measure RBW step time
{TC_END, 0, 0, 0, 0, 0, 0}, {TC_END, 0, 0, 0, 0, 0, 0},
@ -1854,7 +1859,7 @@ void self_test(void)
{ {
#if 0 #if 0
in_selftest = true; in_selftest = true; // Spur search
reset_settings(M_LOW); reset_settings(M_LOW);
test_prepare(4); test_prepare(4);
int f; // Start search at 400kHz int f; // Start search at 400kHz
@ -1898,18 +1903,26 @@ void self_test(void)
return; return;
#elif 0 // RAttenuator test #elif 0 // Attenuator test
int local_test_status; int local_test_status;
in_selftest = true; in_selftest = true;
reset_settings(M_LOW); reset_settings(M_LOW);
int i = 15; // calibrate low mode power on 30 MHz; int i = 15; // calibrate attenuator at 30 MHz;
float reference_peak_level;
test_prepare(i); test_prepare(i);
for (int j= 0; j < 32; j++ ) { for (int j= 0; j < 32; j++ ) {
test_prepare(i); test_prepare(i);
SetAttenuation(j); SetAttenuation(j);
test_acquire(i); // Acquire test float summed_peak_level = 0;
local_test_status = test_validate(i); // Validate test for (int k=0; k<10; k++) {
shell_printf("Target %d, actual %f\n\r",j, peakLevel); test_acquire(i); // Acquire test
local_test_status = test_validate(i); // Validate test
summed_peak_level += peakLevel;
}
peakLevel = summed_peak_level / 10;
if (j == 0)
reference_peak_level = peakLevel;
shell_printf("Target %d, actual %f, delta %f\n\r",j, peakLevel, peakLevel - reference_peak_level);
} }
return; return;
#elif 0 #elif 0
@ -1936,11 +1949,11 @@ void self_test(void)
shell_printf("Start level = %f, ",peakLevel); shell_printf("Start level = %f, ",peakLevel);
while (setting_step_delay > 100 && peakLevel > saved_peakLevel - 1) { while (setting_step_delay > 100 && peakLevel > saved_peakLevel - 1) {
setting_step_delay = setting_step_delay * 3 / 4; setting_step_delay = setting_step_delay * 3 / 4;
// test_prepare(i); test_prepare(i);
// shell_printf("RBW = %f\n\r",SI4432_force_RBW(j)); // shell_printf("\n\rRBW = %f",SI4432_force_RBW(j));
test_acquire(i); // Acquire test test_acquire(i); // Acquire test
local_test_status = test_validate(i); // Validate test local_test_status = test_validate(i); // Validate test
// shell_printf("Step %f, %d",peakLevel, setting_step_delay); // shell_printf(" Step %f, %d",peakLevel, setting_step_delay);
} }
setting_step_delay = setting_step_delay * 4 / 3; setting_step_delay = setting_step_delay * 4 / 3;
shell_printf("End level = %f, step time = %d\n\r",peakLevel, setting_step_delay); shell_printf("End level = %f, step time = %d\n\r",peakLevel, setting_step_delay);

@ -9,6 +9,7 @@ void reset_settings(int);
void SetPowerGrid(int); void SetPowerGrid(int);
void SetRefLevel(int); void SetRefLevel(int);
void set_refer_output(int); void set_refer_output(int);
void toggle_below_IF(void);
int get_refer_output(void); int get_refer_output(void);
void SetAttenuation(int); void SetAttenuation(int);
int GetAttenuation(void); int GetAttenuation(void);
@ -916,6 +917,9 @@ static void menu_settings2_cb(int item, uint8_t data)
case 3: case 3:
toggle_tracking_output(); toggle_tracking_output();
break; break;
case 4:
toggle_below_IF();
break;
} }
draw_menu(); draw_menu();
// draw_cal_status(); // draw_cal_status();
@ -1185,6 +1189,7 @@ static const menuitem_t menu_settings2[] =
{ MT_CALLBACK, 0, "AGC", menu_settings2_cb}, { MT_CALLBACK, 0, "AGC", menu_settings2_cb},
{ MT_CALLBACK, 1, "LNA", menu_settings2_cb}, { MT_CALLBACK, 1, "LNA", menu_settings2_cb},
{ MT_CALLBACK, 2, "BPF", menu_settings2_cb}, { MT_CALLBACK, 2, "BPF", menu_settings2_cb},
{ MT_CALLBACK, 4, "\2BELOW\0IF", menu_settings2_cb},
{ MT_KEYPAD, KM_DECAY,"\2HOLD\0TIME", NULL}, { MT_KEYPAD, KM_DECAY,"\2HOLD\0TIME", NULL},
{ MT_KEYPAD, KM_NOISE,"\2NOISE\0LEVEL", NULL}, { MT_KEYPAD, KM_NOISE,"\2NOISE\0LEVEL", NULL},
{ MT_KEYPAD, KM_10MHZ,"\00210MHZ\0ACTUAL", NULL}, { MT_KEYPAD, KM_10MHZ,"\00210MHZ\0ACTUAL", NULL},

Loading…
Cancel
Save

Powered by TurnKey Linux.