Arduino 16 МГц только с 3,3 В?
Теперь у меня есть эти Arduino Pro Mini от Sparkfun. Это последняя версия, которую я знаю (да, это та, у которой эти ужасные несоосные штифты). Теперь они спроектированы вокруг ATmega328P и имеют кристалл 16 МГц.
Теперь мой вопрос: могу ли я запустить ATmega328 с кристаллом 16 МГц, поставляя ТОЛЬКО 3,3 В.
Причина, по которой я это делаю, заключается в том, что 5V / 16MHz Pro Minis из Китая намного дешевле, чем 3.3 / 8MHz.
Факты, которые я уже знаю:
Если я буду следовать таблице данных до буквы, эта конфигурация не должна работать. НО..... После некоторых испытаний это действительно сработало.
Кроме того, мне нужны ответы, основанные на личном опыте (а НЕ на мнениях), а не на технических данных и спецификациях.
[EDIT] Включение способа использования внутренних часов (на частоте 8 МГц) ATmega328P действительно помогло бы!
@Dat Ha, 👍7
Обсуждение7 ответов
Лучший ответ:
Официально - нет. Практически, часто, но не всегда.
Если я буду следовать таблице данных до буквы, эта конфигурация не должна работать. НО..... После некоторых испытаний это действительно сработало.
В техническом паспорте не говорится, что он "не должен" работать, в нем говорится, что деталь не подходит для работы на частоте 16 МГц ниже некоторого напряжения выше, чем вы хотите использовать. Это не значит, что данный чип не может там работать, это только означает, что чип, который не работает, не может считаться "плохим". Неудача может быть полной и очевидной или незаметной.
На практике я видел, как это работает, как на небольших модифицированных импортных платах, так и на платах с переключаемым напряжением питания. Но я также помню, что видел, как это не сработало.
Два фактора, которые могут иметь теоретическое значение,-это вариации производства от детали к детали и рабочая температура.
Обратите внимание, что при настройке ISP вы можете изменить предохранители, чтобы запустить чип на том, что было продано как внешняя кристаллическая плата 5 В, чтобы вместо этого работать от внутреннего генератора 8 МГц, и вы можете сделать это, даже оставляя кристалл на плате. Если вы также измените предохранитель детектора потемнения, вы можете еще больше снизить напряжение, например, для работы без регулятора непосредственно на двух элементах типа АА. Конечно, это относится и к самой ATmega - любые другие активные компоненты на плате также должны быть квалифицированы для предполагаемого напряжения.
Я построил несколько самодельных дуино 3,3 В с кристаллами 16 МГц (потому что у меня есть сумка с 50 xtals!)-Они прекрасно работают в тех условиях, в которых я их поставил до сих пор (на моем столе). Некоторые из них могут быть ближе к своим краям, чем другие, и могут выйти из строя, например, при какой-то другой специальной температуре. Если бы они предназначались для выхода наружу (разумеется, в закрытом помещении), мне пришлось бы проверить их на соответствие условиям, которым они могли бы подвергнуться. Или перепроектировать их, чтобы они в первую очередь соответствовали спецификациям.
Я думаю, что единственный способ узнать это-попробовать на своей плате и посмотреть. У меня нет и не знаю набора тестов для чипа; я только что загрузил известные рабочие скетчи на свои экспериментальные платы, и у меня не было никаких явных сбоев. Пока.
Небольшой тест, не очень научный, но показывает, что он отлично работает на 3,3 В - https://www.youtube.com/watch?v=If0eOa0Uj5I.
Опять же, если вы хотите придерживаться спецификации, просто используйте "тактовый делитель/2" и запустите свой MCU на частоте 8 МГц, если у них есть кристалл 16 МГц:
clock_prescale_set(clock_div_2)
http://www.nongnu.org/avr-libc/user-manual/group__avr__power.html
Если вы установите это в программном обеспечении, то сначала потребуется загрузка на частоте 16 МГц. Если вы хотите использовать делитель часов, это кажется лучшим предложением, хотя я не могу сказать, что пробовал его: http://arduinoprosto.ru/q/5413/612, @Chris Stratton
Хороший момент, предохранитель устанавливает прескалер часов thw в clock_div_8, вы можете вернуть его в clock_div_2 в первой строке вашего кода. Не забывайте, что вам понадобится загрузчик с правильной скоростью, если вы планируете использовать загрузку кода через usb/serial., @Talk2
Согласно спецификации, вам нужно 3,78 В для работы на частоте 16 МГц, а 3,3 В не так уж и далеко. Например, я был бы удивлен, если бы он перестал работать при 3,77 В, потому что это означало бы, что работа при 3,78 В была предельной.
Я управлял этими чипами из спецификации, например, под напряжением или с кристаллом 24 МГц. Кажется, они работают. Однако я бы предположил, что позиция Atmel будет такой: если вы работаете по нашим спецификациям, не приходите к нам плакаться, если это ненадежно.
Несколько процентов из спецификации, вероятно, будут работать, а 3,3 В - это 87% от 3,78 В. Они пишут эти спецификации, чтобы учесть колебания в производственном процессе, и уверены, что все их чипы будут соответствовать им. Вероятно, многие чипы были бы сверх спецификации.
Включение способа использования внутренних часов (на частоте 8 МГц) ATmega328P действительно помогло бы!
Установите предохранители соответствующим образом. См. Engbedded Калькулятор предохранителей Atmel AVR®
Для ATmega328P это должен сделать низкий предохранитель 0xE2.
Причина, по которой я это делаю, заключается в том, что 5V / 16MHz Pro Minis из Китая намного дешевле, чем 3.3 / 8MHz.
Будьте осторожны, что дешевые клонированные платы могут быть изготовлены с "секундами"производителей.
Спасибо. Просто обратите внимание, что дешевая китайская плата, которая у меня есть, выглядит ТОЧНО так же, как оригиналы от sparkfun. все товарные знаки есть, и даже логотип oshw есть. я думаю, что они фальшивые, и если это так, то они все равно приложили много усилий., @Dat Ha
Я использую свой чип atmega328p с 3,3 вольтами, потому что я не хотел использовать делитель напряжения при питании NRF24L01, который является частью моей схемы. Поскольку у меня есть только кристаллы 16 МГц, и я не знаю, как снизить частоту до 8 МГц, я запустил свой проект с 3,3 В, и он отлично работает. Я запускаю этот код уже больше года, и у меня не было никаких проблем.
Код отлично работает даже при 2,8 В, работающем на частоте 16 МГц. При 2,65 В он перестает работать.
Вы можете использовать прескалер часов в сочетании с предохранителем CKDIV8 для работы с часами 8 МГц, но с использованием кристалла 16 МГц.
Подробности см. в разделе "CLKPR – Clock Prescale Register" в техническом паспорте (стр. 36 в моем техническом паспорте 07/2012).
В основном вы устанавливаете предохранитель CKDIV8 так, чтобы процессор работал на частоте 2 МГц после включения питания. Затем после запуска и запуска вы устанавливаете коэффициент деления на 2, что дает работу 8 МГц, которая гарантируется при 3,3 В.
График таблицы данных Atmega48/168/328 (в разделе "29,3: классы скорости") представляет максимальную безопасную тактовую частоту для заданного напряжения VDD. Он состоит из трех математических функций — 1 постоянной и 2 линейных. Мне удалось рассчитать их формулы и просуммировать:
где:
x — это напряжение VDD [В] и y — максимальная безопасная тактовая частота [МГц], которую можно достичь с этим напряжением. Я сделал это, потому что мне нужно было проверить, достаточно ли питания 3,3 В для кристалла 12 МГц - и это так (около 13,3 МГц макс.).
- Путаница с ATmega328P и 3,3 В/8 МГц
- Заменить предохранители Arduino Uno (может ли Arduino Uno заменить свои собственные предохранители?)
- Atmega328p — переход на низкое энергопотребление 1,8 В с использованием генератора 4 МГц — прошивка загрузчика
- Arduino Uno считывние предохранителей
- Почему SoftwareSerial не работает как надо на Arduino Pro Mini 3v3?
- Atmega 328p при 3,3В : Внутренний и внешний генератор
- Светодиод не мигает - Arduino UNO+WiFi R3 ATmega328P+Плата ESP8266
- Как записать загрузчик/программу ATMega 328P с внешним кварцевым генератором 8 МГц?
Я сомневаюсь, что у кого-то здесь есть личный опыт тестирования всех периферийных устройств и инструкций чипов на сотнях образцов в полном диапазоне рабочих температур. Вот почему, когда вы заботитесь о надежности, вы полагаетесь на технические данные. Если надежность не является вашим основным требованием, вы уже знаете, что она работает., @Edgar Bonet
[OLIMEXINO-32U4](https://www.olimex.com/Products/Duino/AVR/OLIMEXINO-32U4/) может быть перескочен на 5 В или 3,3 В и использует 16 МГц. [Руководство](https://www.olimex.com/Products/Duino/AVR/OLIMEXINO-32U4/resources/OLIMEXINO-32U4.pdf) имеет более подробную информацию об этом на странице 14., @gone
Установите драйвер кристалла в положение full-swing и начальный прескалер в положение /8, а затем переключитесь в положение /2 в одном из разделов инициализации., @Ignacio Vazquez-Abrams
Включение способа использования внутренних часов (на частоте 8 МГц) ATmega328P действительно помогло бы!
- что это значит? Вы хотите знать, как использовать внутренние часы на частоте 8 МГц или запустить их на частоте 16 МГц с помощью внутренних часов?, @Nick GammonЭто не ответ на вопрос, больше похоже на решение проблемы (почему я комментирую), но есть модули lipo stepup, которые дают вам 5 вольт от батареи 3.3, достаточно для запуска arduino. Взгляните на это., @Magic-Mouse
@Magic-Mouse, спасибо, но повышение напряжения для меня не очень эффективно. Я использую пару прорывов, все они используют 3,3 В. Наращивать что-то, чтобы затем регулировать это, несколько глупо для моего проекта. Но все равно спасибо., @Dat Ha
@canadiancyborg дело было не в том, чтобы регулировать его вниз, но вам не нужно все увеличивать. Только подача на AT - чип., @Magic-Mouse
Какой тип Arduino вы использовали для 16 МГц и 3,3 В ?, @Frank H. Ritz