Извините, если это глупый вопрос, но я не смог найти ответ.
Некоторое время я задавался вопросом, будет ли Arduino (или вообще любой другой микроконтроллер) счастливым, если код легок и ему не нужно выполнять слишком много операций. Разве код, который имеет слишком много if, слишком много циклов и все виды сложных вычислений, изнашивает Arduino раньше, чем код, который просто мигает светодиодом?
arduino-uno
hardware
code-optimization
ahmadx87
источник
источник
Ответы:
Нет, код не «изнашивает» MCU. В целом, независимо от того, что вы делаете, выполняется примерно один и тот же уровень активности. Даже
delay()
делает много работы, пока он "на холостом ходу".Есть команды, чтобы заставить процессор делать меньше - перевести его в режим IDLE или SLEEP - но они используются для экономии энергии, а не для уменьшения «износа» MCU.
Конечно, есть определенные вещи, которые имеют ограниченный срок службы, и вы можете использовать их только ограниченное количество раз - такие как запись в EEPROM и запись во флэш-память - так что вы не хотите делать это все время. Кроме этого, нет, независимо от того, что вы делаете, это не изнашивает MCU.
источник
Это не. Что ж, он может медленно изнашиваться, если вы управляете им как 20 лет .... (как и большинство других физических продуктов)? По крайней мере, это зависит не от сложности кода, а от того, сколько операций записи выполняется в одном и том же разделе памяти. Более того, когда он изнашивается, он просто становится кирпичным и не становится более простым кодом, таким как мигание светодиода.
Arduino (Uno) имеет три части памяти. SRAM, FLASH и EEPROM. SRAM больше похож на логический транзисторный вентиль. Это не изнашивается, храня переменные. FLASH и EEPROM состоят из плавающих ворот. Они медленно изнашиваются, когда вы пишете новые данные. Из таблицы данных микроконтроллера Ateml говорится:
Тем не менее, флэш-память является пространством для выполнения кода. Операция записи не выполняется во время работы Arduino. Вы пишете флэш-память только при загрузке нового кода. Таким образом, он изнашивается, когда вы загружаете код по крайней мере 10000 раз.
Если вы действительно хотите, вы можете сделать специальный код для самопрограммирования флэш-памяти, обычно с целью сохранения переменных данных, когда Arduino выключен. Когда вы пишете такую программу, она будет медленно изнашиваться, потому что флэш-память не имеет большой выносливости при записи. Вот почему вам будет предложено использовать EEPROM с гораздо большей продолжительностью жизни, если вы хотите сохранить данные, даже когда Arduino выключен.
Подводя итог, он будет изнашиваться при перезаписи памяти FLASH или EEPROM, а не при выполнении кода.
источник
Для любителей:
Единственной проблемой, связанной с программным обеспечением, ограничивающим жизнь, может быть запись во флэш-память так быстро, как вы можете изнутри программы. Но немногие программы используют переменные, которые должны выживать при таких событиях, как замена батарей.
Единственная проблема, связанная с ограничением срока службы оборудования, - это чрезмерная нагрузка на выходы нагрузками с низким сопротивлением (лампочки накаливания), индуктивными нагрузками (например, механическими реле с прямым приводом). Но вопрос только в программном обеспечении.
источник
Другие ответы великолепны, но есть одно маленькое исключение.
Сегнетоэлектрическое ОЗУ (FRAM) - это форма памяти, которая сочетает в себе энергонезависимость флэш-памяти и EEPROM, возможность записи SRAM и плотность DRAM.
Однако операции чтения в FRAM разрушительны для данных, хранящихся в FRAM, а операции записи разрушительны для самой конструкции FRAM (и поскольку данные уничтожаются при чтении, они должны каждый раз записываться обратно). Если ваш код находится во FRAM, то при его запуске MCU со временем изнашивается. Но, учитывая, что FRAM обладает стойкостью записи в миллионах миллиардов, маловероятно, что MCU выйдет из строя из-за FRAM в течение срока службы устройства.
Примеры MCU, которые используют FRAM, включают в себя линию MSP430FRxx от TI .
источник
Вероятно, нет ... Микросхема Atmel со временем может нагреваться (даже задержка не помешает этому), однако, если у нее есть возможность выпустить тепло, я не вижу проблем. Но в основном только разгон может вызвать действительно серьезные проблемы, или использование Arduino в полностью закрытой коробке или в жаркой среде.
Для сравнения: многие компьютеры работают годами без выключения, Atmel (чип) в этом смысле не имеет никакого значения, поскольку выделяемое тепло может быть сброшено.
Вы можете прочитать больше о тепловом датчике в Atmels здесь: Внутренний температурный датчик
источник
delay
использование одного и того же количества вычислительной мощности.delay
от процессора. Это имеет свою стоимость, конечно :)