Компилятор Arduino показывает различное значение памяти sram
У меня есть этот код, который показывает доступную память sram
int freeRam()
{
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
void setup()
{
Serial.begin(9600);
Serial.println(freeRam());
}
void loop()
{
}
Компилятор arduino показывает другое значение.
- компилятор arduino показывает 1856 байт и
- Последовательный порт показывает 1850 байт
Каково правильное значение?
@Diego, 👍1
Обсуждение1 ответ
Лучший ответ:
▲ 3
Оба варианта верны в зависимости от того, какое значение вас интересует. Компилятор сообщает вам размер глобальных переменных. Ваш код сообщает вам, сколько памяти свободно в любой момент времени. Для выполнения кода требуется память (чаще всего стек растет для размещения локальных переменных и "фрейма стека" с копией регистров процессора в нем каждый раз, когда вы вызываете функцию).
Другими словами, компилятор сообщает вам, сколько в вашем стакане, когда бармен протягивает его вам, но ваш код сообщает вам, сколько в нем, как только вы сделаете глоток.
,
@Majenko
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
вероятно , и то , и другое .., @jsotola
Принимали ли вы во внимание используемое пространство в стеке?, @the busybee