Add trigger option

tinySA-v0.2
erikkaashoek 6 years ago
parent e0c71046f5
commit ae63eaf7d2

1
.gitignore vendored

@ -10,3 +10,4 @@ python
TAGS TAGS
.emacs-dirvars .emacs-dirvars
*png *png
*.bak

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/> <provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="834375144321394" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="461091318661355" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

@ -2266,6 +2266,7 @@ static const VNAShellCommand commands[] =
{ "spur", cmd_spur, 0 }, { "spur", cmd_spur, 0 },
{ "selftest", cmd_selftest, 0 }, { "selftest", cmd_selftest, 0 },
{ "x", cmd_x, 0 }, { "x", cmd_x, 0 },
{ "y", cmd_y, 0 },
{ "i", cmd_i, 0 }, { "i", cmd_i, 0 },
{ "v", cmd_v, 0 }, { "v", cmd_v, 0 },
{ "a", cmd_a, 0 }, { "a", cmd_a, 0 },

@ -564,6 +564,7 @@ typedef struct setting
int8_t _active_marker; int8_t _active_marker;
int8_t unit; int8_t unit;
float offset; float offset;
float trigger;
uint32_t checksum; uint32_t checksum;
}setting_t; }setting_t;
@ -791,6 +792,7 @@ void set_offset(float);
void set_unit(int); void set_unit(int);
void set_RBW(int); void set_RBW(int);
void set_switches(int); void set_switches(int);
void set_trigger(float);
//extern int setting_measurement; //extern int setting_measurement;
void self_test(int); void self_test(int);
//extern int setting_test; //extern int setting_test;

@ -207,6 +207,7 @@ VNA_SHELL_FUNCTION(cmd_o)
VNA_SHELL_FUNCTION(cmd_d) VNA_SHELL_FUNCTION(cmd_d)
{ {
(void) argc; (void) argc;
(void) argv;
// int32_t a = my_atoi(argv[0]); // int32_t a = my_atoi(argv[0]);
// setting.drive = a; // setting.drive = a;
} }

@ -47,6 +47,7 @@ void reset_settings(int m)
setting.measurement = M_OFF; setting.measurement = M_OFF;
setting.frequency_IF = 433800000; setting.frequency_IF = 433800000;
setting.offset = 0.0; setting.offset = 0.0;
setting.trigger = -150.0;
trace[TRACE_STORED].enabled = false; trace[TRACE_STORED].enabled = false;
trace[TRACE_TEMP].enabled = false; trace[TRACE_TEMP].enabled = false;
#ifdef __SPUR__ #ifdef __SPUR__
@ -452,6 +453,21 @@ void set_offset(float offset)
setting.offset = offset; setting.offset = offset;
dirty = true; dirty = true;
} }
void set_trigger(float trigger)
{
setting.trigger = trigger;
if (trigger != -150.0) {
for (int j = 0; j < setting._sweep_points; j++)
stored_t[j] = trigger;
trace[TRACE_STORED].enabled = true;
} else {
trace[TRACE_STORED].enabled = false;
}
dirty = true;
}
//int GetRefpos(void) { //int GetRefpos(void) {
// return (NGRIDY - get_trace_refpos(2)) * get_trace_scale(2); // return (NGRIDY - get_trace_refpos(2)) * get_trace_scale(2);
//} //}
@ -988,7 +1004,22 @@ again:
signal_path_loss = -5.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 = +7; // Loss in dB (+ is gain)
float subRSSI = SI4432_RSSI(lf, MODE_SELECT(setting.mode))+get_level_offset()+ setting.attenuate - signal_path_loss - setting.offset; int wait_for_trigger = false;
int old_actual_step_delay = actualStepDelay;
if (i == 0 && setting.frequency_step == 0 && setting.trigger != -150.0) { // wait for trigger to happen
wait_for_trigger = true;
actualStepDelay = 0; // fastest possible
}
float subRSSI;
wait:
subRSSI = SI4432_RSSI(lf, MODE_SELECT(setting.mode)) + get_level_offset()+ setting.attenuate - signal_path_loss - setting.offset;
if (wait_for_trigger) { // wait for trigger to happen
if (operation_requested && break_on_operation)
break; // abort
if (subRSSI < setting.trigger)
goto wait;
actualStepDelay = old_actual_step_delay; // Trigger happened, restore step delay
}
#ifdef __SPUR__ #ifdef __SPUR__
if (setting.spur == 1) { // First pass if (setting.spur == 1) { // First pass
spur_RSSI = subRSSI; spur_RSSI = subRSSI;

@ -349,7 +349,7 @@ void SI4432_Set_Frequency ( long Freq ) {
hbsel = 0; hbsel = 0;
} }
int sbsel = 1; int sbsel = 1;
int N = Freq / setting_frequency_10mhz; long N = Freq / setting_frequency_10mhz;
Carrier = ( 4 * ( Freq - N * setting_frequency_10mhz )) / 625; Carrier = ( 4 * ( Freq - N * setting_frequency_10mhz )) / 625;
int Freq_Band = ( N - 24 ) | ( hbsel << 5 ) | ( sbsel << 6 ); int Freq_Band = ( N - 24 ) | ( hbsel << 5 ) | ( sbsel << 6 );
#if 0 #if 0

@ -279,7 +279,7 @@ const uint16_t right_icons [] =
enum { enum {
KM_START=1, KM_STOP, KM_CENTER, KM_SPAN, KM_CW, KM_REFPOS, KM_SCALE, KM_ATTENUATION, KM_START=1, KM_STOP, KM_CENTER, KM_SPAN, KM_CW, KM_REFPOS, KM_SCALE, KM_ATTENUATION,
KM_ACTUALPOWER, KM_IF, KM_SAMPLETIME, KM_DRIVE, KM_LOWOUTLEVEL, KM_DECAY, KM_NOISE, KM_10MHZ, KM_REPEAT, KM_OFFSET, KM_ACTUALPOWER, KM_IF, KM_SAMPLETIME, KM_DRIVE, KM_LOWOUTLEVEL, KM_DECAY, KM_NOISE, KM_10MHZ, KM_REPEAT, KM_OFFSET, KM_TRIGGER,
}; };
@ -390,6 +390,7 @@ static const keypads_t * const keypads_mode_tbl[] = {
keypads_level, // KM_10MHz keypads_level, // KM_10MHz
keypads_level, // KM_REPEA keypads_level, // KM_REPEA
keypads_level, // KM_OFFSET keypads_level, // KM_OFFSET
keypads_level, // KM_TRIGGER
}; };
#ifdef __VNA__ #ifdef __VNA__
@ -400,7 +401,8 @@ static const char * const keypad_mode_label[] = {
#ifdef __SA__ #ifdef __SA__
static const char * const keypad_mode_label[] = { static const char * const keypad_mode_label[] = {
"error", "START", "STOP", "CENTER", "SPAN", "FREQ", "REFPOS", "SCALE", // 0-7 "error", "START", "STOP", "CENTER", "SPAN", "FREQ", "REFPOS", "SCALE", // 0-7
"\2ATTENUATE\0 0-31dB", "ACTUALPOWER", "IF", "SAMPLE TIME", "DRIVE", "LEVEL", "LEVEL", "LEVEL", "OFFSET" , "REPEATS", "OFFSET"// 8-17 "\2ATTENUATE\0 0-31dB", "ACTUALPOWER", "IF", "SAMPLE TIME", "DRIVE", "LEVEL", "LEVEL", "LEVEL", // 8-15
"OFFSET" , "REPEATS", "OFFSET", "TRIGGER"// 16-
}; };
#endif #endif
@ -1181,25 +1183,11 @@ const menuitem_t menu_marker_select[] = {
}; };
#if 0
static const menuitem_t menu_marker_sel[] = {
{ MT_CALLBACK, 0, "MARKER 1", menu_marker_sel_cb},
{ MT_CALLBACK, 0, "MARKER 2", menu_marker_sel_cb},
{ MT_CALLBACK, 0, "MARKER 3", menu_marker_sel_cb},
{ MT_CALLBACK, 0, "MARKER 4", menu_marker_sel_cb},
{ MT_CALLBACK, 0, "ALL OFF", menu_marker_sel_cb},
{ MT_SUBMENU, 0, "\2SEARCH\0MARKER", menu_marker_search},
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
{ MT_NONE, 0, NULL, NULL } // sentinel
};
#endif
const menuitem_t menu_marker_ops[] = { const menuitem_t menu_marker_ops[] = {
{ MT_CALLBACK, ST_START, S_RARROW"START", menu_marker_op_cb }, { MT_CALLBACK, ST_START, S_RARROW"START", menu_marker_op_cb },
{ MT_CALLBACK, ST_STOP, S_RARROW"STOP", menu_marker_op_cb }, { MT_CALLBACK, ST_STOP, S_RARROW"STOP", menu_marker_op_cb },
{ MT_CALLBACK, ST_CENTER, S_RARROW"CENTER", menu_marker_op_cb }, { MT_CALLBACK, ST_CENTER, S_RARROW"CENTER", menu_marker_op_cb },
{ MT_CALLBACK, ST_SPAN, S_RARROW"SPAN", menu_marker_op_cb }, { MT_CALLBACK, ST_SPAN, S_RARROW"SPAN", menu_marker_op_cb },
// { MT_CALLBACK, 0, S_RARROW"EDELAY", menu_marker_op_cb },
{ MT_CANCEL, 0, S_LARROW" BACK", NULL }, { MT_CANCEL, 0, S_LARROW" BACK", NULL },
{ MT_NONE, 0, NULL, NULL } // sentinel { MT_NONE, 0, NULL, NULL } // sentinel
}; };
@ -1317,8 +1305,6 @@ static const menuitem_t menu_config[] = {
{ MT_FORM | MT_CALLBACK, 0, "SELF TEST", menu_config_cb}, { MT_FORM | MT_CALLBACK, 0, "SELF TEST", menu_config_cb},
{ MT_FORM | MT_SUBMENU, 0, "CALIBRATE", menu_calibrate}, { MT_FORM | MT_SUBMENU, 0, "CALIBRATE", menu_calibrate},
{ MT_FORM | MT_CALLBACK, 0, "VERSION", menu_config_cb}, { MT_FORM | MT_CALLBACK, 0, "VERSION", menu_config_cb},
// { MT_SUBMENU, 0, "SETTINGS", menu_settings},
// { MT_SUBMENU, 0, "RBW", menu_rbw},
{ MT_FORM | MT_SUBMENU, 0, S_RARROW"DFU", menu_dfu}, { MT_FORM | MT_SUBMENU, 0, S_RARROW"DFU", menu_dfu},
{ MT_FORM | MT_CANCEL, 0, S_LARROW" BACK", NULL }, { MT_FORM | MT_CANCEL, 0, S_LARROW" BACK", NULL },
{ MT_FORM | MT_NONE, 0, NULL, NULL } // sentinel { MT_FORM | MT_NONE, 0, NULL, NULL } // sentinel
@ -1343,8 +1329,6 @@ static const menuitem_t menu_acquirehigh[] = {
static const menuitem_t menu_display[] = { static const menuitem_t menu_display[] = {
{ MT_CALLBACK,0, "\2PAUSE\0SWEEP", menu_pause_cb}, { MT_CALLBACK,0, "\2PAUSE\0SWEEP", menu_pause_cb},
// { MT_SUBMENU, 0, "\2REF\0LEVEL", menu_reflevel},
// { MT_SUBMENU, 0, "\2SCALE/\0DIV",menu_dBper},
{ MT_CALLBACK,0, "STORE", menu_storage_cb}, { MT_CALLBACK,0, "STORE", menu_storage_cb},
{ MT_CALLBACK,1, "CLEAR", menu_storage_cb}, { MT_CALLBACK,1, "CLEAR", menu_storage_cb},
{ MT_CALLBACK,2, "SUBTRACT", menu_storage_cb}, { MT_CALLBACK,2, "SUBTRACT", menu_storage_cb},
@ -1358,8 +1342,6 @@ static const menuitem_t menu_display[] = {
static const menuitem_t menu_displayhigh[] = { static const menuitem_t menu_displayhigh[] = {
{ MT_CALLBACK,0, "\2PAUSE\0SWEEP", menu_pause_cb}, { MT_CALLBACK,0, "\2PAUSE\0SWEEP", menu_pause_cb},
// { MT_SUBMENU, 0, "\2REF\0LEVEL", menu_reflevel},
// { MT_SUBMENU, 0, "\2SCALE/\0DIV",menu_dBper},
{ MT_CALLBACK,0, "STORE", menu_storage_cb}, { MT_CALLBACK,0, "STORE", menu_storage_cb},
{ MT_CALLBACK,1, "CLEAR", menu_storage_cb}, { MT_CALLBACK,1, "CLEAR", menu_storage_cb},
{ MT_CALLBACK,2, "SUBTRACT", menu_storage_cb}, { MT_CALLBACK,2, "SUBTRACT", menu_storage_cb},
@ -1389,6 +1371,7 @@ static const menuitem_t menu_levelhigh[] = {
{ MT_SUBMENU,0, "AVER", menu_average}, { MT_SUBMENU,0, "AVER", menu_average},
{ MT_SUBMENU, 0, "UNIT", menu_unit}, { MT_SUBMENU, 0, "UNIT", menu_unit},
{ MT_KEYPAD, KM_OFFSET, "\2EXTERN\0AMP", NULL}, { MT_KEYPAD, KM_OFFSET, "\2EXTERN\0AMP", NULL},
{ MT_KEYPAD, KM_TRIGGER, "\2TRIGGER\0LEVEL", NULL},
{ MT_CANCEL, 0, S_LARROW" BACK",NULL }, { MT_CANCEL, 0, S_LARROW" BACK",NULL },
{ MT_NONE, 0, NULL, NULL } // sentinel { MT_NONE, 0, NULL, NULL } // sentinel
}; };
@ -1401,6 +1384,7 @@ static const menuitem_t menu_level[] = {
{ MT_SUBMENU,0, "AVER", menu_average}, { MT_SUBMENU,0, "AVER", menu_average},
{ MT_SUBMENU, 0, "UNIT", menu_unit}, { MT_SUBMENU, 0, "UNIT", menu_unit},
{ MT_KEYPAD, KM_OFFSET, "\2EXTERN\0AMP", NULL}, { MT_KEYPAD, KM_OFFSET, "\2EXTERN\0AMP", NULL},
{ MT_KEYPAD, KM_TRIGGER, "\2TRIGGER\0LEVEL", NULL},
{ MT_CANCEL, 0, S_LARROW" BACK",NULL }, { MT_CANCEL, 0, S_LARROW" BACK",NULL },
{ MT_NONE, 0, NULL, NULL } // sentinel { MT_NONE, 0, NULL, NULL } // sentinel
}; };
@ -1435,7 +1419,6 @@ static const menuitem_t menu_mode[] = {
// { MT_CANCEL, 0, S_LARROW" BACK", NULL }, // { MT_CANCEL, 0, S_LARROW" BACK", NULL },
{ MT_FORM | MT_NONE, 0, NULL, NULL } // sentinel { MT_FORM | MT_NONE, 0, NULL, NULL } // sentinel
}; };
#if 1
#ifdef __ULTRA__ #ifdef __ULTRA__
const menuitem_t menu_topultra[] = { const menuitem_t menu_topultra[] = {
@ -1477,32 +1460,6 @@ const menuitem_t menu_tophigh[] = {
{ MT_NONE, 0, NULL, NULL } // sentinel, { MT_NONE, 0, NULL, NULL } // sentinel,
// MENUITEM_CLOSE, // MENUITEM_CLOSE,
}; };
#else
const menuitem_t menu_top[] = {
{ MT_SUBMENU, 0, "ACQUIRE", menu_acquire},
{ MT_SUBMENU, 0, "FREQ", menu_stimulus},
{ MT_SUBMENU, 0, "DISPLAY", menu_display},
{ MT_SUBMENU, 0, "MARKER", menu_marker},
{ MT_SUBMENU, 0, "MEASURE", menu_measure},
{ MT_SUBMENU, 0, "SETTINGS", menu_settings},
{ MT_CANCEL, 0, S_LARROW" MODE",NULL},
{ MT_NONE, 0, NULL, NULL } // sentinel,
// MENUITEM_CLOSE,
};
const menuitem_t menu_tophigh[] =
{
{ MT_SUBMENU, 0, "ACQUIRE", menu_acquirehigh},
{ MT_SUBMENU, 0, "FREQ", menu_stimulus},
{ MT_SUBMENU, 0, "DISPLAY", menu_display},
{ MT_SUBMENU, 0, "MARKER", menu_marker},
{ MT_SUBMENU, 0, "MEASURE", menu_measure},
{ MT_SUBMENU, 0, "SETTINGS", menu_settings},
{ MT_CANCEL, 0, S_LARROW" MODE",NULL},
{ MT_NONE, 0, NULL, NULL } // sentinel,
// MENUITEM_CLOSE,
};
#endif
// ===[MENU DEFINITION END]====================================================== // ===[MENU DEFINITION END]======================================================
#define ACTIVE_COLOR RGBHEX(0x007FFF) #define ACTIVE_COLOR RGBHEX(0x007FFF)
@ -1735,6 +1692,10 @@ static void fetch_numeric_target(void)
uistat.value = setting.offset; uistat.value = setting.offset;
plot_printf(uistat.text, sizeof uistat.text, "%fdB", uistat.value); plot_printf(uistat.text, sizeof uistat.text, "%fdB", uistat.value);
break; break;
case KM_TRIGGER:
uistat.value = setting.trigger;
plot_printf(uistat.text, sizeof uistat.text, "%fdB", uistat.value);
break;
} }
@ -1814,5 +1775,8 @@ set_numeric_value(void)
case KM_OFFSET: case KM_OFFSET:
set_offset(uistat.value); set_offset(uistat.value);
break; break;
case KM_TRIGGER:
set_trigger(uistat.value);
break;
} }
} }

Loading…
Cancel
Save

Powered by TurnKey Linux.