Задать вопрос
@A2D2

Arduino, память может заполнится так, чтобы скетч не смог работать?

1)Например, если написать скетч который выводит числа от 1 до бесконечности, то сколько может продолжатся эта операция?
2)Любые ли скетчи будут работать беспрерывно?
3)Монитор порта имеет что-то общее у памятью? Например если вывести множество чисел, то где эти числа хранятся?
  • Вопрос задан
  • 1299 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
1. переполнится счетчик.
2. как посмотреть на этот вопрос - можно в основном цикле проверять условие, которое отработает только 1 раз (или никогда) - но это условие будет проверяться беспрерывно.
3. нет. Монитор порта показывает Вам, что пришло от контроллера в порт. То, что Вы видите в мониторе - хранится уже на компьютере.
Ответ написан
1) Unsigned long используется для хранения положительных целых чисел в диапазоне от 0 до 4,294,967,295 (2^32 - 1) и занимает 32 бита (4 байта) в памяти. Это число будет постоянно занимать 4байта в микроконтроллере, ничего не переполнится до макс значения.
2) Да, если вы не сделаете иначе в коде программы. :)
3) Монитор порта приложение, запущенное на вашем ПК, занимает оперативную память вашего же ПК.
Ответ написан
Ну, и отвечая на вопрос в заголовке, МОЖЕТ! Например, переполнение стека.
Ответ написан
svd71
@svd71
Любая работа со стеком может привести к утечкам памяти, какмследствию сбоя исполняемого кода и чаще всего автоматического запуска кода с начала.
Что может приводить к переполнению стека:
- передача кучи параметров через стек при вызове функций;
- неправильное использование вызовов прерываний или функций: когда функция или прерывания до окончания выполнения вызывается повторно при этом сохраняя регистры в стеке;
- неумелое распределение или большое количество переменных;
- неумелая работа с указателями.
Каждый пункт сам по себе отдельная тема для разговора. Поэтому цитировать выдержки из релизноутов думаю не стоит.

Для детектирования подобных проблем нужно некоторое знание ассемблера, чтоб понять, как компилятор строит исполняемый код и как будет с ним работать. Можно ли вести отладку таких вещей? Можно. Достаточно воспользоваться эмуляторами. Я использую только два: atmel studio и ISIS. И мне их достаточно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы