Я пытаюсь установить связь между двумя радиочастотными передатчиками на платах Arduino Uno.
При запуске цикла while () в верхней части приведенного ниже фрагмента кода использование динамической памяти увеличивается до 205% (4,2 КБ), если я использую оператор '=='.
Однако, при использовании единственного «=» в качестве оператора присваивания в цикле, эта проблема не возникает (очевидно, код не функционирует должным образом, когда это имеет место).
Вот где это становится интересным. Полное удаление цикла while () и его содержимого не уменьшает использование динамической памяти. Так что мне кажется, что использование оператора присваивания в цикле фактически уменьшает использование динамической памяти всего эскиза (до 15% / 325 байт).
Как ни странно, это не проблема утечки, потому что даже полное удаление содержимого цикла while () не решает никаких проблем.
Я довольно новичок в использовании C ++ и Arduino, но предположим, что это может быть связано с присваиванием глобальных переменных ...
Любая помощь в поиске и устранении неисправностей, почему использование динамической памяти так высоко, будет высоко ценится!
Я кодирую в Arduino IDE (v1.8.5), пишу в Arduino Uno (чип ATMega328).
while (loop_var == true){
if (radio.sendWithRetry(TONODEID, &connection_checker, sizeof(connection_checker))){
if (tick == 0) {
Serial.print(F("Node ")); Serial.print(TONODEID); Serial.print(F(" detected. \n"));
tick = 1;
}
loop_var = false;
}
else {
while (tock == 0){
Serial.print(F("Node ")); Serial.print(TONODEID);
Serial.print(F(" - No ACK received, retrying... \n"));
tock++;
}
loop_var = true;
}