Спасибо всем за помощь!
Работа постепенно идет. Столкнулся с небольшим непонятным моментом для меня. Исходя из таблицы:
https://radiostancii.com.ua/razreshenny ... 0%BE%D0%B9.

после запятой должно быть 5 символов. В то же время в даташитах на sa818 я не нашел какой-то конкретики на этот счет. Единственное - это примеры из
SA818 programming manual.pdf:
3.2) Group parameters configuration
Format:AT+DMOSETGROUP=BW,TX_F,RX_F,Tx_subaudio,SQ,Rx_subaudio
Sample 1:AT+DMOSETGROUP=0,415.1250,415.1250,0012,4, 0013
после точки идет всего 4 разряда. Может вы мне подскажите как правильно, 4 разряда после запятой, или 5?
Исходя из даташита на rda1846s переключение каналов возможно с шагом 12.5KHz и 25KHz, где 12.5K - это 5 разрядов после запятой.... А нет, 12.5K - это как раз 4 разряда.
А то у меня ошибку выдает, и я не могу понять почему.
Отправляю команду:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ответ от модуля:
AT+DMOCONNECT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +DMOCONNECT:0
AT+DMOSETGROUP=1,433.35000,433.35000,0000,2,0000 . . . . . +DMOSETGROUP:1
AT+DMOSETGROUP=1,433.35000,433.35000,0000,2,0000 . . . . . +DMOERROR
AT+DMOSETVOLUME=4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <0>:+DMOSETVOLUME:0
AT+SETFILTER=0,0,0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +DMOSETFILTER:0
AT+SETTAIL=1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .+DMOSETTAIL:0
Исходя из логики
SA818 programming manual.pdf:
0 - означает что команда принята, и ошибок нет,
1 - означает что есть ошибка. Получается
+DMOSETGROUP:1 - ошибка?
Вообще по команде DMOSETGROUP нет никакого описания относительно ошибок. Даже не знаю от чего отталкиваться.
Причем если повторно отправить команду, то в ответ получаю "
+DMOERROR" - этого ответа тоже нигде не могу найти...
Может вы подскажите, почему модуль выдает ошибку?
Вот так выглядит функция отправки настроек:
Код: Выделить всё
bool SA818::applyConfig() {
char buffer [50];
int cmdsize = 15;
char verif[cmdsize+1] = {'+','D','M','O','S','E','T','G','R','O','U','P',':','0','\r','\n'};
char buff[cmdsize*2];
int i = 0;
sprintf(buffer, "AT+DMOSETGROUP=%d,%s,%s,%04d,%d,%04d\r\n", _CONF_bandwidth, _CONF_TXfreq, _CONF_RXfreq, _CONF_TXCTCSS, _CONF_squeltch, _CONF_RXCTCSS);
Serial.print(buffer);
Serial.flush();
long start = millis();
while((start + SA818_CONTACT_TIMEOUT) > millis()) {
if(i == 0) {
buff[i] = Serial.read();
}
if(buff[i] == verif[0] || i>0) {
delay((SA818_SERBPS / 1000) * 2 ); //Makes sure that the bit has time to come. Espetially that the implementation is wierd
i++;
buff[i] = Serial.read();
if(buff[i] != verif[i]) {
return false;
}
if(i >= cmdsize) {
return true;
}
}
}
return (start + SA818_CONTACT_TIMEOUT) < millis();
}
Добавлено after 1 hour 4 minutes 19 seconds:
Только что перепроверил. Попробовал отправить команду (4 знака после запятой):
AT+DMOSETGROUP=1,
433.3500,
433.3500,0000,2,0000
в ответ получил:
+DMOSETGROUP:0
Получается модулю частоту можно задать только с 4 знаками после запятой.
Вопрос в том, как быть с PMR частотами, где есть 5й знак после запятой?
P.S. С переключением каналов с шагом 12.5KHz и 25KHz я напутал, 12.5KHz как раз входит в состав 4-х символов после запятой.