Запрограммировать ATMega328P и использовать его без платы Arduino.

Я хотел бы использовать ATMega328P для своего проекта, я надеюсь сделать это без платы Arduino.

Я знаю, что с помощью Arduino IDE и платы Arduino я могу программировать микроконтроллер. Однако возможно ли после того, как я запрограммировал и отладил программу с Arduino IDE + плата Arduino, убрать микроконтроллер с платы Arduino и использовать ATMega328P отдельно, без платы?

Если да, то какие дополнительные настройки я должен сделать для корректной работы ATMega328P на макетной плате?

, 👍16

Обсуждение

Используйте ATMEGA328 P-PU с загрузчиком Arduino UNO., @Arthur

Использование голого чипа абсолютно осуществимо и не представляет никаких проблем., @dannyf

Это не тот же вопрос, что и ваш, но вы можете получить от него некоторую информацию. https://arduinoprosto.ru/q/32970/sense-checking-arduino-uno-barebones-схема, @Code Gorilla

Вы можете следить за ответами на [Этот вопрос](https://arduinoprosto.ru/q/54335/powering-atmega328p-pu-externally), @Rashedul Islam Emon


4 ответа


2

Поищите "Сборка Arduino" – вы найдете множество статей с практическими рекомендациями по созданию только то. Вам нужно будет иметь возможность паять соединения на печатной плате (и даже не это, если вы хотите использовать макетную плату без пайки), но это действительно просто. Вы даже можете сначала собрать его и запрограммировать MCU на печатной плате с помощью кабеля FTDI. Я использую плату Arduino и макетную плату без пайки, чтобы экспериментировать с незнакомыми деталями, но обычно сразу же перехожу к изготовленной вручную плате, как только ознакомлюсь со всеми компонентами, которые буду использовать.

Прототипирование с помощью платы Arduino позволяет вам собрать кучу деталей и быстро заставить что-то работать, а если Arduino более эффективен, чем ваша конечная цель — f/ex, Mega 2650, — вы можете временно игнорировать память, и я /O ограничения меньшего устройства.

,

7

Вы можете удалить ATMEGA из Arduino и использовать его в своей собственной плате, однако при использовании на типичной плате Arduino чип будет объединен с внешним кристаллом в качестве источника тактового сигнала, а не (более простой, но менее точный) внутренние часы.

Вы не можете изменить источник тактового сигнала через ISP, если источник тактового сигнала, который в данный момент ожидает чип, не работает, поэтому, если вы хотите изменить выбор тактового сигнала, вам нужно сделать это до извлечения чипа из Arduino.

Тем не менее, вы также можете поставить кварцевый резонатор и два его конденсатора (или замещающий резонатор, в который он часто встроен) на внешней плате.

Обычно чипы (даже предварительно прошитые с загрузчиком для удобства) дешевле, чем платы, поэтому неясно, почему вы хотите убрать один и тот же чип с Arduino, а не использовать другой. В любом случае вам понадобится последовательный адаптер USB-логического уровня, и как только вы его получите, вы сможете выполнять разработку на чистом чипе на своей плате, даже если вы проводите начальное тестирование на Arduino. В крайнем случае, если у вас нет преобразователя USB, вы можете либо вытащить микросхему из платы Arduino и проложить провода от ее D1 и D0, либо удерживать встроенную микросхему в состоянии сброса, чтобы позволить вам заимствовать эти последовательные линии без помехи.

,

Моя идея состоит в том, чтобы использовать только микроконтроллер без платы. Поскольку Arduino легко программировать, я подумал, что могу выбрать ATMega. Итак, у меня есть Arduino uno, моя идея состоит в том, чтобы купить только одну ATMega и программировать и отлаживать ее с помощью платы uno. Однако я только что понял, что если я отделю ATMega от Arduino, мне нужно будет добавить компоненты (кристалл, подтягивающие сопротивления...). Не могли бы вы пояснить, что вы имеете в виду в последнем абзаце вашего поста? Есть ли простой способ напрямую запрограммировать ATMega (или любой другой микроконтроллер) без использования Arduino IDE? Спасибо., @George

Хотя вы можете пропустить IDE, использование ее или нет по существу не имеет отношения к сложности вашей схемы, так как вы можете либо использовать IDE, либо нет со схемой, которая либо имеет, либо не имеет внешних часов, а также использует USB-модуль. серийный номер на вашей целевой плате, на кабеле или путем программирования вашего скетча с помощью программатора ISP. Выдергивание чипа из платы не дает вам ничего по сравнению с простой покупкой чипа с загрузчиком или без и загрузкой его самостоятельно, потенциально используя ваш неповрежденный Arduino в качестве программатора ISP или используя ISP для прямой загрузки вашего скетча без загрузчика., @Chris Stratton


9

Да, вы можете использовать ATMega328P без платы Arduino. Я всегда использую микросхему без ардуино. Есть два способа сделать это.

  1. Вы можете использовать плату arduino с микросхемой. Запрограммируйте микросхему, а затем выньте ее и используйте в своей схеме. Вам придется использовать генератор на 16 МГц с конденсаторами.
  2. Если у вас нет платы Arduino, вы можете использовать другие программаторы, такие как USBasp, для программирования вашего Atmega328p. В этом случае не используйте кнопку прямой загрузки, а используйте загрузку с помощью параметров программатора из меню файла. Не забудьте выбрать плату как Arduino Pro или Pro Mini (5v, 16mhz) с ATmega328 и программатор как USBasp.

ПРИМЕЧАНИЕ. См. раздел Сопоставление контактов Atmega328p. и соответствующим образом запрограммируйте свое устройство. Наслаждайтесь!

,

2

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

Предупреждения. Плата Arduino разработана как макетная плата, и немногие вещи справляются с этой задачей лучше, чем она. Вы можете оставить микросхему на плате Arduino до тех пор, пока не закончите проектирование и тестирование схемы. Только тогда вы подключаете его напрямую. Его можно использовать на месте, если у вас есть тактовая схема, или вы можете заменить предохранители (см. далее) и перепрограммировать Arduino с помощью адаптера ISP и тактовой частоты 8 МГц (PlatformIO позволяет вам это сделать ( и позволяет напрямую импортировать скетч Arduino) — проверьте на их странице документации плагин Atmel AVR, но вы также можете найти ряд руководств о том, как добавить файл платы в Arduino, чтобы указать ему использовать вариант 8 МГц для голого чипа)

Если вы извлекаете микросхему для использования в другой схеме, необходимо либо снова добавить эту схему часов, либо заменить ее предохранители (я вернусь к этому через минуту). Его также будет сложно программировать по ряду причин, поэтому вам нужно будет приобрести немного довольно дешевого оборудования:

Программирование отдельного чипа: ЦП Arduino изначально не предназначен для взаимодействия с компьютером . Вам нужен посредник. В Uno это делается с помощью второго чипа Atmel с поддержкой USB и загрузчика на основном чипе. Что это делает, так это то, что он использует UART для загрузки программы, в то время как микросхема USB преобразует сообщения ПК в сигналы UART. Поскольку загрузчик является некоторой проблемой, когда чип работает сам по себе (поскольку UART требователен, и в результате его установка заставляет чип использовать внешние часы), вам нужно купить программатор ISP для Arduino (или следуйте скетчу Arduino-as-ISP и инструкциям, чтобы сделать свой собственный, для чего требуется Arduino с чипом, поэтому вам понадобится второй для программирования).

Они могут программировать ATMega 328 напрямую через SPI, без загрузчика (в Интернете есть много инструкций; например, выполните поиск «запрограммировать голый ATMega 328P с помощью USBAsp»). Это значительно упрощает изменение и отладку вашей программы без извлечения чипа и обратно в исходную плату Arduino. Он также понадобится вам для изменения настроек часов, если вы не хотите использовать внешний кристалл.

Если вы хотите отладить чип, полезно также приобрести адаптер FTDI или другой преобразователь USB-UART. Обратите внимание, что без части схемы сброса на плате (или, опять же, добавления вашей собственной), это все равно не позволит вам запрограммировать ATMega даже с загрузчиком. Для этого подключите к адаптеру контакты заземления, RX и TX. Вы можете или не хотите подключать линию VCC, но не рекомендуется этого делать, если к чипу подключено много устройств и/или у него есть собственный источник питания. Обратите внимание, что RX и TX необходимо поменять местами при их подключении; то есть RX на TX и TX на RX - вы хотите, чтобы чип RX (принимал) то, что адаптер передает (TX), и наоборот.

Схему часов построить несложно, но для этого потребуется несколько компонентов, которых у вас может не быть. Таким образом, чтобы изменить источник часов, перейдите на http://www.engbedded.com/fusecalc/ и выберите ATMega 328P. Значения по умолчанию хороши, но вы можете захотеть включить стирание EEPROM и отключить деление часов на 8 или настроить параметры отключения. Больше ничего не трогайте (отключение сброса или SPI или включение DebugWire приводит к «забаве», для исправления которой требуется программист HV). Когда закончите, вставьте команду, которую он предоставляет, в команду AVRDude. Вам нужно будет изменить параметры -c (-p уже установлен для ATMega 328P, но не будет работать для не-P 328 - не покупайте их) и, возможно, добавить параметр -P (для порта). Не опускайте параметр -u в нижнем регистре, иначе он откажется обновлять фьюзы.

avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]

Обратите внимание: если вы покупаете USBASP (убедитесь, что он имеет три набора перемычек!), несмотря на то, что это мой любимый программатор, у них может не быть обновленной прошивки, поддерживающей -B вариант (который вам, вероятно, понадобится). Это означает, что вам нужно подключить его к Arduino через шестиконтактный порт программирования точно так же, как вы используете его для программирования загрузчика Arduino, но затем используйте скетч Arduino-as-ISP для программирования нового прошивку в программатор (поиск "обновить прошивку usbasp через arduino-as-isp")! Для справки: обычно это означает, что кабель направлен в сторону от корпуса платы, и вам, вероятно, придется запрограммировать скетч перед подключением кабеля. Также включите перемычку питания от программатора на USBASP (5 В) и «самопрограммирование». (см. https://forum.arduino.cc/index.php?topic=560719.0, где находится перемычек питания и программ (JP2)).

,