Про Ардуино и не только: Обвязка ATmega328P
Типовая схема включения любого микроконтроллера содержит ряд компонентов и цепей, обеспечивающих его нормальное функционирование. Совокупность этих компонентов называется обвязкой микроконтроллера. Данная публикация посвящена функциям обвязки и ее особенностям в случае использования AVR микроконтроллера ATmega328P.Распиновка ATmega328P
Прежде чем приступить к рассмотрению обвязки ATmega328P считаю нужным привести описание его выводов. Когда мы работаем с платами Ардуино, то не задумываемся о соответствии физических выводов микроконтроллера используемым в IDE Arduino обозначениям. Когда же речь идет об отдельном микроконтроллере, то под рукой всегда нужно иметь его распиновку. Поэтому советую сохранить ее: Есть еще один интересный прием – это распечатать номера выводов и наклеить получившуюся шпаргалку на микроконтроллер, как показано на следующем фото. Мелковато, но вполне читабельно. PDF файл для печати можно скачать по этой ссылке.Подключение питания
Напряжение питания подается на выводы микроконтроллера VCC и GND и не должно превышать значение, указанное в технической документации. Для ATmega328P верхняя граница рекомендуемого напряжения питания составляет 5,5В, абсолютный максимум – 6В, продолжительная работа при таком напряжении может вывести микроконтроллер из строя.Для подавления высокочастотных помех в цепи питания рекомендуется устанавливать керамический конденсатор емкостью 0.1мкФ между VCC и GND. Причем располагаться он должен как можно ближе к питающим выводам микроконтроллера для минимизации паразитной индуктивности и сопротивления подводящих проводников.
ATmega328P имеет двойное питание: выводы VCC и GND (выводы 7 и 8) используются для питания цифровых схем микроконтроллера; AVCC и GND (выводы 20 и 22) – для питания аналого-цифрового преобразователя. Даже если вы не собираетесь использовать АЦП, к нему должно быть подведено питание: соедините выводы VCC с AVCC, а цифровую землю с аналоговой.
Если же вы планируете использовать АЦП, то в цепь питания следует добавить фильтр для уменьшения помех. Так в даташите рекомендуется соединить AVCC c VCC через индуктивность 10мкГн и с GND через емкость 0.1мкФ. Однако данная рекомендация не выполняется даже в платах Ардуино и вывод AVCC на них просто соединен с VCC.Рекомендуемая схема подключения питания ATmega328P при использовании встроенного АЦП |
Вывод Reset и кнопка сброса
Вывод Reset используется для генерации сигнала сброса микроконтроллера. Во время сброса все регистры ввода-вывода принимают свои начальные значения и выполняется команда, расположенная в векторе сброса (по нулевому адресу). Как правило, это переход на адрес начала программы. Но, если пользовательская программа не использует прерывания, то она может располагаться сразу с нулевого адреса.
Схема начального сброса
Обвязка для предыдущих моделей микроконтроллеров обязательно включала в себя схему начального сброса, состоящую из резистора и конденсатора, которая обеспечивала постепенное нарастание сигнала на входе Reset при включении питания. Таким образом осуществлялся начальный сброс микроконтроллера. Сейчас же схема начального сброса (Power-on-Reset) присутствует, пожалуй, в каждом современном микроконтроллере. Внешняя цепь может потребоваться при наличии особых требований к длительности импульса сброса (в случае медленного нарастания напряжения питания).Схема начального сброса микроконтроллера |
Обвязка Reset и защита от непреднамеренного сброса
Еще один момент, требующий внимания – это стабилизация сигнала высокого уровня на входе Reset с целью предотвращения непреднамеренного сброса микроконтроллера. В публикации о подтягивающих резисторах я уже рассказывал о проблемах, возникающих, когда цифровой вход не подсоединен ни к питанию, ни к земле: электромагнитные наводки становятся причиной изменения уровня сигнала на этом входе. При его опросе микроконтроллер будет случайным образом фиксировать то высокий, то низкий уровень сигнала. В случае со входом Reset это приведет к непреднамеренному сбросу. Данная проблема решается добавлением в схему подтягивающего резистора, который гарантирует сигнал нужного уровня на входе Reset (в случае с AVR – высокого уровня).Зачастую одного только подтягивающего резистора оказывается недостаточно и для дополнительной защиты от шума в схему добавляется конденсатор. Вход Reset AVR микроконтроллеров имеет собственный фильтр нижних частот. Внешний конденсатор, установленный между выводом Reset и землей, является дополнительной защитой. Однако, его нельзя добавлять в схему, если предполагается внутрисхемное программирование с помощью PDI или DebugWIRE.
В отличие от выводов общего назначения, имеющих защитные диоды и к земле, и к питанию, для входа Reset предусмотрен единственный диод – на землю. Это объясняется тем, что Reset используется для высоковольтного программирования, когда на него подается сигнал 12В. Поэтому если микроконтроллер должен работать в условиях помех от электростатических разрядов (в англоязычной технической документации используется термин ESD – Electrostatic Discharge) и если не планируется использовать высоковольтный программатор, рекомендуется добавить в схему внешний диод между выводом Reset и линией питания.
С учетом всего сказанного рекомендуемая схема обвязки вывода Reset выглядит следующим образом:
Обвязка вывода Reset для защиты от помех |
Ну и в конце концов можно обойтись совсем без внешних компонентов, если просто соединить Reset с линией питания. Правда в этом случае вы уже не сможете добавить кнопку сброса и потеряете возможность внутрисхемного программирования.
Кнопка сброса
Если для защиты от случайного сброса микроконтроллера вход Reset подтягивается к питанию (встроенным резистором или внешним для более сильной подтяжки), то для сброса при нажатии на кнопку он должен замыкаться на землю. Нет ничего проще – добавляем кнопку между входом Reset и землей. Если обвязка вывода Reset содержит конденсатор как в вышеприведенной схеме, то для предотвращения его закорачивания через кнопку (что может привести к возникновению помех) разработчики из Microchip рекомендуют добавлять в схему резистор порядка 330Ом:Подключение кнопки сброса к микроконтроллеру |
Подключение резонатора
Кварцевый или керамический резонатор обеспечивают работу встроенного тактового генератора. Резонатор подключается к выводам XTAL1, XTAL2 микроконтроллера. Для его стабильной работы в схему добавляются керамические конденсаторы, номинал которых подбирается в соответствии с рекомендациями производителя резонатора или микроконтроллера. Так в даташите на ATmega328P для резонаторов на 400кГц и выше рекомендуется использовать конденсаторы номиналом 12..22пФ:Подключение резонатора к микроконтроллеру |
При тактировании от внутреннего RC-генератора необходимость во внешнем резонаторе и согласующих конденсаторах отпадает.
Заключение
Итак, большинство компонентов, составляющих типовую обвязку, уже присутствуют в современных микроконтроллерах. Однако, их может оказаться недостаточно для стабильной работы в жестких условиях, в этом случае требуется принятие дополнительных мер. И здесь сложно предусмотреть все возможные ситуации и гарантировать успешную работу того или иного решения. Поэтому лучшая рекомендация – это всегда проверять работу схемы в реальных условиях. Интересный документ по теме – рекомендации Microchip, которые необходимо соблюдать при проектировании оборудования с использованием микроконтроллеров AVR, ссылка: AN2519 AVR Microcontroller Hardware Design ConsiderationsСамодельный Arduino из контроллера ATMEGA328P-PU
Платформа Arduino стала нынче практически мейнстримом.
В этой статье напишу о том, как собрать минимальную платформу на контроллере Amega 328P-PU, чтобы ее можно было программировать на платформе Arduino IDE.
Контроллер Atmega 328 от компании ATMEL является сердцем платформ Arduino UNO , Arduino Nano, Arduino Pro Mini и ряда других. Данные платы вместе с многочисленными «шилдами» и модулями удобны для создания прототипов, но довольно громоздки и избыточны для готовых устройств.
Конечное устройство можно собрать на макетной или печатной плате. Для этого приобретаем контроллеры Atmega. Я покупал наплощадке aliexpress.com.
Цена на момент покупки была $20 за 10 контроллеров, 10 панелек и 10 кварцевых резонаторов на 16МГц. (Сейчас цена стала немного дороже)
Ссылка на товар на сайте aliexpress.com
Буковка «P» в названии микросхемы означает низкое энергопотребление, а PU-корпус DIP28, который удобно паять обычным паяльником.
Контроллеры пришли, как их теперь готовить?
Yеобходимо установить загрузчик в наши контроллеры. Для этого используем плату Arduino Uno и купленный заранее очень дешевый программатор USBasp. Чтобы не мудрить с проводками, лучше сразу взять еще и такой переходник на 6-ти пиновый разъем ICSP.
Качаем и ставим драйвер программатора.
Описываем параметры микроконтроллера в файле c:\Program Files (x86)\Arduino\hardware\arduino\boards.txt
Для себя я сделал две конфигурации — внутренний кварц 8МГц с загрузчиком optiboot и отключенной проверкой на напряжение питания (чтобы можно было запитать микросхему вольт так от трех)
atmega328_8_33. name=Atmega328 (3.3V, 8 MHz internal)
atmega328_8_33.upload.protocol=arduino
atmega328_8_33.upload.maximum_size=30720
#atmega328_8_33.upload.speed=19200
atmega328_8_33.upload.speed=57600atmega328_8_33.bootloader.low_fuses=0xC2
atmega328_8_33.bootloader.low_fuses=0xE2
atmega328_8_33.bootloader.high_fuses=0xDE
atmega328_8_33.bootloader.extended_fuses=0x07
atmega328_8_33.bootloader.path=optiboot
atmega328_8_33.bootloader.file=optiboot_atmega328.hex
atmega328_8_33.bootloader.unlock_bits=0x3F
atmega328_8_33.bootloader.lock_bits=0x0Fatmega328_8_33.build.mcu=atmega328p
atmega328_8_33.build.f_cpu=8000000L
atmega328_8_33.build.core=arduino
atmega328_8_33.build.variant=standard
и точная такая же с внешним кварцевым резонатором на 16МГц.
atmega328_16.name=Atmega328_16 (3.3V, 16 MHz external)
atmega328_16.upload.protocol=arduino
atmega328_16.upload.maximum_size=32256
atmega328_16. upload.speed=115200
atmega328_16.bootloader.low_fuses=0xff
atmega328_16.bootloader.high_fuses=0xde
atmega328_16.bootloader.extended_fuses=0x07
atmega328_16.bootloader.path=optiboot
atmega328_16.bootloader.file=optiboot_atmega328.hex
atmega328_16.bootloader.unlock_bits=0x3F
atmega328_16.bootloader.lock_bits=0x0F
atmega328_16.build.mcu=atmega328p
atmega328_16.build.f_cpu=16000000L
atmega328_16.build.core=arduino
atmega328_16.build.variant=standard
Аккуратно вынимаем из панельки Arduino контроллер и ставим туда наш.
Запускам стандартную ArduinoIDE, выбираем в меню «Сервис->Программатор->USBasp», плату Atmega328 (3.3V, 8 MHz internal) или Atmega328_16 (3.3V, 16 MHz external) и нажимаем «Записать загрузчик». После окончания процесса загрузки мы получаем контроллер, в который можно уже в дальнейшем заливать программы через стандартный USB Ардуины.
В принципе, если вам не требуется низковольтное питание, можно не править фал board. txt, а пошить контроллер как Arduino Uno.
Дальнейшая работа с контроллером такая — либо шить его вставляя на плату Arduino Uno через стандартный USB порт этой платы. Прошив контроллер на работу с внутренним кварцем, можно сразу использовать его практически без всякой обвязки. Например, мигать светодиодом на 13-м порту, как на этой картинке.
Если же нужно постоянно использовать контроллер в своей плате, не переставляя его — то нужно собрать такую схему
и прошивать его через конвертер USB-RS232.
Контроллер с внешним кварцем работает быстрее и гораздо стабильнее.
Где это уже работает?
Контроллер управления вентилятором в ванной комнате
Контроллер управления светодиодной люстрой
А как же мозг не вскипел все это реализовывать?
Ну конечно же был помощник
Полезные ссылки к данной статье:
со своего сайта.
Как перейти от Arduino к серийному образцу.
Минимальная обвязка AtMega 328Вот вы написали программу, и залили её в свой UNO. Всё великолепно работает, но такую громадную железку не запихнуть в миниатюрный корпус. Да и вдруг, вы хотите сделать 100 таких устройств, а зачем вам увеличение себестоимости, ведь на платах Arduino куча ненужного барахла.
Ну что же, попробуем. Для начала, как мы помним, в самых распространённых платах Nano и Mega, используется камень AtMega328P. Логично, что для его запуска, нам нужно подать питание на него. Для этого здесь достаточно много пинов VCC и GND, особенно в планарных типах корпуса. Связано это с топологией чипа на уровне производства, ведь каждый пин контроллера держит токовую нагрузку, поэтому МК должен быть запитан равномерно со всех сторон
Пин AREF отвечает за опорное напряжение АЦП, туда можно подать напряжение, относительно которого вы хотите читать результаты, или, если это будет 5в, или 2.5 от внутреннего делителя, то подтянуть конденсатором к питанию. Также, по классике, на линию питанию нужно повесить конденсаторы для сглаживанию питающего напряжения – от этого зависит стабильность микроконтроллера.
Знаете, на arduino, есть такая кнопка – Reset, от которой можно перезагрузить МК. Это такой выход i/o, на который на который вроде бы можно повесить периферию, но с большими ограничениями. Поэтому, если вам хватает ног, лучше не трогайте этот пин. Изначально он подтянут внутренним резистором, но лучше, для надёжности и стабильности сделать внешнюю подтяжку резистором 10кОм. Перезагружать готовое устройство нужды особой нет – кнопку ставить не будем.
Теперь нужно разобраться с тактированием. Arduino работает на частоте 16Мгц, т.е. от внешнего кварца. Если вы продолжаете работать на этой частоте, то этот кварц нужно установить на создаваемую плату, вместе с конденсаторами 22пФ.
Но если точность вычислений вам не сильно нужна, а хочется сэкономить в размерах, как иногда мне, то кварц можно вообще не ставить, а тактироваться от внутренней RC цепочки с 8Мгц. Как скомпилировать прошивку в arduino с другой частотой в 8Мгц, я расскажу позже. А пока рассмотрим самую важную часть – как программировать то голый микроконтроллер? Ведь usb выхода у него нет. Есть разные пути, но самый простой – использовать внутрисхемное программирование SPI. И купить дешёвый программатор USB ASP. Мой выглядит так, у него не подписаны контакты
Нарисовал удобную распиновку, если смотреть со стороны контактов. Для SPI нам важны 5 контактов, но я обычно беру и питание с программатора – MISO, MOSI, SCK, RST, GND
Также у меня лежит самодельный UsbAsp, но он громоздкий, и у него не сделан вывод 3.3в, поэтому я его давно не использую
Теперь рассмотрим, какие выводы мы будем использовать для программирования на принципиальной схеме МК.
Теперь если подать питание, и подключить выводы программатора MOSI, MISO, SCK, RESET, GND то можно приступать к программированию. Как помните, из предыдущей статьи, где мы рассказали как достать HEX файл из среды Arduino, IDE делает два файла – *. hex и *with_bootloader.hex. Загрузчик нам не нужен, поэтому будем использовать обычный *.hex. Есть один нюанс – при покупке голого кристалла, он запрограммирован на RC цепочку 1Мгц. Да и вообще у atmega, есть система фьюз-битов. Выглядит это обычно не очень понятно, но конечно в среде Arduino всё это вырезано, чтоб не смущать новичков. Чтобы добраться до этих конфигураций, полезно будет скачать программу AVRDUDE. Главное окно выглядит так, здесь нужно сразу выбрать нужный МК
Переходим во вкладку Fuses – здесь, чтобы не наделать бед, а если вы запишите неправильные данные, контроллер можно превратить почти в кирпич (что не очень удобно на распаянной smd плате), я сначала СЧИТЫВАЮ биты, заодно можно убедиться в правильности подключения программатора к МК. Если всё хорошо – получаем такую картинку
Чтобы правильно выставить fuse-биты, нужно воспользоваться помощью специального калькулятора. Я пользуюсь этим. Тут также нужно выбрать чип, способ тактирования и другие параметры. В принципе для смены частоты достаточно сменить блок CKSEL фьюзов. В данном случае я выбрал Int RC – 8Mhz.
Получил картинку фьюзов.
А теперь переносим параметры в AVR DUDE, также калькулятор включает делитель на 8, бит CKDIV8, он нам не нужен. Можете пользоваться нижеприведённым скриншотом, для запуска atmega 328p на 8Мгц от внутреннего RC осциллятора.
Жмём запись – и МК принимает необходимую конфигурацию. Теперь осталось залить прошивку, но ведь она у нас рассчитана на 16Мгц, но в Arduino IDE, есть простой путь скомпилировать прошивку для atmega 328, для частоты 8Мгц. Нужно выбрать плату arduino pro, и указать частоту 8mhz
Как вы заметили, напротив чипа, стоит напряжение 3.3В при пониженной частоте – всё верно, но это не означает, что нельзя запитать кристалл от 5В. Зато от 3.3В теперь можно). Теперь после компиляции нам осталось по знакомому пути найти файл прошивки в формате HEX, и вернуться в AVR DUDE. Выбрать файл прошивки – и нажать программирование.
Всё! Вы избавились от лишней периферии Arduino, можете сделать плату в своём дизайне PCB, а прошивку использовать с вашего прототипа. В следующей статье, мы сделаем свою плату игральных костей в размере 4х4 см, чтобы упаковать в маленький корпус, и проделаем эти шаги на практике.
ARDUINO UNO R3
Модуль ARDUINO UNO Rev3 совместимый на микроконтроллере ATmega328.
Микроконтроллер: ATmega328P
Тактовая частота: 16 МГц
Флеш-память: 32 Кб, из которых 0.5 Кб используются для загрузчика
ОЗУ: 2 Кб
EEPROM: 1 Кб
Рабочее напряжение: 5 В
Входное напряжение (рекомендуемое): 7-12 В
Входное напряжение (предельное): 6-20 В
Цифровые входы/выходы: 20
ШИМ выходы: 6
Аналоговые входы: 6, 10-бит
Максимальный постоянный ток через вход/выход: 40 мА, рекомендуемый: 20мА
Максимальный постоянный ток для вывода 3.3 В: 50 мА
Кнопка сброса “Reset”
USB-разъем: USB, тип-B
Светодиодная индикация: питание платы, обмен данными RX,TX и пользовательский вывод D13
Давайте знакомиться
ARDUINO UNO – одна из лучших плат семейства ARDUINO, чтобы начать конструировать и программировать, если вы ранее не пробовали этого. UNO в переводе означает “Первая”. UNO настолько популярна, что используется в подавляющем большинстве существующих проектов, ею комплектуются стартовые наборы, выпускаемые для начинающих с азов будущих разработчиков. Для неё опубликовано просто огромное количество примеров программ. Доступность, лёгкость в понимании при изучении и надёжность в использовании – вот её конек.
Микросхема ATmega328P выполнен в корпусе PDIP-28 и установлен в припаянный к плате специальный пластиковый разъём. Такое исполнение крайне удобно, если по какой-либо причине она была повреждена или вышла из строя, и требуется её замена. Достаточно вынуть контроллер из специального разъёма и установить на его место новый.
В плату встроены два стабилизатора напряжения на 3.3 В и 5 В. Они позволят вам подключать к UNO модули с соответствующим питанием без использования дополнительных повышающих или понижающих преобразователей. Благодаря огромному выбору расширений для UNO, создаваемые вами умные устройства ограничатся только вашей фантазией!
Чем она не похожа на ранние версии
В отличии от предыдущих версий UNO, где за коммуникацию между USB-интерфейсом ARDUINO и основным контроллером ARDUINO отвечал микроконтроллер ATmega8U2, новая и последняя версия содержит в себе чип ATmega16U2, позволивший увеличить скорость передачи данных и объем памяти.
В обновленной UNO Rev3 рядом с контактом AREF были добавлены выводы SDA и SCL интерфейса IIC/I2C. Появились контакты IOREF. Для более удобного использования кнопка “Reset” перемещена на угол платы.
Принципиальная схема ARDUINO UNO
Расположение и обозначение контактов
Интерфейсы передачи данных
• IIC/I2C использует входы А4 (SDA) и А5 (SCL) в линейке аналоговых входов. Вдобавок, контакты продублированы в линейке цифровых входов/выходов, рядом с физической кнопкой сброса и подписаны с обратной стороны платы.
• UART располагается в области цифровых контактов и обозначен на пинах RX0 (прием) и TX1 (передача). Подключение к ним осуществляется по схеме RX->TX, TX->RX.
• SPI находится на выводах цифровых контактов с номерами 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK), и на разъеме ICSP, расположенного рядом с микроконтроллером ATmega328. Для ATmega16U2 реализован независимый ICSP-разъем с интерфейсом SPI.
ШИМ
Контакты 8-битной широтно-импульсной модуляции (ШИМ) промаркированы на плате значком тильда “~”. Это цифровые выводы 3, 5, 6, 9, 10 и 11, позволяющие управлять уровнем выходного напряжения.
AREF
Устанавливает опорное или эталонное напряжение для аналоговых входов. Контакт используется вместе с функцией analogReference(type), которая выполняет пропорциональное сравнение напряжений на выводе AREF с аналоговым входом с генерацией значений 0..1023. Например, опорное напряжение устанавливается 5 В, а на входе аналогового контакта подается 2,5 В. Результатом выполнения сравнения станет полученное значение 512.
IOREF
Контакт используется для передачи информации подключаемым к UNO расширениям или другим микроконтроллерам об используемом рабочем напряжении. В нашем случае ARDUINO UNO ATmega328P работает от 5 В. Правильно настроенное расширение сможет получить информацию о текущем напряжение и выберет для себя соответствующий источник питания или задействует преобразователи напряжения 5 В или 3,3 В.
ICSP
Разъем ICSP (внутрисистемное последовательное программирование) разработан для непосредственного программирования центрального микроконтроллера ATmega328P или вспомогательного ATmega16U2 с помощью внешних программаторов (USB ASP, AVRISP STK500 или другой с поддержкой интерфейса SPI) без использования внутреннего загрузчика. Данный способ применяется в тех случаях, когда требуется полный объем доступной флэш-памяти, или же использование USB-соединения нецелесообразно или неудобно.
Питание ARDUINO UNO
Вы можете воспользоваться тремя вариантами подключения питания, которые предоставляет плата:
- USB-порт, через кабель USB поступает напряжение 5 В. Обращаем ваше внимание, что такого подключения в законченном проекте может и не быть.
- Разъем внешнего источника питания с “плюсовым” центральным штырьевым контактом, имеющим внутренний диаметр 2,1мм, и внешним “минусовым” контактом с диаметром 5,5мм. А также выводы на плате Vin+GND. К разъёму или контактам подключается постоянное напряжение в диапазоне 7-12 В, которое преобразуется внутренним конвертором в рабочее напряжение платы 5 В. Источником питания могут служить AC-DC блоки питания, батареи или аккумуляторы.
- Контакты Vin + GND в линейке пинов питания. На данные выводы подается напряжение в интервале 7-12В. Лучший вариант при установки в конструкцию автономного источника питания.
При одновременном подключении нескольких источников, система распознаёт наиболее высокое напряжение, и переключается на него.
Выводы 3.3В и 5В могут быть задействованы в роли источника питания дополнительных расширений.
Важно! Не запускайте ваш проект (Arduino) при недостаточном питании. UNO может самостоятельно перезапуститься, если совмещаются модули с высоким энергопотреблением: серво, моторы, большие экранные модули. Лучшим решением будет подключение таких модулей к внешним источникам напряжения. Простого USB-питания может оказаться не достаточно, особенно, когда сервопривод работает с нагрузкой.
Защита USB
Для защиты USB-порта в схему ARDUINO UNO встроен самовосстанавливающийся предохранитель. Если к USB-порту подключено более 500мА, предохранитель срабатывает и размыкает цепь, отключая питание платы. Цепь снова замыкается в том случае, когда потребляемый ток будет снижен до порогового значения.
Расположение элементов и выводов на плате ARDUINO UNO
Первое подключение
ARDUINO UNO стала первой и эталонной в серии USB ARDUINO. Теперь нет необходимости в поиске и установке программного обеспечения для связи платы с компьютерами, работающими под управлением ОС Linux или ОС MAC. Для ОС Windows необходим inf-файл, который присутствует в оболочке программирования ARDUINO IDE.
В некоторых младших сериях ARDUINO, таких как Arduino PRO MINI, для работы с платой требовалась подпайка контактов и подключение дополнительных USB/TTL преобразователей сигналов. UNO имеет все необходимые компоненты для подключения, просто соедините её USB-кабелем с компьютером. Произойдет автоматическая установка драйвера и на экране появиться сообщение
На плате загорится зеленый светодиод “ON”, информирующий вас о том, что UNO подключена к питанию.
Многие новички часто задаются вопросом, почему при включении новой платы “моргает” пользовательский светодиод оранжевого цвета “L”. Всё просто – производителем в UNO предварительно записывается простой исполняемый код, предназначенный для тестирования на работоспособность. При отсутствии в памяти какой-либо программы, “пустой” программы или программы, не обращющейся к цифровому контакту 13, этот светодиод будет всегда находится в выключенном состоянии.
Программирование
Если вы ранее не пользовались ARDUINO, то вам необходимо загрузить бесплатную оболочку для программирования ARDUINO IDE с сайта разработчика и установить ее на ваш компьютер. Загрузить сейчас.
После установки оболочки программирования вы можете приступать к программированию UNO.
Любая программа, написанная для ARDUINO, называется “скетч”. Прежде, чем вы загрузите скетч, необходимо провести настройку оболочки:
Выберите в меню “Инструменты(Tools)/Плата(Boards)” тип вашего устройства “ARDUINO/Genuine Uno”
Следующим шагом необходимо указать оболочке ARDUINO IDE порт компьютера, к которому подключен ваш USB кабель. В ОС Windows порты могут быть COM2, COM3 и т.д. На ОС MAC наименование порта может выглядеть как /dev/tty.usbserial-A6006hSc
Теперь все настроено для загрузки скетча в вашу UNO. После того, как вы нажмете кнопку “Загрузить” на панели управления ARDUINO IDE, на плате замигают светодиоды, показывающие передачу данных, и на экране компьютера появиться сообщение “Загрузка завершена” (Done Uploading).
Желаем вам удачи в создании проектов!
Интегральная схема ATMEGA328P-AU микроконтроллер ic флэш-память smd Оригинальный чип ATMEGA328P ATMEGA328
Описание и отзывы
Характеристики
products warranty
All the goods are from the manufacturer, the brand new original.
1. 365 days warranty
2, If you receive defective goods, you should exchange new goods within 7 days from the date of receipt. (Buyer should return all original and undamaged items under re-saleable condition).
3, We provide free maintenance services within one year after purchase. We will pay a one-way freight (from us to your place) when the goods are changed within a month. To replace the goods after a month of purchase, the buyer will have to pay the two shipping costs.
We will send back the goods as soon as we receive your return package.
4, Our warranty scope does not extend to any product of physical damage or partial misuse or improper installation of improper operating conditions
Payment
PCS |
|
DHL,UPS,TNT,FedEx,EMS or Post |
|
Competitive and negotiable |
|
Quality Warranty |
30-90 days |
Lead Time |
2-3 days |
Payment |
PayPal,Western Union,T/T,Ali-escrow |
Function |
protection |
Please make sure your payment account is available before you bid the item.
1.
2,
We will send the goods within 3 days after receipt of payment, 7 days later.
The goods will take longer in production and we will contact you.
3,
All payments should be cleared within 7days after you receive the item. If you really have difficulty in paying the item, please contact us firstly, we will help to solve it.
4,
If you have any special request about the details of item, please leave a note in your order.
1. The company can provide express delivery logistics for customers: DHL,UPS,EMS, fedex.
2. Within 2 kg, you can send the Netherlands post, Singapore post, HongKong post, China post.
3. The quantity of goods is huge and can be transported by sea.
We can provide different modes of transportation for our customers. If you need to specify the mode of transportation, please contact us.
|
| Лабораторный БП 0-30 вольт Драгметаллы в микросхемах Металлоискатель с дискримом Ремонт фонарика с АКБ Восстановление БП ПК ATX Кодировка SMD деталей Справочник по диодам Аналоги стабилитронов |
как запрограммировать smd atmega328
Да, вы устанавливаете 6-контактный ISCP-заголовок на печатную плату для поддержки программирования флэш-памяти, покупаете у Ebay программатор USBASP за 5 долларов и прошиваете программу Arduino прямо на плату, пропуская весь процесс загрузки через последовательный порт / USB.
Я делал это годами, все хорошо. Важно отметить, что следует использовать среду Arduino (с настройками эквивалентной / эталонной платы, процессора, напряжения и частоты, подходящими для вашей целевой платы), чтобы сначала перепрограммировать загрузчик. Это устанавливает все предохранители, чтобы гарантировать, что ATMEGA использует правильную тактовую частоту и другие настройки предохранителей, которые обычно являются трудной для работы с таблицей данных / онлайн-таблицами.
После того, как вы запустите загрузчик, затем используйте среду Arduino как обычно, но выберите «Загрузить с помощью программатора» вместо «Загрузить», и это будет использовать USBASP (убедитесь, что вы выбрали программатор в настройках инструментов программиста), чтобы прошить программу непосредственно к ATMEGA, а не к методу загрузчика USB.
Это отлично подходит для тех случаев, когда на ваших платах нет USB, например, для очень маленьких проектов, где это не нужно. Отладку по-прежнему можно выполнить с помощью внешнего последовательного интерфейса, такого как USB-последовательный адаптер FTDI, на последовательных контактах ATMEGA (который необходимо подключить к заголовку где-нибудь с помощью RX, TX и GND).
Конечно, вы можете использовать официальный Atmel AVRISP Mk2 или полный интерфейс в стиле JTAG для прошивки чипа. В любом случае, ваша печатная плата, к которой будет припаяна микросхема SMD, должна иметь поддержку программирования флэш-памяти. Если нет, добавьте это. Как вы сказали, сокет для программирования вне системы – не очень хорошее решение. Крупномасштабные производственные процессы действительно должны быть заранее запрограммированы на заводе, чтобы избежать всей этой чепухи, но это очень далеко за чертой дизайна продукта. На уровне прототипа просто поместите заголовок для программирования ISP и последовательного соединения.
Монтажная плата DIY Arduino и контрольный список
Одним из последних важных шагов в проекте является разработка специальной печатной платы. Этот этап означает создание платы Arduino своими руками, адаптированной к приложению. Двумя примерами моих прошлых проектов являются BinBoo, двоичные часы и Open Vapors, мой контроллер печи оплавления.
Работая над проектом для друга, я задумался; Было бы неплохо иметь контрольный список для включения элементов схемы на плату DIY Arduino. Раньше я, например, забыл добавить фильтр для AREF.
Эти советы основаны на 8-битной конструкции AVR, такой как микросхема ATmega328p. Вы можете применить эти советы к другим 8-битным AVR. До сих пор я не проектировал специальную плату на базе 32-битной платы / ARM. Хотя всего за 16 долларов, у меня возникнет соблазн просто припаять модуль Teensy прямо к моей готовой плате.
Ниже приведен письменный список элементов для контрольного списка DIY Arduino. Если вы хотите увидеть, как я создаю эту доску в KiCad, ознакомьтесь с этим руководством по AddOhms.
Главный процессор – ATmega328p
Большинство моих пользовательских плат используют либо ATmega328p, либо ATmega32u4.Когда мне нужна связь через последовательный порт USB, я перехожу непосредственно к 32u4. Я всегда проектирую детали для поверхностного монтажа. Для ATmega328p-AU, который поставляется в корпусе 32-TQFP. Мой процесс оплавления для поверхностного монтажа отлично справляется с этим. Для 32u4 я придерживаюсь QFP-44.
Здесь главный пункт контрольного списка, выберите правильный пакет.
Осциллятор
Тактовый сигнал заставляет все происходить внутри микроконтроллера. У 328p есть два внутренних генератора: 8 МГц и 128 кГц.Но это RC-генераторы. При изменении температуры изменяется тактовый сигнал, генерируемый RC-генератором. Это ограничение является ограничением только в том случае, если вам нужна точная синхронизация в вашем DIY Arduino. Если вы не собираетесь использовать асинхронную последовательную связь, внутренние генераторы могут работать нормально.
Нагрузочные конденсаторы кварцевого генератораЯ предпочитаю использовать кристалл, если место на плате ограничено или стоимость не вызывает большого беспокойства. Кристаллам требуется пара нагрузочных конденсаторов для формирования схемы генератора.Это руководство по применению Microchip – отличный ресурс для понимания основ Crystal Oscillator.
К счастью, Atmel (теперь Microchip) предоставила некоторые рекомендуемые значения в своей таблице данных.
Они рекомендуют все от 12 пФ до 22 пФ. Используйте одинаковое значение для обоих конденсаторов. Одна из моих рекомендаций – использовать сверхстабильный керамический конденсатор. Так что ищите что-нибудь с «диэлектриком C0G». Они не меняются или почти не меняются в зависимости от приложенного напряжения, температуры или времени.
Конденсаторы развязки VCC
Вам нужен развязывающий конденсатор для каждого вывода VCC. Обычно я использую керамические конденсаторы X7R емкостью 100 нФ, рассчитанные как минимум на 16 В. Более высокое номинальное напряжение гарантирует, что эффект смещения постоянного тока сведен к минимуму даже до 5 вольт.
Если между моим регулятором и микроконтроллером больше 6 дюймов, я также добавляю керамический конденсатор емкостью 1 мкФ рядом с ИС. Опять же, я придерживаюсь X7R и просто получаю максимально возможное номинальное напряжение.
Кнопка сбросаКак правило, на моей схеме я сохраняю такие сигналы, как RESET, как «метки узлов», а не проводники, проходящие по всей плате.Просто используйте одно и то же слово в каждом месте, где вам нужен сигнал RESET. На платах, использующих загрузчик Arduino, я добавляю подтяжку для схемы автоматического сброса. Без загрузчика я обычно не использую резистор и просто использую внутреннюю подтяжку на выводе RESET.
АВТО СБРОСЕсли вы напрямую программируете свою DIY Arduino с помощью внешнего программатора, вы можете пропустить этот раздел. Чтобы использовать загрузчик Arduino для программирования через USB или последовательный порт, вам нужно добавить еще несколько частей.В какой-то момент я сделаю более подробное описание того, как работает автоматический сброс. На данный момент требуются два компонента: конденсатор 100 нФ и резистор 100 кОм.
Без дополнительного диода можно обойтись. Однако вы рискуете разрядить конденсатор и вызвать сбой выше VCC. Если у вас есть место для него на доске, используйте его. (Я не размещал его ни на одной из своих пользовательских плат, но после некоторых симуляций iCircuit я начинаю думать, что мне везет.)
Как работает автосброс Arduino (короткая версия)
Когда последовательный порт неактивен, сигнал DTR остается на высоком уровне. Таким образом, обе стороны конденсатора находятся на высоком уровне благодаря подтягивающему резистору. Когда порт открывается, DTR становится низким, разряжая конденсатор до нуля вольт.
Это кратковременное падение до нуля сбрасывает 328p. В конце концов, конденсатор перезаряжается через подтягивающий резистор, выводя процессор из состояния сброса и позволяя ему загрузиться.
Простой, но очень эффективный взлом.
Регуляторы мощности для DIY Arduino
Если ваша плата питается от USB, вам особо нечего делать. Добавьте порт USB и конденсатор от десяти до сорока семи микрофарад. Имейте в виду, что USB действительно имеет текущую спецификацию. Так что я бы не стал использовать больше 47 мкФ.
Линейный регулятор (LDO)
При использовании линейного регулятора мне нравится NCP1117. Он доступен в популярном фиксированном напряжении, а также в регулируемой версии. В зависимости от упаковки он может выдавать до одного усилителя.Падение напряжения составляет около 1 В для нагрузок 100 мА. Это отличный маленький регулятор для платы Arduino своими руками.
Цена на FindChips.com
Кроме того, это не очень дорого даже в небольших количествах.
Выводы питанияПри использовании встроенного регулятора подумайте о том, как добавить мощность от внешних источников. Даже если вы собираетесь использовать цилиндрический разъем или какой-либо другой разъем для конкретного приложения, подумайте о контактах заголовка. Это позволит вам обойти цилиндрический разъем, обеспечить дополнительные подключения питания для других устройств или доступную точку отладки.
Заголовок контактов ввода / выводаВ проектах, где у меня есть контакты заголовка, общие или специфические для приложения, я всегда стараюсь добавить дополнительные контакты заземления. Кажется, мне всегда не хватает пары.
Последовательный заголовок
Не люблю добавлять лишний чип USB-to-serial. Одна из причин заключается в том, что для проектов, в которых мне нужен USB, я использую что-то вроде 32u4. Он уже имеет встроенный интерфейс USB. Вместо этого я добавляю вывод заголовка в стиле FTDI. Это дополнение позволяет легко подключать такие платы, как FTDI Friend от Adafruit.
Одним из преимуществ этого подхода является то, что он имитирует светодиоды TX или RX и множество других компонентов.
Светодиоды мощности
Не забывайте о самом важном: светодиоде питания. Поскольку светодиод является индикатором, используйте большой резистор, например 1 кОм. Вам нужно всего несколько миллиампер, чтобы увидеть, когда плата включена. Не рассчитывайте ограничивающий резистор для питания светодиода с током 20 мА. Это пустая трата энергии, он будет слишком ярким и потребляет больше тока, чем 328p!
ЗаключениеЭто те элементы, которые я включаю или, по крайней мере, отмечаю при разработке DIY Arduino.Что вы добавляете помимо нестандартных элементов платы для конкретного приложения?
% PDF-1.6 % 664 0 объект > эндобдж xref 664 114 0000000016 00000 н. 0000003365 00000 н. 0000003500 00000 н. 0000003692 00000 н. 0000003719 00000 н. 0000003769 00000 н. 0000003805 00000 н. 0000004007 00000 н. 0000004086 00000 н. 0000004163 00000 п. 0000004242 00000 н. 0000004321 00000 п. 0000004400 00000 н. 0000004479 00000 н. 0000004558 00000 н. 0000004637 00000 н. 0000004716 00000 н. 0000004795 00000 н. 0000004874 00000 н. 0000004953 00000 п. 0000005032 00000 н. 0000005110 00000 н. 0000005188 00000 п. 0000005266 00000 н. 0000005344 00000 п. 0000005422 00000 н. 0000005500 00000 н. 0000005578 00000 н. 0000005656 00000 н. 0000005734 00000 н. 0000005812 00000 н. 0000005890 00000 н. 0000005968 00000 н. 0000006230 00000 н. 0000006400 00000 н. 0000006503 00000 н. 0000006605 00000 н. 0000007270 00000 н. 0000007881 00000 н. 0000008623 00000 п. 0000008795 00000 н. 0000009287 00000 н. 0000009857 00000 н. 0000010627 00000 п. 0000011601 00000 п. 0000012602 00000 п. 0000013574 00000 п. 0000013708 00000 п. 0000014032 00000 п. 0000014999 00000 н. 0000015403 00000 п. 0000016327 00000 п. 0000017173 00000 п. 0000021940 00000 п. 0000027286 00000 п. 0000031615 00000 п. 0000031847 00000 п. 0000032092 00000 п. 0000041887 00000 п. 0000042894 00000 п. 0000059708 00000 п. 0000059962 00000 н. 0000060511 00000 п. 0000060634 00000 п. 0000063787 00000 п. 0000063826 00000 п. 0000064316 00000 п. 0000064395 00000 п. 0000064453 00000 п. 0000064544 00000 п. 0000064717 00000 п. 0000064839 00000 п. 0000064961 00000 п. 0000065103 00000 п. d!> 5 .mmUrNeJb6
Введение в ATmega328p Распиновка, техническое описание и технические характеристики
ATmega328p – однокристальный, высокопроизводительный и эффективный микроконтроллер, созданный Atmel в семействе megaAVR. Это 8-битный микроконтроллер на базе AVR RISC. В этом посте мы подробно узнаем о распиновке ATmega328p, ее техническом описании, спецификациях и методах программирования.
Микросхема Atmega328pОн состоит из флэш-памяти ISP 32 КБ, с возможностью чтения во время записи, 2 КБ SRAM, (статическое ОЗУ), 1 КБ EEPROM , 23 вывода ввода / вывода общего назначения , 16 МГц часы , 32 рабочих регистра общего назначения, три гибких таймера / счетчика с режимами сравнения (два 8-битных и один 16-битный), внутренние и внешние прерывания, последовательный программируемый UART, байтовые контакты интерфейса I2C (межинтегральная схема), Последовательный порт SPI, 6-канальный 10-битный аналого-цифровой преобразователь, программируемый сторожевой таймер с внутренним генератором и пять программно выбираемых режимов энергосбережения.Устройство работает в диапазоне напряжений 1,8-5,5 В.
Примечание: 328p в ATmega328p означает: 32 для 32 КБ флэш-памяти, 8 для архитектуры Bit RISC (шина данных) и p для «пикопитания» (потребляет меньше энергии при определенных обстоятельствах. )
Atmega328P Распиновка: Распиновка ATmega328P№ контакта | Имя контакта | Функция контакта | Описание функции контакта |
---|---|---|---|
1 | PC6 | PIN-код сброса для сброса микроконтроллера. | |
2 | PD0 | Цифровой контакт (RX) | Это входной контакт для последовательной связи |
3 | PD1 | Цифровой контакт (TX) | Это выходной контакт для последовательной связи |
4 | PD2 | Цифровой вывод | Используется как внешнее прерывание 0 |
5 | PD3 | Цифровой вывод (PWM) | Используется как внешнее прерывание | 02 | 6 | PD4 | Цифровой вывод | Используется для внешнего источника счетчика Timer0 |
7 | Vcc | Положительное напряжение | Положительное питание системы. |
8 | GND | Земля | Земля системы |
9 | XTAL | Crystal Oscillator | Этот вывод должен быть подключен к одному выводу кварцевого генератора для обеспечения внешнего тактового генератора к микросхеме |
10 | XTAL | Кварцевый осциллятор | Этот вывод также должен быть подключен к другому выводу кварцевого генератора для подачи внешнего тактового импульса на микросхему |
11 | PD5 | Цифровой вывод (ШИМ) | Вывод 11 используется для внешнего источника счетчика Таймер1 |
12 | PD6 | Цифровой вывод (ШИМ) | Положительный аналоговый компаратор i / ps |
13 | PD7 | ВыводОтрицательный аналоговый i / ps компаратора | |
14 | PB0 | Цифровой вывод | Счетчик или Вывод источника входного сигнала таймера |
15 | PB1 | Цифровой вывод (PWM) | Сопоставление счетчика или таймера A. |
16 | PB2 | Цифровой вывод (PWM) | Этот вывод действует как выбор ведомого i / p. |
17 | PB3 | Цифровой вывод (PWM) | Этот вывод используется в качестве вывода основных данных и ввода данных ведомого для интерфейса SPI. |
18 | PB4 | Цифровой вывод | Этот вывод действует как вход главного тактового сигнала и выход ведомого тактового сигнала. |
19 | PB5 | Цифровой вывод | Этот вывод действует как выход основного тактового сигнала и вход ведомого тактового сигнала для SPI. |
20 | AVcc | Положительное напряжение | Положительное напряжение для АЦП (питание) |
21 | AREF | Аналоговое опорное напряжение | Аналоговое опорное напряжение для АЦП (аналогово-цифровой преобразователь) | GND | Земля | Земля системы |
23 | PC0 | Аналоговый вход | Аналоговый вход, цифровое значение (канал 0) |
24 | PC1 | PC1 Аналоговый | 9017 Цифровое значение аналогового входа (канал 1)|
25 | PC2 | Аналоговый вход | Цифровое значение аналогового входа (канал 2) |
26 | PC3 | Аналоговый вход | Цифровое значение аналогового входа (канал 3) |
27 | PC4 | Аналоговый вход | Аналоговый вход, цифровое значение (cha нн.4).Этот вывод также можно использовать в качестве последовательного интерфейса для передачи данных. |
28 | PC5 | Аналоговый вход | Аналоговый вход цифрового значения (канал 5). Этот вывод также используется в качестве тактовой линии последовательного интерфейса. |
Atmega328p Технические характеристики
Тип программной памяти | Flash | |||
Размер программной памяти (КБ) | 32 | |||
Скорость ЦП (MIPS / DMIPS) | B) | 2,048 | ||
Данные EEPROM / HEF (байты) | 1024 | |||
Периферийные устройства цифровой связи | 1-UART, 2-SPI12, 1-I2C 9017 9017 9017 9017 9017 9017 / Сравнить / Периферийные устройства PWM | 1 входной захват, 1 CCP, 6PWM | ||
Таймеры | 2 x 8-битные, 1 x 16-битные | |||
Количество компараторов | ||||
Диапазон температур (° C) | от -40 до 85 | |||
Диапазон рабочего напряжения (В) | 1.От 8 до 5,5 | |||
Счетчик выводов | 32 | |||
Низкое энергопотребление | Да |
ATmega328p Лист данных:
Техническое описаниеAtmega328p содержит всю информацию, необходимую для начала работы с ним.
** Чтобы загрузить техническое описание Atmega328p, щелкните здесь
Платы микроконтроллера на базе ATmega328p:Adafruit METRO 328 – Adafruit METRO 328 – довольно удобный микроконтроллер.Он имеет ATmega328 в ядре с 32 КБ флэш-памяти и 2 КБ оперативной памяти, работающей на частоте 16 МГц.
Arduino Pro Mini 328 – Arduino Pro Mini 328 – это плата микроконтроллера, в основе которой лежит чип ATmega328. Он состоит из 14 цифровых входов / выходов (из которых 6 являются выходами ШИМ), 6 аналоговых входов, встроенного резонатора на 8 МГц, кнопки сброса и отверстий для установки разъемов контактов. Шестиконтактный разъем можно подключить к кабелю FTDI или последовательному адаптеру TTL для питания платы, а также для целей программирования.
Arduino Uno R3 – Arduino Uno – это плата микроконтроллера с открытым исходным кодом, основанная на микрочипе ATmega328P. Он состоит из 6 аналоговых входных контактов, 14 цифровых входных / выходных контактов (из которых 6 имеют ШИМ), керамического кварцевого резонатора 16 МГц, порта USB-B, разъема ICSP, разъема питания и кнопки сброса.
Arduino Nano – Arduino Nano имеет ту же функциональность, но меньше по размеру, чем Arduino Uno. Другое отличие состоит в том, что на Nano нет разъема питания постоянного тока, а питание осуществляется с помощью USB-кабеля Mini-B вместо стандартного.
Методы программирования ATmega328p:
Программирование микроконтроллеров может быть до некоторой степени трудным, поскольку для них требуются специальные программаторы и файлы .hex. А также для написания кода необходимы знания языка программирования C.
Чтобы упростить задачу, Arduino создал файл .hex, который может быть установлен на микросхемах AVR, что позволяет нам программировать плату через последовательный порт. Это гарантирует, что для программирования микроконтроллера (после установки шестнадцатеричного файла) все, что вам нужно, – это последовательное соединение между микроконтроллером и компьютером, которое может быть достигнуто с помощью адаптера USB-UART.Этот шестнадцатеричный файл называется загрузчиком Arduino .
В процессе производства электронных устройств микроконтроллеры обычно программируются после того, как они были установлены на печатной плате. Этот метод программирования называется внутрисистемное программирование (ISP), и он требует, чтобы на печатной плате были определенные выводы заголовка, через которые можно получить доступ к микроконтроллеру для программирования.
Большинство плат Arduino поставляются с 2×3-контактными разъемами, которые используются для внутрисистемного программирования, известного как внутрисхемное последовательное программирование (ICSP).Контакты заголовка Arduino ICSP состоят из 3 контактов SPI (MOSI (D11), MISO (D12), SCK (D13)), VCC, GND и контакта сброса. Подключив микроконтроллер Atmega328p к контактам ICSP, мы можем прошить микроконтроллер Atmeg328p с помощью загрузчика Arduino.
Необходимые компоненты
Для прошивки загрузчика в микросхеме ATmega328p требуются следующие компоненты:
- Arduino Uno
- Перемычки
- Макетная плата
- Микроконтроллер Atmega328p
- кварцевый генератор 16 МГц
- Конденсаторы 22pf
Процедура записи загрузчика на ATmega328p-
- Подготовьте Arduino как ISP-программиста
В Arduino IDE, на вкладке «Файл»> Примеры, одним из примеров является «Arduino как ISP», который при загрузке на плату Arduino превращает плату в программатора ISP. .Откройте этот пример и загрузите его на плату Arduino Uno.
Подготовка Arduino как ISP-программиста- Подключение
Затем подключите Atmega328p, который нужно прошить, к Arduino через макетную плату, как показано на рисунке ниже.
Схема записи загрузчикаНиже приведена схема контактов, показанная на рисунке выше:
Arduino – Atmega328P D13 – Контакт 19D12 – Контакт 18D11 – Контакт 17D10 – Сброс на контакте 1 (конденсатор не требуется).VCC – 5VGND – GND
- Записать загрузчик
Теперь, когда соединения выполнены, как показано на рисунке, мы можем записать загрузчик на микросхему микроконтроллера. В среде Arduino IDE на вкладке инструментов> Платы выберите Arduino Uno в качестве типа платы. Следующим шагом является переход к инструментам> программист и выбор « Arduino как ISP » в качестве программиста. Последний шаг для записи загрузчика на чип – перейти к инструментам и выбрать опцию записи загрузчика.
Записать загрузчик Atmega328pКак программировать ATmega328p с помощью Arduino IDE:
Чтобы запрограммировать микроконтроллер ATmega328p с помощью Arduino IDE, микроконтроллер может быть подключен к компьютеру через какое-то оборудование. Обычно это делается двумя основными способами:
- Использование адаптера USB – последовательный / TTL
- Использование платы Arduino
Адаптер USB – последовательный / TTL используется для преобразования сигналов данных с USB на компьютере в последовательный / TTL для микроконтроллера и наоборот.Это обеспечивает связь микроконтроллера (последовательного интерфейса) с Arduino IDE, работающей на ПК (USB).
Необходимые компоненты: –Для этого подхода требуются следующие компоненты;
- Микроконтроллер Atmega328P с установленным загрузчиком Arduino
- Макетная плата
- Адаптер USB к последовательному порту / TTL
- Кварцевый генератор 16 МГц
- Конденсаторы 22pf x2
- Конденсатор 100nf Ом 01
- Перемычка Схема
- Путем замены микроконтроллера на Arduino Uno на тот, который нужно запрограммировать.
- Путем использования любой из плат Arduino в качестве внутрисистемного программатора.
- Arduino Uno
- Макетная плата
- Адаптер USB к последовательному порту / TTL
- Кварцевый генератор 16 МГц
- Конденсаторы 22 пФ x2
- Провода перемычки
- Резистор 10 кОм
- Резистор 100 Ом
- Схема
- Светодиод
- Светодиод
- Светодиод
Подключите компоненты, как показано на рисунке ниже.
Подключение Arduino к ATmega328p для загрузки кодаПримечание: При использовании этого подхода важно удалить микроконтроллер платы Arduino, чтобы предотвратить помехи.
Код загрузкиПроцесс загрузки кода такой же, как уже описанный. Выберите файл кода, который должен быть загружен на ATmega328p, затем выберите тип платы (ATmega328p), а также правильный порт и нажмите кнопку загрузки. Код будет загружен в микроконтроллер.
Проекты и приложения ATmega328p:В реальном мире есть много применений Atmega328P.
Микросхема ATmega328P совместима с большим набором инструментов разработки программ и систем, таких как компиляторы C, макроассемблеры, программный отладчик / симуляторы, внутрисхемные эмуляторы и оценочные комплекты.
Режим быстрой ШИМ также обеспечивает генерацию высокочастотных сигналов ШИМ. Это позволяет использовать его для регулирования мощности, выпрямления и применения ЦАП (цифро-аналогового преобразователя).Некоторые основные области применения чипа перечислены ниже:
- Системы управления промышленным оборудованием
- Оборудование и приложения, работающие на солнечной энергии
- Приложения на основе Интернета вещей
- Приложения на основе источников питания и зарядных устройств
- Погодные системы
- Приложения беспроводной связи
- Приложения на основе безопасности
- Медицина и здравоохранение проекты и системы
- Автомобильные приложения
Читайте похожие статьи:
| Распиновка и спецификации Arduino UNO в деталях
| Распиновка и спецификации Arduino Nano в деталях
| Распиновка и подробные характеристики Arduino Pro Mini
Введение в ATmega328 – Инженерные проекты
Всем привет! Я надеюсь, что вы все будете в полном порядке и весело проведете время.Сегодня я собираюсь подробно рассказать вам о Introduction to ATmega328. ATmega328 – это микроконтроллер Advanced Virtual RISC (AVR). Он поддерживает 8-битную обработку данных. ATmega-328 имеет внутреннюю флеш-память 32 КБ.
ATmega328 имеет электрически стираемую программируемую постоянную память (EEPROM) емкостью 1 КБ. Это свойство показывает, если электропитание, подаваемое на микроконтроллер, отключено, даже тогда он может хранить данные и может предоставлять результаты после подачи электропитания.Кроме того, ATmega-328 имеет 2 КБ статической оперативной памяти (SRAM). Другие характеристики будут объяснены позже. ATmega 328 имеет несколько различных функций, которые делают его самым популярным устройством на современном рынке. Эти функции включают усовершенствованную архитектуру RISC, хорошую производительность, низкое энергопотребление, счетчик реального времени с отдельным генератором, 6 контактов PWM, программируемый последовательный USART, блокировку программирования для безопасности программного обеспечения, пропускную способность до 20 MIPS и т. Д. Более подробная информация о ATmega 328 будет приводится ниже в этом разделе.
Введение в ATmega328
- ATmega328 – это 8-разрядный 28-контактный микроконтроллер AVR, произведенный Microchip, соответствует архитектуре RISC и имеет программную память флэш-памяти объемом 32 КБ.
- Atmega328 – это микроконтроллер, используемый в базовых платах Arduino, то есть Arduino UNO, Arduino Pro Mini и Arduino Nano.
- Он имеет EEPROM памяти размером 1 КБ, а его память SRAM составляет 2 КБ.
- Он имеет 8 контактов для операций АЦП, которые в совокупности образуют PortA (PA0 – PA7).
- Он также имеет 3 встроенных таймера, два из которых – 8-битные, а третий – 16-битный.
- Вы, должно быть, слышали об Arduino UNO, UNO основана на микроконтроллере atmega328. Это сердце ООН. 🙂
- Он работает в диапазоне от 3,3 В до 5,5 В, но обычно мы используем стандартное напряжение 5 В.
- Его превосходные характеристики включают экономичность, низкое рассеивание мощности, блокировку программирования в целях безопасности, счетчик реального времени с отдельным генератором.
- Обычно используется в приложениях для встраиваемых систем.Вам следует взглянуть на эти примеры встроенных систем из реальной жизни, мы можем спроектировать их все, используя этот микроконтроллер.
- В следующей таблице показаны полные характеристики ATmega328:
Характеристики ATmega328 Кол-во выводов 28 ЦП RISC Рабочее напряжение1,8 – 5,5 В Программная память 32 КБ Тип программной памяти Флэш-память SRAM 2048 байт EEPROM 10-битный Количество каналов АЦП 8 Выводы ШИМ 6 Компаратор 1 Выводы корпусов (4) 8-контактный PDIP128-контактный QFN / MLF
32-контактный QFN / MLF
Генератор до 20 МГц 901 72 Таймер (3) 8-битный x 2 и 16-битный x 1 Улучшенный сброс при включении Да Таймер включения питания Да I / O Пины 23 Производитель Микрочип SPI Да I2C Да Сторожевой таймер 16 Да 9017 Обнаружение коричневого цветаСброс Да USI (универсальный последовательный интерфейс) Да Минимальная рабочая температура от -40 ° C до +85 ° C ATmega328 Контакты микроконтроллер AVR, имеющий в общей сложности двадцать восемь (28) контактов.
- Все контакты в хронологическом порядке перечислены в таблице, показанной на рисунке ниже.
- С помощью схемы распиновки мы можем понять конфигурацию контактов любого электронного устройства, так что вы работаете с любой инженерной Project вы должны сначала прочитать распиновку компонентов. Распиновка
- ATmega328 показана на рисунке ниже:
- Функции, связанные с контактами, должны быть известны для правильного использования устройства. Контакты
- ATmega-328 разделены на разные порты, которые подробно описаны ниже.
- VCC – цифровой источник напряжения.
- AVCC – вывод напряжения питания для аналого-цифрового преобразователя.
- GND обозначает землю и имеет 0 В.
- Порт A состоит из контактов от PA0 до PA7. Эти контакты служат аналоговым входом для аналого-цифровых преобразователей. Если аналого-цифровой преобразователь не используется, порт A действует как восьми (8) битовый двунаправленный порт ввода / вывода.
- Порт B состоит из контактов от PB0 до PB7. Этот порт является 8-битным двунаправленным портом, имеющим внутренний подтягивающий резистор.
- Порт C состоит из контактов от PC0 до PC7. Выходные буферы порта C имеют симметричные характеристики возбуждения с возможностью источника, а также с высоким потреблением.
- Порт D состоит из контактов от PD0 до PD7. Это также 8-битный порт ввода / вывода, имеющий внутренний подтягивающий резистор.
- Все порты AVR показаны на рисунке ниже.
- AREF – это аналоговый опорный вывод для аналого-цифрового преобразователя.
- Итак, это краткое изложение всех выводов микроконтроллера AVR ATmega328.
- Архитектура устройства представляет информацию о конкретном устройстве. Архитектура
- ATmega-328 показана на рисунке ниже.
- ATmega 328 имеет три типа памяти:
- Флэш-память: 32 КБ. Это программируемое постоянное запоминающее устройство (ПЗУ). Это энергонезависимая память.
- SRAM: 2 КБ. – статическая оперативная память. Это энергозависимая память, т.е. данные будут удалены после отключения источника питания.
- EEPROM: 1 КБ. – это электрически стираемая программируемая постоянная память.
На рисунке ниже показаны области памяти - AVR.
- ATmega-328 имеет тридцать два (32) регистра общего назначения (GP).
- Все эти регистры являются частью статической оперативной памяти (SRAM).
- Все регистры представлены на рисунке ниже.
- Различные версии одного и того же устройства обозначаются разными пакетами этого устройства.
- Каждая упаковка имеет разные размеры, чтобы их можно было легко различить. Пакеты
- ATmega 328 приведены в таблице, приведенной на рисунке ниже.
- Блок-схема показывает внутреннюю схему и последовательность выполнения программы любого устройства. Блок-схема
- ATmega 328 показана на рисунке ниже.
- Для выполнения любой задачи мы можем выбрать устройство на основе его характеристик.то есть соответствуют ли его функции для получения желаемых результатов или нет.
- Некоторые из основных характеристик микроконтроллера AVR ATmega328 показаны в таблице, приведенной на рисунке ниже.
- ATmega328 – это микроконтроллер, используемый в плате Arduino UNO.
- Когда мы загружаем код в Arduino UNO, он фактически загружается в микроконтроллер Atmega328.
- Программный драйвер, называемый загрузчиком, предварительно установлен во флэш-памяти микроконтроллера Atmega328, что делает его совместимым с Arduino IDE.
- AVR Atmega328, подключенный к Arduino, показан на рисунке ниже:
- Контакты ATmega328 подключены к соответствующим контактам Arduino.
- Их связь друг с другом показана на схеме выводов, показанной на рисунке ниже.
- Аналоговые выводы обведенной секции состоят из выводов Arduino, которые подключены к соответствующим выводам микроконтроллера AVR ATmega-328.
- Я написал обе булавки друг напротив друга, это поможет легко понять.
- Если вы хотите работать с этой платой Arduino, вы должны попробовать эти проекты Arduino для начинающих, они помогут вам заполучить Arduino.
- Полный пакет, включающий ATmega 328 и Arduino, можно использовать в нескольких различных реальных приложениях.
- Может использоваться в проектах встраиваемых систем.
- Может также использоваться в робототехнике.
- Квадрокоптер и даже небольшой авиалайнер тоже может быть сконструирован через него.
- Системы контроля и управления питанием также могут быть подготовлены с использованием этого устройства.
- Я разработал эту систему домашней безопасности с использованием Arduino UNO, вам стоит взглянуть на нее.
- Если вы хотите начать работу с этим микроконтроллером, я бы посоветовал вам сделать это с помощью Arduino.
- Преимущество использования Arduino заключается в том, что вы можете использовать все его встроенные библиотеки, что значительно упростит работу.
- После разработки вашего проекта на Arduino, затем спроектируйте базовую схему Atmega-328, которая довольно проста, и я обсуждал выше.
- Теперь вы должны быть осторожны при использовании его контактов, контакты Atmega328 и Arduino обсуждались выше.
- Еще одна вещь, о которой следует упомянуть, это то, что прежде чем работать с оборудованием, вы должны сначала спроектировать его Proteus Simulation.
- Загрузите библиотеку Arduino для Proteus, а затем создайте на ней свой проект.
- Как только вы убедитесь, что все в порядке, спроектируйте его схему на плате Wero или PCB (печатная плата), и ваш проект будет готов.🙂
- PB0 – GPIO14
- PB1 – GPIO15
- PB2 – GPIO16
- PB3 – GPIO17
- PB4 – GPIO18
- PB5 – GPIO19
- PB6 – GPIO9
- PB7 – GPIO10
- PC0 – GPIO23
- ПК1 – GPIO24
- ПК2 – GPIO25
- PC3 – GPIO26
- PC4 – GPIO27
- PC5 – GPIO28
- PC6 – GPIO1
- PD0 – GPIO2
- PD1 – GPIO3
- PD2 – GPIO4
- PD3 – GPIO5
- PD4 – GPIO6
- PD5 – GPIO11
- PD6 – GPIO12
- PD7 – GPIO13
- IN0 – GPIO4
- IN1 – GPIO5
- прием – GPIO2
- TX – GPIO3
- MOSI – GPIO17
- MISO – GPIO18
- SS – GPIO16
- SCK – GPIO19
- SDA – GPIO27
- SCL – GPIO28
- T0 – GPIO6
- T1 – GPIO11
- TOSC1 – GPIO9
- TOSC2 – GPIO10
- ICP1 – GPIO
- AN0 (положительный) – GPIO12
- AN1 (отрицательный) – GPIO13
- OC0B – GPIO11
- OC0A – GPIO12
- OC1A – GPIO15
- OC1B – GPIO16
- OC2A – GPIO17
- OC2B – GPIO5
- АЦП0 – GPIO23
- АЦП1 – GPIO24
- АЦП2 – GPIO25
- АЦП3 – GPIO26
- АЦП4 – GPIO27
- АЦП5 – GPIO28
- AVCC – контакт 20
- VCC – контакт 7
- GND – Pin8, Pin22
- XTAL1 – GPIO9
- XTAL2 – GPIO10
- Большинство встроенных систем, таких как IoT, используют ATmega328 для выполнения нескольких видов операций из-за его обширных примеров и вспомогательных материалов в Интернете.
- Он используется в Arduino, что делает его самым популярным контроллером.
Подключите адаптер USB к последовательному / TTL к микросхеме ATmega328p, как показано на рисунке ниже.
Подключение ATmega328p к последовательному TTL адаптеру** Источник изображения: программирование ATmega328p
Код загрузкиЗагрузка кода в микроконтроллер – простая задача. После ввода кода выберите порт, к которому подключен адаптер, затем введите тип платы «ATmega328p» и нажмите кнопку загрузки. Загрузка завершится всего через несколько секунд, и микросхема ATmega328 будет готова к использованию.
Использование платы Arduino:Второй способ предполагает использование платы Arduino одним из двух аналогичных методов:
Первый способ – это более простой способ загрузки кода в микросхему ATmega328p, поскольку он включает в себя простую замену микроконтроллера, присутствующего на Uno, на тот, который нам нужно запрограммировать. Просто поменяйте местами микроконтроллеры и нажмите кнопку загрузки.
Второй способ включает использование Arduino Uno в качестве внутрисистемного программатора . Подобно тому, как мы записываем загрузчик в чип, мы также можем использовать заголовок Arduino ICSP для загрузки кода в чип ATmega328.
Необходимые компонентыТеперь давайте подробно рассмотрим распиновку Atmega328:
Распиновка ATmega328
Описание контактов ATmega328
Архитектура ATmega328
Память ATmega328
Регистры ATmega328
Пакеты ATmega328
Блок-схема ATmega328
Характеристики ATmega328
ATmega328 и Arduino
Контакты ATmega328 и Arduino
Приложения Atmega328
Как начать работу с Atmega328
В учебном пособии Введение в ATmega328 представлено подробное обсуждение базового использования ATmega 328. Я полностью предоставил все необходимые сведения об использовании микроконтроллера AVR. Если у вас возникнут проблемы, вы можете в любое время задать их нам в комментариях. Наша команда всегда готова помочь вам, ребята. Я поделюсь со всеми вами другими удивительными темами в своих следующих уроках. Так что пока позаботьтесь 🙂
Автор: Сайед Зайн Насир
https: // www.theengineeringprojects.com/Меня зовут Сайед Зайн Насир, основатель инженерных проектов (TEP). Я программист с 2009 года, до этого я просто занимаюсь поиском, делаю небольшие проекты, а теперь я делюсь своими знаниями через эту платформу. Я также работаю фрилансером и выполнял множество проектов, связанных с программированием и электрическими схемами. Мой профиль Google +
Навигация по сообщениям
Arduino с нуля Часть 12 – Схема ATMEGA328P
В части 11, система DTR и RESET разобрали по частям.Теперь мы, наконец, завершаем схематическую часть этого проекта, публикуя схему ATMEGA328P, спецификацию и быстро просматривая заголовки экрана.
Создайте Arduino UNO R3 с нуля Содержание
Подсистема ATMEGA328P Схема KiCad
По сравнению с тем, как выглядит официальная схема для этого раздела, я думаю, что наша схема ATMEGA328P неплохо ее очистила.
Выбор детали
Начиная с верхней части схемы ATMEGA328P, заголовок ICSP представляет собой простой заголовок 2 × 3, как и для 16U2, поэтому мы можем снова использовать ту же часть.То же самое касается резистора 10 кОм и диода защиты от скачков напряжения.
Все конденсаторы имеют емкость 0,1 мкФ (100 нФ), поэтому мы продолжим использовать те, которые были выбраны ранее.
Керамический резонатор – это Murata CSTCE16M0V53-R0, как указано на официальной схеме, и я не вижу причин менять это. Он монтируется на поверхность, включает в себя грузовые крышки и экономит деньги в долгосрочной перспективе. Parts.io показывает фактор риска 2,5, что превышает допустимую норму, поэтому я возьму на себя этот риск в обмен на использование детали, которая, как я знаю, работает.Резистор 1M будет простым резистором для поверхностного монтажа размером 0805, допуском 1%, 1/8 Вт, потому что он никогда не будет видеть никакого реального тока.
Вместо того, чтобы использовать паяльную перемычку, которую использовал Arduino, я просто добавил резистор 0R на схему. Я знаю, что многим людям неудобно демонтировать компоненты для поверхностного монтажа, поэтому я могу изменить свое мнение позже.
Резисторы 1K на последовательных линиях и при понижении напряжения DTR не представляют большого труда, и я нашел для этого несколько хороших резисторов Vishay 0805.
Последней частью подсистемы 328P является кнопка. Значение, указанное на схеме, не очень помогает, но простой взгляд на него показывает, что это не совсем техническая часть. Обычная четырехконтактная тактильная кнопка. Я выберу поверхностный монтаж и небольшую высоту, чтобы убрать его с дороги. Я также выбрал деталь с большим нажатием кнопки, так что это не самая простая вещь в мире для активации. Я думаю, что необходимое усилие срабатывания составляет около 250 граммов? Это Panasonic EVQ-Q2U02W.
Вот спецификация подсистемы ATMEGA328P: Arduino UNO R3 с нуля ATMEGA328P BOM
Разъемы Arduino Shield
Заголовки щита не должны содержать для нас никакой тайны. Это интерфейс, который мы используем, чтобы подключиться к контактам ATMEGA328P, либо безжалостно вставляя перемычки, либо прикрепляя к нему экран (возможно, I2C и SPI Education Shield?).
Очень быстро, вот схема KiCad, которую я собрал…
Разъемы представляют собой один 6-позиционный гнездовой разъем для аналоговых подключений, пару 8-позиционных гнездовых разъемов для подключения питания и первого цифрового штыревого разъема, а также один 10-позиционный гнездовой разъем для другого цифрового штыревого разъема.
На оригинале это компоненты со сквозным отверстием, но я не вижу для этого причины. Мы также можем использовать поверхностный монтаж. Я выбрал 6-, 8- и 10-позиционные SMD-разъемы от Sullins Connector Solutions с позолотой контактов.
Вот спецификация подсистемы заголовка Arduino Shield: Arduino UNO R3 из спецификации заголовка Scratch Shield
Далее: полная схема и спецификация!
ATmega328 Расширитель аналоговых портов ввода / вывода с использованием шины I2C
В этом проекте объясняется взаимодействие преобразователя PCF8591 (ведомого) с микроконтроллером ATmega328 (ведущее устройство) с использованием шины I2C для прямого получения нескольких аналоговых входов и выходов.Микроконтроллер ATmega328 (MCU) на плате Arduino Uno состоит всего из шести аналоговых входов, чего недостаточно для некоторых проектов, которым требуется больше аналоговых входов. Эта схема имеет двадцать аналоговых входов, пять аналоговых выходов и ЖК-дисплей для отображения.
Схема и рабочая
Принципиальная схема расширителя аналогового порта ввода-вывода ATmega328, использующего шину I2C, показана на рис. 1. Он построен на базе пяти PCF8591 (от IC1 до IC5), ATmega328 (IC6) и нескольких других компонентов.
Инжир.1: Принципиальная схема расширителя портов ввода-вывода ATmega328PCF8591 представляет собой микросхему 8-битного аналого-цифрового преобразования (АЦП) и 8-битного цифро-аналогового преобразования (ЦАП). Как показано на принципиальной схеме, вы также можете заменить ATmega328 платой Arduino Uno напрямую, подключив выводы SCL и SDA Arduino к PCF8591.
В этой схеме соединения шины I2C включают в себя контакты 9 и 10 PCF8591 и контакты 27 и 28 ATmega328, которые являются выводами SDA и SCL соответственно. К этой шине I2C мы можем подключить восемь ведомых микросхем (PCF8591), каждый из которых имеет уникальный адрес для передачи и приема данных.Однако в этом проекте используются только пять ведомых микросхем.
В таблице 1 подробно показана адресация ведомого устройства PCF8591. A2, A1 и A0 – это биты адреса подчиненного устройства для настройки выбора адреса подчиненного устройства I2C для различных входов (см. Таблицу 2). Для включения каждой ведомой ИС соответствующие биты адреса должны быть либо заземлены (логический 0), либо подключены к источнику питания 5 В (логическая 1), как показано на рис. 1.
Чтобы узнать больше о выборе бит адреса подчиненного устройства, обратитесь к байт управления PCF8591, как показано на рис.2. Включив биты управления, мы можем настроить аналоговые входы и выходы. Каждая подчиненная ИС имеет четыре аналоговых входа (от AIN0 до AIN3). В этом проекте есть пять подчиненных ИС, что означает, что двадцать аналоговых входов (от I / P1 до I / P20) PCF8591 будут автоматически сканироваться, а соответствующие выходы могут отображаться на ЖК-дисплее 16 × 2.
Рис. 2: PCF8591 Байт управления I2CДля отображения выходных данных на ЖК-дисплее в кодировке должны быть запрограммированы значения управляющего байта и аналогового выхода.Система сканирует адреса (A2, A1 и A0) каждого подчиненного порта один за другим, обрабатывает входные данные (от AIN0 до AIN3) и отображает их на ЖК-дисплее. Для большей точности отображения каждый вывод аналогового входа заземлен с помощью резистора 10 кОм.
Программное обеспечение
Для программирования кода используетсяArduino IDE (Atmega328_expander.ino). Библиотека LCD используется для отображения, а библиотека Wire используется для связи I2C. Перед загрузкой кода в ATmega328 не забудьте включить связанные файлы (Atmega328_expander_library_files.zip) в библиотеке Arduino.
Для загрузки кода в ATmega328 используйте плату Arduino Uno с загрузчиком. После загрузки кода снимите микросхему ATmega328 с платы Arduino Uno и вставьте ее в схему или печатную плату.
Скачать исходный кодСтроительство и испытания
Компоновка печатной платы расширителя аналогового порта ввода / вывода ATmega328 показана на рис. 3, а расположение его компонентов – на рис. 4. После сборки схемы на печатной плате подключите 5 В к разъему CON1.
Рис. 3: Схема печатной платы расширителя портов Рис. 4: Компоновка компонентов печатной платы Загрузите PDF-файлы с компоновкой печатной платы и компонентов: нажмите здесьЧтобы проверить работу схемы, просто подключите переменный резистор или предустановку между землей и источником питания 5 В с его дворником (средний контакт), подключенным к любому из аналоговых контактов IC5. Измените предустановку и проверьте выходное напряжение на ЖК-дисплее. Вы также можете проверить выходное напряжение на разъеме CON2 на цифровом вольтметре.
С.Базиля Рубан – инженер по электронике и связи, проектировщик схем и программист встраиваемых систем
ATMEGA328P Распиновка, программирование, функции и приложения
ATmega328P – один из высокопроизводительных микроконтроллеров на базе технологии AVR с большим количеством контактов и функций. Он разработан с использованием 8-битной CMOS-технологии и процессора RSIC, которые повышают его производительность, а его энергоэффективность повышается за счет автоматического перехода в спящий режим и внутреннего датчика температуры. Эта микросхема ATmega328P поставляется с внутренней защитой и множеством методов программирования, которые помогают инженерам устанавливать приоритеты для этого контроллера в различных ситуациях.IC позволяет использовать множество современных методов связи для других модулей и самих микроконтроллеров, поэтому использование микроконтроллера ATmega328P увеличивается с каждым днем.
Схема распиновки ATmega328PВ этом разделе мы увидим использование каждого контакта и детали схемы контактов для этого 28-контактного микроконтроллера. На этом рисунке показана распиновка:
Другие альтернативные варианты микроконтроллеров ATMEL: ATtiny45, ATtiny88, ATtiny85
Конфигурация контактов Подробности
КОНТАКТЫ ЦИФРОВОГО ВХОДА / ВЫХОДАЭтот микроконтроллер имеет три цифровых порта (B, C, D), таких как PORTB, PORTC и PORTD.Все эти контакты можно использовать как цифровые входы / выходы. Кроме того, каждый порт можно использовать для других целей. Чтобы использовать их в качестве вывода / ввода или для любой другой функции, сначала необходимо определить их, иначе не будет какой-либо функции по умолчанию для всех контактов ввода / вывода. Цифровые контакты ввода / вывода контроллера:
Для работы большинства электрических функций требуется система прерывания, такая как диммер переменного тока и т. Д.ATmega328P поддерживает 2 прерывания в контроллере, которые можно использовать для привлечения внимания ЦП в любой момент. Контакты прерывания ATmega328P приведены ниже:
Несмотря на то, что в устройствах и модулях существует несколько типов систем связи, наиболее распространенным является USART. Это один из самых простых и простых способов реализации и понимания большинством разработчиков и систем.В этом методе два провода используются для отправки и получения данных. Контакты USART микроконтроллера ATmega328P:
Данные могут быть отправлены с заданной скоростью отправки в контроллерах, но они также могут использовать внешний вывод синхронизации, чтобы поддерживать синхронизацию данных.
Система связиUSART / UART может использоваться для программирования микроконтроллера.
Связь SPI ATmega328PЭто одна из лучших систем последовательной связи в случае использования нескольких периферийных устройств.Протокол SPI позволяет нескольким устройствам использовать один и тот же канал для связи. Он состоит из четырех проводов, два для отправки данных и один для часов, но четвертый провод используется для выбора периферийных устройств, известных как выбранные ведомые устройства. В случае наличия нескольких периферийных устройств на выбранном ведомом, контакты будут увеличены. Контакты микроконтроллера SPI:
Большинство периферийных устройств поставляются с методом связи I 2 C, который является односторонним в определенное время.Протокол I 2 C использует только один провод данных и один провод часов. Канал передачи данных будет передавать и получать данные, а провод часов отправляет тактовый импульс, чтобы поддерживать синхронизацию данных. Провода на микроконтроллере:
ATtiny328P имеет два внутренних таймера. Мы можем использовать эти таймеры для создания счетчиков и генерации импульсов. Оба этих таймера зависят от генератора. Оба таймера могут использовать для работы внутренние и внешние часы, но у них также есть внутренний вывод, который можно использовать для подсчета в соответствии с внешними импульсами.Все эти контакты в микроконтроллере ATmega328P приведены ниже:
ICP1 – это входной вывод захвата, который можно использовать для захвата внешнего импульса через определенный интервал времени. Когда на этом выводе появится входной импульс, он будет генерировать временную метку, которая может сказать, когда был получен внешний сигнал.
СИСТЕМНЫЕ ЧАСЫВнутренние и внешние тактовые импульсы могут быть разделены предделителем, и их значение может быть получено на внешнем выводе.Внешний вывод для разделенных тактовых импульсов будет:
МОДУЛЬ КОМПАРАТОРАМикроконтроллер имеет внутренние модули компаратора для аналогового сигнала. Этот модуль принимает входные данные в инвертирующей и неинвертирующей формах, которые можно использовать в дальнейшем для любых внутренних целей или для генерации выходных сигналов. Выводы компаратора микроконтроллера перечислены ниже:
Шесть контактов захвата / сравнения / ШИМ используются для генерации требуемого сигнала на основе временных импульсов.Он использует предделитель для деления временного импульса. Все эти контакты в ATmega328P:
В ATmega328P имеется 6 каналов АЦП, которые можно использовать для преобразования аналогового сигнала в цифровой. Аналоговый преобразователь должен быть активирован сначала его выводом питания (AVCC).Каналы АЦП используют напряжение источника питания в качестве эталона для различения различных уровней аналогового сигнала. Аналоговые выводы контроллера:
ШТИФТЫ ОБЛАСТИ
Иногда напряжения аналогового сигнала колеблются, но они продолжают измеряться контроллером в соответствии с входной мощностью контроллера.Чтобы измерить его с помощью любого другого источника питания или мощности устройства, генерирующего аналоговый сигнал, будет использоваться аналоговое опорное напряжение AREF. Этот вывод определит максимальное значение аналогового сигнала, а затем сможет выдать правильный выходной сигнал. Вывод AREF в ATmega328P:
RESET: В ATmega328 есть некоторый сброс для перезапуска микроконтроллера в некоторых условиях. Во всех этих сбросах есть внешний сброс для сброса устройства с помощью внешнего сигнала:
МОЩНОСТЬ: Каждому контроллеру для работы требуется питание, и у него всегда есть входной вывод питания.В ATmega328P выводов питания три. Один вывод предназначен для напряжения, а два оставшихся – для общего заземления. Оба этих заземляющих контакта имеют внутреннее соединение, не имеет значения, какой из них используется. Выводы питания микроконтроллера:
ОСЦИЛЛЯТОР: Контроллер поставляется со сменным генератором 8 МГц. Однако он также может использовать внешний генератор до 40 МГц. Чтобы использовать внешний генератор, для ввода и вывода сигнала потребуются осциллирующие контакты.Эти контакты приведены ниже:
Блок-схема микроконтроллера ATmega328P приведена ниже:
Назначение контактов ATmega328P с ArduinoATmega328 поставляется с Arduino, что помогает пользователям кодировать программу на Arduino, а не на ассемблере или других языках контроллера. Arduino популярен благодаря своим обширным онлайн-данным и высокоуровневому языку, и это помогает разработчику кодировать программу контроллера в Arduino и преобразовывать ее в код микроконтроллера.В случае Arduino конфигурация выводов контроллера будет следующей:
В случае Arduino контакты становятся специфичными для их функциональности. При использовании компилятора ATmega328 почти все выводы могут использоваться как GPIO. Однако во время использования Arduino каждый вывод будет выполнять только определенную функцию, но контроллер по-прежнему сможет выполнять все операции, такие как ATmega328.
ПРИМЕНЕНИЕ