Если у меня есть Arduino, могу ли я внезапно включать и выключать питание, не повреждая его? Если я разрабатываю продукт с переключателем включения / выключения, нужно ли включать задержку перед выключением питания, чтобы микроконтроллер мог выполнить какое-то чистое отключение? Или можно просто подключить SPST-переключатель к линии питания Arduino?
(Разрабатывая продукт, я имею в виду использование ATmega с кодом Arduino независимо на специальной плате с другими компонентами.)
Изменить: под Arduino я просто имею в виду мигание загрузчика Arduino, чтобы я мог программировать в Arduino вместо AVR. Я хочу использовать чип Atmel atmega328P. Мне не нужно использовать EEPROM.
Ответы:
Да, безопасно отключить Arduino.
Ну, в основном, безопасно.
Процессоры, используемые в различных Arduinos, имеют три типа памяти:
Flash - где хранится ваша программа. Ваша программа может читать отсюда, но не может писать.
RAM - где хранятся переменные вашей программы во время работы программы. Данные здесь исчезают, когда вы выключаете Arduino. Ваша программа читает и пишет здесь постоянно.
EEPROM - Где ваша программа может хранить вещи, которые понадобятся ей при следующем запуске. Обычно вещи, которые меняются редко, но нужны каждый раз, когда запускается программа. Как данные калибровки для датчика.
Большинство программ используют только Flash и RAM. Вы можете включать и выключать Arduino в любое время с помощью этих программ.
Если ваша программа пишет в EEPROM, то отключение питания во время записи в EEPROM может повредить данные там.
Как это влияет на вашу программу, зависит от данных.
Если это повредит данные калибровки для датчика, вы получите плохие измерения для того, что датчик обнаруживает.
Если вы напишите контрольные суммы с данными EEPROM, вы сможете обнаружить повреждение, и ваша программа может завершить работу вместо использования неверных данных.
Вы, конечно, будете знать, пишет ли ваша программа в EEPROM - вы должны загрузить отдельную библиотеку и использовать специальные команды для чтения и записи в область EEPROM.
Опасность действительно только в тот короткий момент, когда вы пишете в EEPROM. Поскольку это происходит редко (и обычно только в контролируемых условиях), также будет редко повредить данные EEPROM.
Резюме:
Вы можете включать и выключать Arduino по своему усмотрению без опасности, если только вы не используете EEPROM - и даже в этом случае вам это сойдет с рук в большинстве случаев.
источник
Да, вы можете быстро отключить питание, не повреждая его.
Единственная причина, по которой я вижу задержку отключения питания, - это безопасность или функциональность внешних периферийных устройств.
Например, при отключении питания необходимо сохранить данные в энергонезависимой памяти. Или при отключении питания, необходимо убедиться, что механизм находится в безопасном положении при отключении питания.
Это потребовало бы мониторинга питания и наличия достаточной емкости удержания, чтобы запустить процессор и все функции, которые требовалось выполнить.
источник
Термин Arduino относится к очень широкому спектру плат микроконтроллеров, которые имеют различные микросхемы, и эффект потери мощности, таким образом, варьируется. Поэтому я бы рекомендовал вам указать точный номер детали используемого чипа ATmega. Но, в целом, для таких чипов, как ATmega328, справедливо следующее.
Да, вы можете отключить питание Arduino, не повредив и не повредив ничего, но имейте в виду следующее:
Если ваш код использует EEPROM, то флэш-память может быть повреждена, или данные могут не сохраниться точно, когда устройство мигает данными и отключается питание.
Единственный способ, которым внезапная потеря питания может нанести вред помимо EEPROM, - это устройства, используемые с Arduino (например, SD-карта).
источник