У меня есть собственная плата Arduino ATMega328, которая обычно работает на частоте 5 В при 8 МГц (используя профиль и загрузчик Arduino Pro 3.3 В 8 МГц). Основная причина, по которой я использую эту настройку, заключается в том, что я могу перевести плату в спящий режим, когда основное питание отключено, и она начинает работать от батареи (3 В от батарейки). Источники 5В и 3В соединены диодом ИЛИ, а вход 5В связан с INT0. В коде, когда он обнаруживает, что INT0 упал до низкого уровня, он инициализирует спящий режим, и все отключается, за исключением сторожевого таймера, который поддерживает цикл 1 Гц, чтобы сохранить внутренний счетчик и проверить, что чип должен быть восстановлен. Это прекрасно работает, когда сначала подается питание 5 В, затем вставляется батарея, затем5В отключен. Он засыпает, и когда возвращается 5V, он просыпается, и я вижу, что он не потерял счет.
Тем не менее, проблема возникает, когда 3V применяется в первую очередь . Я, честно говоря, не уверен, загружается ли он вообще. Но то, что он должен сделать, это загрузиться, проверить, низкий ли INT0 (Digital 2), и, если это так, перейти в режим сна. Наблюдая за током, я вижу, что в течение нескольких секунд он достигает нескольких мА, а затем падает примерно до 0,3 мА (все еще выше, чем должно быть в режиме ожидания). Но когда я снова подать 5V, ничего . Отключение питания возобновляется, но оно не отвечает (по серийному протоколу FTDI).
Может быть, мне чего-то не хватает, что он не может быть загружен на 3V ... теоретически он должен работать просто отлично.
Обновление: я бросил светодиод на D13 и попробовал эскиз моргания. Работает нормально при запуске от 3В или 5В. Однако, когда я запускаю свою прошивку и запускаю ее от 3В, светодиод просто начинает дико мигать. Я понятия не имею, что вызывает это, так как я никогда не настраивал D13 как что-либо в моем коде. Но это заставляет меня думать, что это как-то связано с загрузчиком ...