mirror of
https://github.com/ttrftech/NanoVNA.git
synced 2025-12-06 03:31:59 +01:00
add freq center/span
This commit is contained in:
parent
8014d3442e
commit
52dce51f31
104
main.c
104
main.c
|
|
@ -453,35 +453,82 @@ void
|
|||
update_frequencies(void)
|
||||
{
|
||||
int i;
|
||||
int32_t span = (freq_stop - freq_start)/100;
|
||||
int32_t span;
|
||||
int32_t start;
|
||||
if (freq_stop > 0) {
|
||||
start = freq_start;
|
||||
span = (freq_stop - freq_start)/100;
|
||||
} else {
|
||||
span = -freq_stop / 100;
|
||||
start = freq_start - span/2;
|
||||
}
|
||||
|
||||
for (i = 0; i < sweep_points; i++)
|
||||
frequencies[i] = freq_start + span * i / (sweep_points - 1) * 100;
|
||||
frequencies[i] = start + span * i / (sweep_points - 1) * 100;
|
||||
|
||||
// set grid layout
|
||||
set_sweep(freq_start, freq_stop);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
freq_mode_startstop(void)
|
||||
{
|
||||
if (freq_stop <= 0) {
|
||||
int center = freq_start;
|
||||
int span = -freq_stop;
|
||||
freq_start = center - span/2;
|
||||
freq_stop = center + span/2;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
freq_mode_centerspan(void)
|
||||
{
|
||||
if (freq_stop > 0) {
|
||||
int start = freq_start;
|
||||
int stop = freq_stop;
|
||||
freq_start = (start + stop)/2; // center
|
||||
freq_stop = -(stop - start); // span
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
set_sweep_frequency(int type, int frequency)
|
||||
{
|
||||
switch (type) {
|
||||
case ST_START:
|
||||
ensure_edit_config();
|
||||
freq_mode_startstop();
|
||||
if (freq_start != frequency) {
|
||||
ensure_edit_config();
|
||||
freq_start = frequency;
|
||||
update_frequencies();
|
||||
}
|
||||
break;
|
||||
case ST_STOP:
|
||||
if (freq_start != frequency) {
|
||||
ensure_edit_config();
|
||||
ensure_edit_config();
|
||||
freq_mode_startstop();
|
||||
if (freq_stop != frequency) {
|
||||
freq_stop = frequency;
|
||||
update_frequencies();
|
||||
}
|
||||
break;
|
||||
case ST_CENTER:
|
||||
ensure_edit_config();
|
||||
freq_mode_centerspan();
|
||||
if (freq_start != frequency) {
|
||||
freq_start = frequency;
|
||||
update_frequencies();
|
||||
}
|
||||
break;
|
||||
case ST_SPAN:
|
||||
ensure_edit_config();
|
||||
freq_mode_centerspan();
|
||||
if (freq_stop != -frequency) {
|
||||
freq_stop = -frequency;
|
||||
update_frequencies();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -495,35 +542,34 @@ static void cmd_sweep(BaseSequentialStream *chp, int argc, char *argv[])
|
|||
chprintf(chp, "usage: sweep {start(Hz)} [stop] [points]\r\n");
|
||||
return;
|
||||
}
|
||||
if (argc >= 1) {
|
||||
ensure_edit_config();
|
||||
int32_t x = atoi(argv[0]);
|
||||
if (x < 300000) {
|
||||
chprintf(chp, "bad parameter\r\n");
|
||||
if (argc >= 2) {
|
||||
if (strcmp(argv[0], "start") == 0) {
|
||||
int32_t value = atoi(argv[1]);
|
||||
set_sweep_frequency(ST_START, value);
|
||||
return;
|
||||
} else if (strcmp(argv[0], "stop") == 0) {
|
||||
int32_t value = atoi(argv[1]);
|
||||
set_sweep_frequency(ST_STOP, value);
|
||||
return;
|
||||
} else if (strcmp(argv[0], "center") == 0) {
|
||||
int32_t value = atoi(argv[1]);
|
||||
set_sweep_frequency(ST_CENTER, value);
|
||||
return;
|
||||
} else if (strcmp(argv[0], "span") == 0) {
|
||||
int32_t value = atoi(argv[1]);
|
||||
set_sweep_frequency(ST_SPAN, value);
|
||||
return;
|
||||
}
|
||||
freq_start = x;
|
||||
}
|
||||
|
||||
if (argc >= 1) {
|
||||
int32_t value = atoi(argv[0]);
|
||||
set_sweep_frequency(ST_START, value);
|
||||
}
|
||||
if (argc >= 2) {
|
||||
int32_t x = atoi(argv[1]);
|
||||
if (x < 300000 || x <= freq_start) {
|
||||
chprintf(chp, "bad parameter\r\n");
|
||||
return;
|
||||
}
|
||||
freq_stop = x;
|
||||
int32_t value = atoi(argv[1]);
|
||||
set_sweep_frequency(ST_STOP, value);
|
||||
}
|
||||
#if 0
|
||||
if (argc >= 3) {
|
||||
int32_t x = atoi(argv[2]);
|
||||
if (x < 1 || x > 1601) {
|
||||
chprintf(chp, "bad parameter\r\n");
|
||||
return;
|
||||
}
|
||||
sweep_points = x;
|
||||
}
|
||||
#endif
|
||||
|
||||
update_frequencies();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
47
plot.c
47
plot.c
|
|
@ -74,9 +74,15 @@ void set_sweep(int32_t start, int stop)
|
|||
{
|
||||
int32_t gdigit = 100000000;
|
||||
int32_t grid;
|
||||
fstart = start;
|
||||
fstop = stop;
|
||||
fspan = stop - start;
|
||||
if (stop > 0) {
|
||||
fstart = start;
|
||||
fstop = stop;
|
||||
fspan = stop - start;
|
||||
} else {
|
||||
fspan = -stop;
|
||||
fstart = start;
|
||||
fstop = stop;
|
||||
}
|
||||
|
||||
while (gdigit > 100) {
|
||||
grid = 5 * gdigit;
|
||||
|
|
@ -1234,16 +1240,31 @@ void
|
|||
draw_frequencies(void)
|
||||
{
|
||||
char buf[24];
|
||||
chsnprintf(buf, 24, "START %d.%03d %03d MHz ",
|
||||
(int)(fstart / 1000000),
|
||||
(int)((fstart / 1000) % 1000),
|
||||
(int)(fstart % 1000));
|
||||
ili9341_drawstring_5x7(buf, OFFSETX, 233, 0xffff, 0x0000);
|
||||
chsnprintf(buf, 24, "STOP %d.%03d %03d MHz",
|
||||
(int)(fstop / 1000000),
|
||||
(int)((fstop / 1000) % 1000),
|
||||
(int)(fstop % 1000));
|
||||
ili9341_drawstring_5x7(buf, 205, 233, 0xffff, 0x0000);
|
||||
if (fstop > 0) {
|
||||
chsnprintf(buf, 24, "START %d.%03d %03d MHz ",
|
||||
(int)(fstart / 1000000),
|
||||
(int)((fstart / 1000) % 1000),
|
||||
(int)(fstart % 1000));
|
||||
ili9341_drawstring_5x7(buf, OFFSETX, 233, 0xffff, 0x0000);
|
||||
chsnprintf(buf, 24, "STOP %d.%03d %03d MHz",
|
||||
(int)(fstop / 1000000),
|
||||
(int)((fstop / 1000) % 1000),
|
||||
(int)(fstop % 1000));
|
||||
ili9341_drawstring_5x7(buf, 205, 233, 0xffff, 0x0000);
|
||||
} else {
|
||||
int fcenter = fstart;
|
||||
int fspan = -fstop;
|
||||
chsnprintf(buf, 24, "CENTER %d.%03d %03d MHz ",
|
||||
(int)(fcenter / 1000000),
|
||||
(int)((fcenter / 1000) % 1000),
|
||||
(int)(fcenter % 1000));
|
||||
ili9341_drawstring_5x7(buf, OFFSETX, 233, 0xffff, 0x0000);
|
||||
chsnprintf(buf, 24, "SPAN %d.%03d %03d MHz",
|
||||
(int)(fspan / 1000000),
|
||||
(int)((fspan / 1000) % 1000),
|
||||
(int)(fspan % 1000));
|
||||
ili9341_drawstring_5x7(buf, 205, 233, 0xffff, 0x0000);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
4
ui.c
4
ui.c
|
|
@ -772,10 +772,12 @@ ui_process_keypad(void)
|
|||
} else if (c <= 9 && i < NUMINPUT_LEN)
|
||||
buf[i++] = '0' + c;
|
||||
else if (c == KP_PERIOD && i < NUMINPUT_LEN) {
|
||||
// check period in former input
|
||||
int j;
|
||||
for (j = 0; j < i && buf[j] != '.'; j++)
|
||||
;
|
||||
if (buf[j] != '.')
|
||||
// append period if there are no period
|
||||
if (i == j)
|
||||
buf[i++] = '.';
|
||||
} else if (c == KP_BS) {
|
||||
if (i == 0) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue