ai: команда SF <Гц> — частота синусоиды (защита от алиасинга f<=f_s/2); W S показывает частоту синуса
This commit is contained in:
@@ -51,6 +51,7 @@
|
||||
*
|
||||
* Протокол команд (Serial, 115200, строка + \n):
|
||||
* F <Гц> — установить частоту (1..500000)
|
||||
* SF <Гц> — частота синусоиды (1..SAMPLE_HZ/2, защита от алиасинга)
|
||||
* W Q | W S — режим: Q — прямоугольник, S — синус
|
||||
* D <0..255> — скважность прямоугольника (128 = 50 %)
|
||||
* M <0..127> — амплитуда синуса (127 = максимум)
|
||||
@@ -277,6 +278,14 @@ static void handleLine(char *line) {
|
||||
char *a = strtok(nullptr, " \t");
|
||||
if (a) setFrequency((uint32_t)strtoul(a, nullptr, 10));
|
||||
Serial.print("OK F "); Serial.println(g_freq);
|
||||
} else if (!strcasecmp(cmd, "SF")) {
|
||||
// частота синусоиды: с защитой от алиасинга (f <= SAMPLE_HZ/2)
|
||||
char *a = strtok(nullptr, " \t");
|
||||
uint32_t hz = a ? (uint32_t)strtoul(a, nullptr, 10) : g_freq;
|
||||
if (hz < 1) hz = 1;
|
||||
if (hz > SAMPLE_HZ / 2) hz = SAMPLE_HZ / 2;
|
||||
setFrequency(hz);
|
||||
Serial.print("OK SF "); Serial.println(g_freq);
|
||||
} else if (!strcasecmp(cmd, "W")) {
|
||||
char *a = strtok(nullptr, " \t");
|
||||
if (a) setMode((!strcasecmp(a, "S")) ? MODE_SINE : MODE_SQUARE);
|
||||
|
||||
Reference in New Issue
Block a user