Кнопка сброса работает без питания?
Я работаю над проектом, и мой отец неосознанно нажал кнопку сброса на моей плате Arduino. Если он не был подключен к какому-либо источнику питания или компьютеру, он все равно сбрасывался? Нужно ли мне снова загружать свой код на плату? Или для сброса платы требуется питание?
@alex, 👍0
Обсуждение2 ответа
Сброс на Arduino ничего не стирает. Он просто перезапускает выполнение уже загруженной программы. Кроме того, AVR должен быть включен, чтобы он понял, был ли он сброшен.
Каждый раз, когда вы включаете Arduino, он автоматически запускает выполнение кода с начала программы во флэш-памяти.
Все в оперативной памяти (непостоянная память) будет удалено. progmem/flash и EEPROM постоянны и не будут удалены., @Paul
вы не можете стереть ОЗУ, как не можете стереть экран проектора; электроны+фотоны стирают себя., @dandavis
На самом деле нажатие RESET не стирает оперативную память. Он сбрасывает ЦП и устанавливает для всех SFR значения по умолчанию при включении, но ОЗУ остается прежним. Это код, который добавляется в начало вашей программы (crt0.o), который стирает область BSS и копирует любые другие значения по умолчанию из флэш-памяти. Остальная часть оперативной памяти продолжает хранить то, что было там раньше. Конечно, без подачи питания это все равно ерунда, поскольку ничего не происходит., @Majenko
Сброс устанавливает процессор и периферийные регистры в исходное состояние. Это означает, что регистр счетчика программ (который отмечает фактическую команду, над которой работает процессор) будет установлен на ноль, поэтому программа запустится с самого начала.
Программа находится в ПЗУ/флэш-памяти, которую можно стереть только с помощью инструмента для прошивки (в вашем случае, когда вы подключаете его к компьютеру), поэтому сброс никак не повлияет на программу.
Сброс _не_ влияет на оперативную память. См. комментарий Маженко к предыдущему ответу. Если вы используете загрузчик (как в случае с 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
- Самая низкая мощность, возможная в Arduino
- Как запрограммировать чип ATmega328 au tqfp32 (SMD)?
- Использование Arduino Nano для программирования (как ISP) автономного 328p
- Разница в загрузчике между Atmel328p (сквозное отверстие) и Atmel328p au (smd)
- Arduino Nano ATmega328P не засыпает ни с <LowPower>, ни с <avt/sleep.h>
- Процедура изменения частоты Нано или аналогичной
- Аналоговый вывод Arduino nano/uno
- Пользовательская плата 328P-AU не отвечает через ICSP
Плата была выключена? Кнопка сброса ничего не делает, если к плате не подключено питание., @James Waldby - jwpat7