Как отличить аппаратный сброс от сброса программного обеспечения?

У меня есть код arduino с SD-картой, на которой я сохраняю некоторые данные. Когда я загружаю новый код, SD-карта должна обновляться с новыми данными, которые я ввел в код, но если я сброшу Arduino с помощью кнопки сброса, я не хочу, чтобы данные SD менялись.

Подводя итог, я хочу перезагрузить данные SD только при обновлении кода, а не при сбросе оборудования

Есть какие-нибудь идеи?

, 👍2

Обсуждение

Какой у вас Arduino?, @Majenko

Я пытаюсь использовать Arduino Uno, но код должен работать и для Nano, и для Mega, @Alexandro Palacios

Тогда мне очень жаль, но ты не можешь. Там *нет* никакого "сброса программного обеспечения". Загрузка кода запускает аппаратный сброс путем "нажатия" на сброс для вас., @Majenko

Ах, значит, между обоими сбросами нет реальной разницы, @Alexandro Palacios


1 ответ


Лучший ответ:

3

Ты не можешь. Нет никакого "программного" сброса. Когда вы загружаете новый код, аппаратный сброс запускается выводом DTR микросхемы интерфейса USB.

Вместо этого я бы предложил сохранить "номер версии данных" на SD-карте. Прочитайте его при запуске, и, если он отличается от ожидаемого номера версии (который вы обновляете в своем коде вручную), он создаст данные для вас и установит номер версии.

,

Ну, я об этом не думал, звучит как хорошее решение. Спасибо!, @Alexandro Palacios