Кнопка сброса работает без питания?

Я работаю над проектом, и мой отец неосознанно нажал кнопку сброса на моей плате Arduino. Если он не был подключен к какому-либо источнику питания или компьютеру, он все равно сбрасывался? Нужно ли мне снова загружать свой код на плату? Или для сброса платы требуется питание?

, 👍0

Обсуждение

Плата была выключена? Кнопка сброса ничего не делает, если к плате не подключено питание., @James Waldby - jwpat7


2 ответа


9

Сброс на Arduino ничего не стирает. Он просто перезапускает выполнение уже загруженной программы. Кроме того, AVR должен быть включен, чтобы он понял, был ли он сброшен.

Каждый раз, когда вы включаете Arduino, он автоматически запускает выполнение кода с начала программы во флэш-памяти.

,

Все в оперативной памяти (непостоянная память) будет удалено. progmem/flash и EEPROM постоянны и не будут удалены., @Paul

вы не можете стереть ОЗУ, как не можете стереть экран проектора; электроны+фотоны стирают себя., @dandavis

На самом деле нажатие RESET не стирает оперативную память. Он сбрасывает ЦП и устанавливает для всех SFR значения по умолчанию при включении, но ОЗУ остается прежним. Это код, который добавляется в начало вашей программы (crt0.o), который стирает область BSS и копирует любые другие значения по умолчанию из флэш-памяти. Остальная часть оперативной памяти продолжает хранить то, что было там раньше. Конечно, без подачи питания это все равно ерунда, поскольку ничего не происходит., @Majenko


-2

Сброс устанавливает процессор и периферийные регистры в исходное состояние. Это означает, что регистр счетчика программ (который отмечает фактическую команду, над которой работает процессор) будет установлен на ноль, поэтому программа запустится с самого начала.

Программа находится в ПЗУ/флэш-памяти, которую можно стереть только с помощью инструмента для прошивки (в вашем случае, когда вы подключаете его к компьютеру), поэтому сброс никак не повлияет на программу.

,

Сброс _не_ влияет на оперативную память. См. комментарий Маженко к предыдущему ответу. Если вы используете загрузчик (как в случае с Nano), ПК _не_ обнуляется: он устанавливается на начальный адрес области загрузчика., @Edgar Bonet

Спасибо, отредактировал., @bmann

«_Регистр счетчика программ [...] будет установлен в ноль_» по-прежнему неверно., @Edgar Bonet

Тогда что именно происходит? Как программа будет запускаться с самого начала?, @bmann

ПК аппаратно устанавливается на начальный адрес «раздела флэш-памяти загрузчика». Запускается загрузчик, затем он передает управление программе пользователя по нулевому адресу. См. раздел [Поддержка загрузчика](http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf#G3.1740487). ) в техническом описании ATmega328P., @Edgar Bonet