Подключение микроконтроллера: полное руководство по питанию, тактированию и ввода-вывода

Как правильно подключить питание микроконтроллера. Какие компоненты нужны для тактирования. Как подключить кнопки и светодиоды к портам ввода-вывода. Какие схемы позволяют сэкономить выводы микроконтроллера.

Содержание

Питание микроконтроллера: основные принципы

Правильное подключение питания — основа работоспособности микроконтроллера. Рассмотрим основные аспекты:

  • Большинство микроконтроллеров AVR работают от напряжения 5В
  • Питание подается на выводы VCC (плюс) и GND (земля)
  • Если у микроконтроллера несколько выводов VCC и GND, нужно подключать их все
  • Для стабильной работы рекомендуется использовать конденсаторы по питанию

Каким должно быть напряжение питания для конкретной модели микроконтроллера? Эту информацию всегда можно найти в документации (datasheet).

Низковольтные версии микроконтроллеров

Некоторые микроконтроллеры AVR имеют низковольтные версии, например ATtiny2313V. Они могут работать при более низком напряжении питания, но и максимальная тактовая частота у них ниже. Например:


  • ATtiny2313: 2.7-5.5В, до 20 МГц
  • ATtiny2313V: 1.8-5.5В, до 4 МГц при низком напряжении

Схема сброса микроконтроллера

Для надежной работы микроконтроллера важно обеспечить правильный сброс при включении питания. Хотя у большинства AVR есть внутренняя схема сброса, рекомендуется использовать внешнюю RC-цепочку:

  • Резистор 10 кОм между выводом RESET и VCC
  • Конденсатор 100 нФ между RESET и GND
  • Опционально — кнопка сброса между RESET и GND

Такая схема обеспечивает задержку запуска микроконтроллера примерно на 1 секунду, что позволяет стабилизироваться напряжению питания.

Тактирование микроконтроллера: варианты и особенности

Тактовый генератор — это «сердце» микроконтроллера, задающее скорость его работы. Существует несколько вариантов тактирования:

Внутренний RC-генератор

Самый простой вариант — использовать встроенный RC-генератор:

  • Не требует внешних компонентов
  • Частота не очень стабильна
  • Ограниченный выбор частот (обычно 1/2/4/8 МГц)

Внешний кварцевый резонатор

Для более точного тактирования используется внешний кварц:


  • Подключается к выводам XTAL1 и XTAL2
  • Требуются два конденсатора 15-22 пФ
  • Обеспечивает высокую стабильность частоты
  • Позволяет использовать максимальную частоту МК

Внешний тактовый генератор

Можно использовать готовый внешний генератор:

  • Подключается к входу XTAL1
  • Позволяет синхронизировать несколько МК
  • Дает возможность программно менять частоту

Выбор способа тактирования зависит от требований к точности и стабильности частоты в конкретном проекте.

Подключение устройств ввода-вывода к микроконтроллеру

Рассмотрим базовые схемы подключения кнопок и светодиодов к портам микроконтроллера.

Подключение кнопки

Для подключения кнопки к микроконтроллеру:

  • Один вывод кнопки подключается к земле (GND)
  • Другой вывод — к порту микроконтроллера
  • Порт настраивается на вход с внутренней подтяжкой к питанию
  • При нажатии кнопки на входе будет логический 0

Рекомендуется дополнительно поставить внешний подтягивающий резистор 10 кОм между портом и VCC для повышения помехоустойчивости.


Подключение светодиода

Светодиод подключается к микроконтроллеру через токоограничивающий резистор:

  • Анод светодиода — к порту МК через резистор 220-1000 Ом
  • Катод светодиода — на землю (GND)
  • Порт настраивается на выход
  • Логическая 1 на выходе зажигает светодиод

Возможно и обратное включение — катодом к порту, анодом на VCC. В этом случае светодиод будет гореть при логическом 0 на выходе.

Экономия выводов микроконтроллера

При нехватке свободных портов можно использовать различные схемы для подключения нескольких устройств к одному выводу:

Два светодиода на один вывод

Подключаем два светодиода встречно-параллельно:

  • При высоком уровне горит один светодиод
  • При низком уровне — другой
  • В третьем состоянии (высокий импеданс) горят оба

Матричное включение кнопок

Позволяет подключить N*M кнопок, используя N+M выводов:

  • Кнопки соединяются в виде матрицы
  • Строки и столбцы подключаются к портам МК
  • Сканирование матрицы позволяет определить нажатую кнопку

Совмещение функций на одном выводе

Можно использовать один вывод для разных функций, переключая их программно:


  • Например, использовать выводы ISP для подключения устройств
  • Или совместить на одном выводе кнопку и светодиод

Такие схемы требуют более сложного программирования, но позволяют сэкономить дефицитные выводы микроконтроллера.


Правильное подключение микроконтроллера

Подробности
Категория: Микроконтроллеры
Опубликовано 07.09.2016 10:17
Автор: Admin
Просмотров: 5388

На первый взгляд вроде бы простая тема, но многие начинающие радиолюбители которые только начали изучать микроконтроллеры довольно часто задают одни и те же вопросы. К примеру, как подключить светодиод, как обработать события нажатия клавиш, для чего нужны выводы AGND и AREF, AVCC. И раз эти вопросы так часто задают, то тема еще не понятна или не полностью раскрыта и имеет смысл дать исчерпывающий ответ на вопрос «Как правильно подключить микроконтроллер?».

Питание микроконтроллера

Микроконтроллеры в зависимости от модели и серии питаются от напряжения величиной от 1.8 до 5 Вольт. Все микроконтроллеры AVR работают от напряжения в 5 Вольт. Поэтому можно считать что практически у всех микроконтроллеров напряжение питания 5 В, плюсовой вывод на микроконтроллере обозначается как

Vcc. Нулевой вывод или еще его называют земля корпус, минусовой вывод обозначается как GND. Если взять блок питания от компьютера то черный провод это GND, а красный это +5 В это и есть Vcc. Если питаем от батареек то минус батарее это GND а плюс это Vcc. Главное чтобы напряжение питания с батареек было в диапазоне напряжения микроконтроллера, это интервал можно посмотреть в документации на МК. 

На пример:

 • Operating Voltages

  • –1.8 — 5.5V (ATtiny2313V)
  • –2.7 — 5.5V (ATtiny2313)

• Speed Grades

  • –ATtiny2313V: 0 — 4 MHz @ 1.8 — 5.5V, 0 — 10 MHz @ 2.7 — 5.5V
  • –ATtiny2313: 0 — 10 MHz @ 2.7 — 5.5V, 0 — 20 MHz @ 4.5 — 5.5V 

Operating Voltage это как раз и есть тот диапазон напряжения в котором возможно нормальная работа МК. Существуют низковольтные серии (ATtiny2313V) у которой минимальное напряжение заметно ниже. 

Speed Grades это максимально возможные частоты работы МК в зависимости от напряжения которое к нему подвели. Здесь видно, чем ниже напряжение тем меньше максимальная работа МК.

Для того чтобы нам МК начал работать то на него достаточно подать напряжение в 5 В. Как и говорилось ранее один провод кидаем на Vcc а другой на землю — к выводу GND. Некоторые микроконтроллеры имеют несколько выводов Vcc и также несколько GND. Это сделано не для того чтобы вам было делать печатные платы и удобства монтажа а для того чтобы подвести напряжение к камню равномерно, т.е. равномерно запитать весь кристалл. Это делается для того чтобы внутренний линии кристалла не перегружались. К примеру вы взяли МК с квадратным корпусов TQFP у него выводы Vcc и GNВ находятся со всех сторон. С одной стороны вы подвели питание, т.е. задействовали всего лишь 2 вывода питания а с другой  стороны вы подключили на порты кучу светодиодов и взяли и зажгли их разом. Получается что внутренние линии МК перегружены, в результате камень офигеф от такой нагрузки выходит из строя. Поэтому если у контроллера есть несколько выводов питания то запитать нужно все выводы Vcc и GND.

Помимо выводов предназначенных для питания МК есть еще выводы AGND и AVCC — это выводы питания АЦП (аналого-цифрового преобразователя). АЦП это довольно точный измеритель напряжения, по этой причине его можно запитать через фильтры. Для того чтобы помехи которые довольно часто бывают в цепях питания не влияли на результаты измерения. По этой причине в некоторых схемах производят разделение земли, а на вывод AVCC подается напряжение через фильтрующий дроссель. А если вы не планируете пользоваться АЦП и вам не нужны точные измерения, то на AVCC можно подать те же +5 В что и на Vcc, а вывод AGND подключить к земле. Подключать выводы AVCC и GND нужно обязательно!

Ahtung!

В микроконтроллере Atmega8 есть одна ошибка на уровне топологии чипа — выводы VCC и AVCC связаны друг с другом на уровне кристалла и между ними сопротивление 5 Ом. К примеру, в чипах Atmega16 и Atmega168 выводы VCC и AVCC связаны между собой и их сопротивление составляет порядка десяток МОм. В документации по этому поводу ничего не сказано. Поддержка Atmel на это ответила что в чипе есть недочет и выводы VCC и AVCC соединенны между собой внутри камня. По этой причине ставить фильтрующий дроссель на AVCC для ATmega8 нет смысла, но запитывать вывод AVCC нужно в любом случае.

Схема подключения микроконтроллера AVR

 

Эта упрощенная схема подключения микроконтроллера так сказать необходимы минимум для запуска контроллера, по хорошему лучше добавить несколько внешних элементов. Провод показанный пунктиром от источника питания к БП необязателен. Если ты питаешь МК от внешнего источника то это провод лишний. Но лучше питать всю схему от одного источника — так больше вероятность того что все прошьется успешно. Для учебных целей схема подключения питания самый раз, светодиодиком там помигать или еще чего.

Вывод AREF это вход опорного напряжения АЦП, туда подается напряжение относительно которого будет считать АЦП. Можно использовать внутренний источник опорного напряжения величиной в 2. 56 В либо использовать напряжение AVCC. На вывод AREF рекомендуется подключать конденсатор, это улучшает качество опорного напряжения АЦП и как в следствии правильность измерения АЦП. На входе в AVCC установлен дроссель и конденсатор между AVcc и GND. Также между выводами GND и VCC ставят керамический конденсатор номиналов в 100 нФ как можно ближе к выводам питания микросхемы — он сглаживает краткие импульсы помехи, которые получаются в результате работы самих микросхем. Также между выводами VCC и GND устанавливают конденсатор емкость в 47 мкФ для сглаживания более сильных бросков напряжения.

 Вывод сброса

В МК AVR есть внутренняя схема сброса и вывод reset внутри уже подтянут сопротивлением в 100 кОм к выводу Vcc. Но этой подтяжки не хватает, получается что микроконтроллер «выход» в сброс от незначительного потенциала на выводе. К примеру от прикосновения пальцем вывода RST, а иногда от случайного касания самой платы. Поэтому имеет смысл дополнительно подтянуть этот вывод резистором в 10 кОм. Меньшее значение резистора лучше не брать, потому что если вы используйте внутрисхемный программатор то он не сможет пересилить подтяжку и прошить микроконтроллер. Поэтому значение в 10 кОм в самый раз.

Схема сброса микроконтроллера

 

После того как схема вклчючена, изначально конденсатор C12 разряжен и напряжение на RST почти равно нулю и в результате микроконтроллер не запускается. Получается что ему после запуска схемы постоянный сброс. С течением времени происходит заряд конденсатора через резистор, после того как он заряжится на выводе RST появится логическая единица МК запустится. Ну а скнопкой всю понятно она разряжает конденсатор и происходит перезапуск микроконтроллера.

 Задержку перед стартом МК легко посчитать по формуле как T=R*C при данных значения получается приблизительно одна секунда. Для чего эта задержка? — спросите вы. А для того чтобы МК не запускался раньше времени чем все устройства на плате запитаются в перейдут в установившийся режим работы. К примеру, в старых МК (AT89C51) если нет такой цепочки которая делает изначальный сброс, то МК мог вообще не запуститься.

В МК AVR такую задержку перед стартом можно сделать программно чтобы он подожда секунду и потом только запускался. Поэтому можно обойтись и без конденсатора. А кнопку можно оставить — на свое усмотрение. 

 Тактирование микроконтроллеров

Тактовый генератор это своего рода сердце микроконтроллера. По кажлому «тику» или импульсу тактового генераора происходи какая нибудь операция — передаются какие либо данные по шинам и регистрам, работают таймеры, переключаются порты ввода/вывода. Чем больше тактовая частота тем больше энергии нужно микрокнтроллеру.

Импульсы формируются тактовым генератором с определенной скоростью (частотой). Сам генерато может быть как может быть как внутренний так и внешний. Все это гибко настраивается. 

 

Микроконтроллер можно тактировать от:

  • внутреннего генератора с внутренней задающей RC цепочкой. При таком тактировании никакой обвязки не нужно. К выводам XTAL1 и XTAL2 можно ничего не подключать, их можно использовать как обычные порты ввода/вывода. Внутренний RC генератор можно настроить на 4 значения частоты;
  • внутреннего генератора с внешней задающей RC цепочкой. Тактирование аналогично предидущему способоу, только вот задающая RC цепочка находится не внтури МК, а снаружи, такая схема позволяет изменять частоту прямо на ходу. Изменение задающей частоты происходит путем изменения значения сопротивления;
  • внутреннего с внешним задающим кварцем. В этом случае снаружи МК цепляют кварцевый резонатор с небольшой обвязкой кварца из двухконденсаторов. Если используется кварц(резонатор) с частотой менее 1 МГц то конденсаторы можно и не ставить.
  • внешнего генератора. Это когда импульсы поступают на вход МК от внешнего генератора. Такое тактирование применяют когда нужно чтобы несколько независимых микроконтроллера работали синхронно от одного генератора.

 У каждого способа тактирование есть свои достоинства. Если мы используем внутренюю или внешнюю RC цепочку то у нее есть один недостаток — » плавание частоты в зависимости от температуры. И мы не можем максимально развить максимальную частоту. Если использовать кварц то он занимает 2 ножки микроконтроллера. На кварце можно развить максимальную частоту. Частота тактирования микроконтроллера зависит от того какой кварц мы подключили.

Посмотреть способы тактирования МК можно в даташите System Clock and Clock Options. Если в кратце, то выбор способа тактирования осуществлятеся путем выставления определенных Fuse битов. Но если вы пока еще не ознакомились с ними, то лучше пока туда не лезть и использовать выбранный по умолчанию способ тактирование. По умолчанию в МК выбран внутренний генератор. Если не правильно выставить Fuse биты можно «залочить» МК и он превратиться в мертвеца и вернуть его к жизни будет совсем не просто, но все же возможно.

Подключаем к микроконтроллеру кнопки и светодиоды

Микроконтроллер если к нему не подкючены какие либо внешние устройства не представляет собой ничего интересного, кусок кремния который тикает там что то себе под нос! Друго дело когда мы может что то понажимать, объяснить ему что «мол вот я нажал кнопку давай делай что нибудь!» а он нам в ответ может что включить, пропищать и как то с реагировать.  

Для того чтобы подключить нашу всеми любимую кнопку нам нужно сначала выбрать ножку на которую мы его будем цеплять. Один конец кнопки мы кидаем на землю а другой к ножке МК. Сам вывод к которому подключения кнопка нужно настроить на вход с включением внутренних подтягивающих резисторов (PORTx=1 DDRx=0). Получается что если кнопка не нажата то входе будет высокий уровень напряжения через подтягивающий резистор. Если мы считаем это значения через PINx то он будет возвращать 1. Если мы нажимаем кнопку то вывод подтягивается к земле и напряжение на нем становится равным нулю, PINx возвращает 0. По этому значению мы и определяем нажата ли кнопка или нет.

 В дополнении к внутреннему подтягивающему резистору можно подключить еще внешний резистор (на схеме показан пунктиром). Дело в том что внутренняя подтяжка слабовата порядка 100 кОм. Поэтому наведенное на этом выводе какое либо напряжение может привести к ложному срабатыванию. Довольно часто эти внутренние сопротивление сгорают от каких либо наводок. Микроконтроллер работает как и работал только вот без этой подтяжки. Поэтому рекомендуется ставить свою внешнюю подтяжку сопротивлением в 10 кОм. Таким образом можно подстраховатся даже, даже если внутреняя сгорела то у вас все будет работать должным образом.

 Для того чтобы подключить светодиод можно использовать две схемы подключения порт-земля и порт-питание. В первом случае для того чтобы зажечь светодиод нужно на вывод к которому подключили светодиод подать высокий уровень (логическую единицу). Для второго случае когда светодиод подключен к выводу Vcc нужно наоборот подать другой уровень низкий (логический ноль). Для микрокнтроллеров абсолютно неть разницы куда вы будете подключать светодиод к земле или к Vcc. Можно применять как одну так и другую схему подключения светодиода к микрокнтроллеру AVR в зависимости от разводки печатной платы. Программно разницы тоже особо нет.

Сначала нам нужно настроить порт на выход для этого в регистр DDRx запичываем 1. Далее записываем в порт PORTx нужный нам уровень высокий или низкий.

Светодиод к выводам МК нужно цеплять черех резистор. Максимальный ток вывода МК порядка 20-30 мА. А для нормального свечения светодиода нужно 3…15 мА. А когда мы подклчаем светодиод с низким прямым сопротивлением, то мы можем его в лучшем случае просто спалить, а в худшем спалить сам вывод микроконтроллера. Поэтому ток через светодиод нужно ограничивать подключаю последовательно светодиоду сопротивление.

Напряжение на ноге микроконтроллера около 5 В. Для нормального горения светодиода нужно что на нем падение напряжения было приблизительно 2.5 В. Получается что такое же напряжение должно быть и ограничивающем сопротивлении 5-2.5=2.5. Предположим что ток протекающий через диод 5 мА. Знаем ток в цепи и падение напряжения на резисторе находим по закону Ома требуемое сопротивление резистора R=U/I=2.5/5e-3=500 Ом. Ближайшее значение 510 Ом, но можно взять и другие хоть от 220 Ом до 1 кОм. Гореть светодиод будет хорошо.

 

Если вы захотели подключить несколько светодиодов, то вам нужно вешать сопротивление на каждый светодиод. Если установить всего один общий резистор на все светодиоды то каждый светодиод получит меньше тока, а если уменьшить сопротивление резистора для того чтобы все горели в нормальный «накал» то в случае зажигания всего лишь одного светодиода он может выйти из строя либо сгорит порт.

Иногда бывают такие случаи когда мы установили микрокнтроллер, памяти нам хватает и быстродействие на высоте, но вот с ножками беда-не хватает нам ног для установки дополнительных устройст, кнопок или потребителей. Многие видят выход только в одном-установкой другого камня с большим числом ног. Но не каждый знает что есть несколько приемов как можно программно сэкономить на железе.

Это прием заключается в том что мы динамически меняем назначение выводов с течением времени. К примеру какой либо вывод работает на шину, а вслучае когда нам шина не нужна, то этот вывод мы можем использовать для других нужд. Например мы обрабатывать события нажатия кнопки. Переключения между назначением вывода происхоид сотни или даже тысячу раз в секунду и тем самым создается впечатление что одни вывод работает сразу двум назначения.

Но при такой программной реализации вывода порта нужно следовать определенным правилам:

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

Например, допустим у нас есть один вывод к которому мы подключили какой либо датчик либо кнопку. С датчика может придти сигнал 0 или 1, а в активном режиме Hi-Z в случае когда на датчик не послали сигнал Enable. А при нажатии на копку придет сигнал 0,

Основную часть времени МК установлен на вход Hi-Z и мы получаем сигнал с датчика на него же подан сигнал enable. Если нам нужно узнать состояние кнопки, то мы убираем enable и его выходы становятся в режим Hi-Z и нам не мешают. Далее мы переводим вывод МК в редим Pull-Up и опрашиваем нет ли у нас на входе вывода нуля — это сигнла нажатой кнопки. После того как мы это проверили мы снова переводим МК в Hi-Z и отправляем сигнал enable на датчик. Эта последовательность действий повторяется несколько раз в секунду.

При таком способе подключения могут возникнуть противоречия

Логическое противоречие

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

Электрическое противоречие

Если с датчика поступает высокий уровень и мы нажимаем кнопку, то на одном выводе у нас сразу встретятся 0 и 1,Vcc и GND. В результате у нас датчик «заснет вечным сном» а кнопка как жили так и будет. Программым методом это противоречие не решить, а определить можно ли нажимать кнопку или нет в определенный момент времени на глаз просто не возможно, и в каком месте сейчас выполняется программа тоже не узнать. Электрическое противоречие можно решить только схемотехническим путем. Нам нужно в цепь где у нас кнопка добавить резистор. Значение резистора определяется через максимальтный ток самого низковольтного вывода (датчика или ножки).

К примеру если у нас на выводе васит датчик у которого вывод может дать не больше чем 10 мА. То нам нужно чтобы ток через датчик не был больше этой величины в случае нажатия кнопки. При напряжении в 5 В получаем сопротивление в 510 Ом. Таким образом даже если у нас с датчика идет высокий уровень, и в этот момент времени нажимается кнопка то ничего страшного не произойдет и датчик не сгорит и искажения уровня сигнала тоже не произойдет.

Примеры использования нескольких функций на одной ножке

Разъем ISP в некоторых схемах занимает 3 вывода микроконтроллера MOSI,MISO,SCK. У меня практически все платы имеют такой разъем и в него у меня вставлен программатор. Во время отладки платы я прошиваю МК по несколько раз. И это очень удобно, мне не приходится каждый раз когда мне нужно прошить МК его вытаскивать втавлять в колодку программатора и далее обратно.

На эти три разъема можно подключить, к примеру кнопки. И мониторить их состояние в прогамме. Самое главное не нажимать эти кнопочки во время заливки прошивки в микроконтроллер. Также с целью экономии выводов на эти выводы можно прицепить светодиоды. Правда если использовать программатор Громова то он может не корректно сработать. А если использовать программатор USBasp то проблем возникнуть не должно. В процесе прошивки светодиоды на выводах MOSI,MISO,SCK будут забавно моргать:)

В общем на эти вывод можно цеплять не только кнопки и светодиоды ну и что нибудь другое. Главное чтобы это устройство в процессе прошивки не начало чудить. К примеру если на этих вывода у вас находится релюшка которая управляет большой нагрузкой, то в процессе прошивки реле просто офигеет от потока данных как и высоковольтная нагрузка. В общем нужно понимать как это работает и не цеплять на эти выводы что попало. Можно подклчить символьный LCD дисплей типа HD44780 который использует шинный интерфейс для работы (схема ниже)

 

Установленные резисторы по 10 кОм отделяют линию программатора от основной схемы. Резисторы ограничивают возможные другие уровни от дисплея на выводах ISP разъема, программатор их пересиливает и шьет микрокнтроллер. А на работу дисплея эти резисторы особоне не оказывают влияния.

Подключение двух светодиодов на один вывод

В данной схеме два светодиода подкючены на одну ножку порта, такая схема позволяет упростить печатную плату, не придется тажить еще одну шину к каждому светодиоду. Для того чтобы зажечь верхний сетодиод нужно на вывод Pxy подать логический 0, а для того чтобы зажечь нижний то подать высокий уровень. Если мы хотим зажечь сразу оба светодиода та нам нужно перевести вывод МК в режим Hi-Z как будто его нет, в этом случае появится сквозной ток через оба светодиода и они оба загорят. Или можно бысто зажигать то один то другой, визуально они будут оба гореть. Минус схемы в том что погасить сразу два диода нельзя.

Подключение двух светодиодов по схема PORT-PORT

В это схеме ничего сложного нет — меняя состояние выводов то в 1 то в 0 мы меняем напрявление тока включает то идин то другой диод. Для того чтобы погасить оба светодиода то нам нужно подать сразу на оба вывода либо высокое состояние 11 либо низкое это 00. Для того чтобы зажечь сразу два светодиода нам нужно сделать динамическую индикацию, быстро меняя состония обеих ножек с высокого на низкий. Если взять 3 вывода и использовать тот же принцип смены состояния ножек то можно подключить шесть светодиодов.

В данной схеме кнопки опрашиваются поочередно. Один вывод подтягивает внутренее сопротивление а другая дает 0. Нажатие кнопки дает 0 на подтянутом выводе а это фиксирует программа, таким образом,меняя роли выводов опрашивается каждая кнопка. Если у нас используется 6 выводов, то действуем по следующей схеме: одну ножку подтягиваем, другую делаем нулем а из третьей делаем состояние Hi-Z. Но тут тоже есть один минус. Допустим мы хотим опросить кнопку «В». Для этого верхнюю линию подтягиваем, среднюю делаем нулем, а нижнюю не задействуем в процессе или выставляем ее в стостоянии Hi-Z. Далее если мы нажмем на копку «B» то верхняя линия подтянится к нулю и программа поймет что нажата именно кнопка «B». В том случае если одновременно будут нажаты кнопки «E» и кнопка «Б» то верхняя линия такжн подтяница к 0 и программа поймет что была нажата кнопка «В», хотя мы ее не нажимали. 

К минусам такой схемы можно отнести не правильная обработка событый нажатия кнопок в случае одновременного нажатия нескольких кнопок.

Схема подключения кнопки с светодиода к одному выводу

Эта схема работает также в динамическом режиме.Для того чтобы отобразить состояние светодиода мы можем подать 0 — диод горит, либо перевести вывод в состояние Hi-Z — диод не горит. А для того чтобы опросить кнопку нам нужно временно на несколько микросекунд перевести вывод в режим входа с подтягом и опрашивать кнопку. В том случае когда горит светодид т.е. на выводе высокий уровень, то нажимать кнопку нельзя, в противном случае сгорит порт а это нам совершенно не нужно.

Оригинал статьи: www.easyelectronics.ru

  • Вперёд >
Добавить комментарий

Как подключать микроконтроллер

Содержание

  • 1 Питание микроконтроллера
  • 2 Схема сброса
  • 3 Тактовый сигнал и его источник
  • 4 Как подключить кнопку или светодиод к микроконтроллеру

Если вас интересует подключение микроконтроллера (здесь и далее МК), а также подключения к нему кнопки, питания, или светодиода. Или вы хотите знать что делать с  выводами AREF или AGND, что представляет собой AVCC. И собственно понять как все таки подключить микроконтроллер то данная статья сможет вам слегка приоткрыть занавес в изучении мира микроконтроллеров.

Все нижеописанное относится к AVR контроллерам, но в случае с PIC все процедуры схожи, из-за единства принципов.

Питание микроконтроллера

В своей работе МК использует электроэнергию. Поэтому для того, чтобы правильно выполнить подключение микроконтроллера, требуется напряжения от 1.8 до 5 В. Любой МК AVR работает с напряжением от 5 Вольт. Поэтому примем это напряжение как эталон от него и будем отталкиваться. Оно имеет обозначение VCC.

Нулевой вывод — это GND. Если рассматривать блок питания ПК, то провод черного цвета является здесь GND (к тому же, провод Земли как правило черный), провод красного цвета — это +5, станет VCC.

Если вы в качестве питания для микроконтроллера планируете использовать батарейки, то минус батареек обозначим как GND, а их плюс, как VCC.  

При этом важно, чтобы напряжение от батарей сохранялось в нужных лимитах для конкретной модели МК. Эти данные указаны в datasheet (документации) на микроконтроллер.

Такой вопрос как подключение микроконтроллера должен учитывать то, что существуют низковольтные модели (как 2313V), их нижний уровень напряжения будет значительно занижена. Также важны частоты. Здесь показано то, как наибольшая частота может зависеть от напряжения. Очевидно, что при низком уровне, предельные частоты будут ниже. При том низковольтные модели вдвое медленней высоковольтных. Но их можно разогнать, как и любой процессор.

Все, что требуется AVR контроллерам для функционирования, это питание. На входы VCC необходимо подавать 5 В. (или же другое значение в зависимости от модели), а входы GND необходимо заземлить.

МК может иметь и ни один вход VCC, а несколько, это же относится и к GND входам (в особенности если они помещены в квадратный корпус TQFP, где питалово на виду).  Важно, чтобы питание кристалла было равномерным со всех сторон, для избежания перегрева внутренних питательных цепей.

Иначе может возникнуть ситуация типа следующей: допустим, вы осуществили подключение питалова лишь с одной из сторон чипа. С другой стороны решили установить на каждую портовую линию светодиод, и затем все их сразу и зажгли.

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

Поэтому очень важно производить правильное подключение всех выводов GND и VCC. Необходимо соединить их требуемым образом и подать нужное питание.

AVCC и AGND — это питание аналогоцифрового преобразователя и аналоговая земля. АЦП измеряет напряжение, подавать на него питание лучше при помощи фильтров, чтобы избежать пагубного влияния помех в электроцепи.

Поэтому в схемах земля бывает аналоговой и цифровой (соединение их должно присутствовать только в 1 точке). Напряжение на AVCC нужно подавать при помощи дроссельного фильтра.

Если не требуется применение АЦП и отсутствует необходимость в точных расчетах измерений, то на AVCC просто подайте 5 вт, равно как и на AGND и VCC, посадите на землю, как и все остальное. Но подключать их нужно!

Простое подключение микроконтроллера AVR

Все это нужно, чтобы контроллер мог заработать. VСС провод до программатора указан пунктирной линией, ибо является опциональным. При наличии внешнего источника питания, в нем необходимости нет. Но все-таки лучше сначала питать общею систему (МК и программатор) от единого источника, так как это даст возможность с успехом опробовать прошивку.

Следует использовать внешние навесные элементы.

Как видишь, добавился дроссель в цепь питания AVCC, а также конденсаторы. Хорошим тоном является ставить керамический конденсатор на сотню нФ между VCC и GND у каждой микросхемы (а если у микрухи много входов питания и земель, то между каждым питанием и каждой землей) как можно ближе к выводам питания — он сгладит краткие импульсные помехи в шине питания вызванные работой цифровых схем. Конденсатор на 47 мкФ в цепи питания сгладит более глубокие броски напряжения. Конденсатор между AVCC и GND дополнительно успокоит питание на АЦП.

Вход AREF это вход опорного напряжения АЦП. Туда вообще можно подать напряжение относительно которого будет считать АЦП, но обычно используется либо внутренний источник опорного напряжения на 2.56 вольта, либо напряжение на AVCC, поэтому на AREF рекомендуется вешать конденсатор, что немного улучшит качество опорного напряжения АЦП(а от качества опоры зависит адекватность показаний на выходе АЦП).

Схема сброса

Резистор на RESET. AVR имеет собственную схему сброса, сигнал RESET оснащен резистором на 100 кОм к VCC. Но это не надежно! Лучше подтянуть RST до питания при помощи резистора 10 кОм.
Еще одна схема сброса

Ее преимущество в том, что когда схема включается, конденсатор находится в разряженном состоянии и напряжение на RST почти нулевое, микроконтроллер не начинает свою работу, ибо ему выдается непрерывный сброс. Но вскоре конденсатор получит заряд через резистор и напряжение на RST составит лог1, и МК будет запущен.

Задержка равняется T=R*C ( в примере: 1 сек.). Она требуется, чтобы МК не начал работать раньше остальных устройств.

Тактовый сигнал и его источник

Тактовый генератор является центром МК. По всем импульсам происходят различные операции в контроллере — данные ходят по шинам и регистрам, выводы портов переключаются, и т.д. При большей скорости тактовой частоты, МК будет быстрее выполнять свою работу и использовать большее количество энергии.

Задают импульсы при помощи встроенного в МК тактового генератора, или внешнего. Быстрота внутреннего генератора может зависеть от настроек МК и обвязки.

Типы генератора:

  • внутренний (имеющий внутреннюю задающую цепочку RC).
  • Обвязка не нужна. Выводы XTAL2 и XTAL1 нет необходимости подключать, но их можно оставить в качестве портов ввода вывода (при возможности). Выбирается 1 из 4 (по умолчанию) значений внутренней частоты.
  • внутренний(имеющий внешнюю задающую RC цепь).Нужен внешний для мк резистор и конденсатор. Можно менять в процессе тактовую частоту, изменяя значение резистора.
  • внутренний (имеющий внешний задающий кварц).С внешней стороны устанавливается кварцевый резонатор и 2 конденсатора. При низкочастотном кварце (до 1 МГц) конденсатор не потребуется.
  • внешний. Другое устройство подает на вход МК прямоугольный сигнал, задающий такты.

Плюсы различных схем

При наличии внутренней цепи RC мы может получить экономию места на плате, не потребуются дополнительные элементы, но не будет максимальной частоты, плюс она будет зависеть от температуры.

Внешний кварц является точным, нужны дополнительные элементы. Возможен максимальный уровень производительности МК.

Методы тактования МК можно посмотреть в даташите в System Clock and Clock Options, при этом важна конфигурация фьюз битов. Фьюз биты лучше не трогать, если пока вы не являетесь спецом в настройках.

Как подключить кнопку или светодиод к микроконтроллеру

Если говорить о взаимодействии с внешней средой, то в качестве самостоятельного устройства микроконтроллер не представляет особого интереса — просто что-то там внутри сам с собой тикает. А если вы решите отобразить его действия, то уже станет интереснее.

Светодиод или кнопку можно подключить используя ряд нехитрых операций:

Для кнопки необходимо выбрать ножку I/O, и произвести ее подключение при помощи кнопки на землю. Конфигурация самого вывода будет представлять собой DDRxy=0 PORTxy=1 (вход с подтяжкой).

При этом, если кнопка не находится в нажатом положении, при помощи подтягивающего резистора, вход будет иметь большое напряжение, а из бит PINху при чтении мы получим 1. При нажатой кнопке, вход будет на земле, а напряжение на этом входе упадет до нулевого, из PINxy будет прочитываться 0. По нулевым позициям в битах PINх регистра нам становится известно о нажатом состоянии кнопки.

Пунктиром выделен еще один подтягивающий резистор. Хотя внутри AVR возможно подключение к порту подтяжки, она будет ненадежной: 100 кОм. Поэтому она может быть просто придавлена к земле при помощи наводки или помехи, что даст ложное срабатывание. Для хорошей схемы необходима внешняя подтяжка на 10 кОм.

Способы подключения светодиода к порту

Всего существуют 2 схемы:

  • Порт-Питание;
  • Порт-земля.

В первом случае диод зажигается при выдаче в порт логический ноль: уровень низкий (близок к нулю). При втором способе, чтобы диод зажегся, следует выдать в порт логическую единицу: уровень высокий, приравненный к значению VCC.

Для AVR подходит любой их этих способов, но старые модели МК тянули вниз лучше, поэтому Порт-Питание более популярен. Настройка вывода порта на выход для светодиода (DDRxy=1), при этом, зависимо от параметра в PORTxy ножка будет иметь либо низкое либо высокое напряжение.

Производить подключение светодиода следует через резистор. Так как уровень прямого сопротивления светодиода небольшой. И при отсутствии лимитов проходящего сквозь него тока, он может сгореть, а также прожечь вывод МК. Для нормальной работы светодиода достаточно примерно 3…15 мА.

Полезные ссылки по проекту

Оригинал статьи

Подключение микроконтроллера к программатору

Казалось бы простая тема, а однако в комментах меня завалили вопросами как подключить микроконтроллер. Как подключить к нему светодиод, кнопку, питание. Зачем нужен AVCC и все в таком духе. Итак, раз есть вопросы, значит тема не понятна и надо дать по возможности исчерпывающий ответ. Чтобы понимать ряд терминов активно упоминающихся в этой статье, надо сначала прочитать статью про порты ввода-вывода.


Поиск данных по Вашему запросу:

Схемы, справочники, даташиты:

Прайс-листы, цены:

Обсуждения, статьи, мануалы:

Дождитесь окончания поиска во всех базах.

По завершению появится ссылка для доступа к найденным материалам.

Содержание:

  • Разъемы для подключения программатора
  • Микроконтроллеры ATmega328P / ATtiny45 – программирование
  • Подключение и распиновка программатора USBASP v.2.0
  • USBasp | AVRDUDE | Программирование микроконтроллеров AVR
  • Программатор для МК
  • Работа с микроконтроллерами: прошивка программатором и чистый «Си»
  • Programmin
  • Как подключить AVR микроконтроллер к программатору

ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Как прошивать микроконтроллеры AVR программатором USBASP

Разъемы для подключения программатора


В данной статье я расскажу вам об основных особенностях использования этого программатора из под ОС Windows 7 и как настроить его работу совместно со средой разработки программ Atmel Studio на примере версии 6. К сожалению, по умолчанию, Atmel Studio не поддерживает этот программатор. В первую очередь необходимо установить драйвер для программатора. Мы не будем подробно описывать процедуру установки драйвера, так как тут не должно возникнуть каких либо трудностей.

После установки драйвера подключенный программатор отображается в диспетчере устройств Windows как устройство USBasp. Драйвер можно скачать по ссылке с нашего Google диска. Для программирования микроконтроллеров AVR будем использовать программу Avrdude.

Этой программе посвящена отдельная страница в википедии. Скачать Avrdude по ссылке с нашего Google диска. Программа avrdude является консольной и запускается из командной строки. Для выполнения программирования ей передается набор параметров, определяющий настройки. Регистры Fuse используются для настройки режима работы микроконтроллера и для их определения обратитесь к документации соответствующего контроллера.

Хочу предупредить, что некорректная установка режима контроллера через регистры Fuse может привести к невозможности дальнейшего программирования контроллера, по этому, внимательно изучите документацию. Если вы не хотите изменять регистр Fuse, вы можете не передавать эти параметры при программировании, в этом случае регистр Fuse останется в том же состоянии, что и до программирования.

Avrdude имеет много разных функций, но в рамках данной статьи нам важен один режим ее работы, а именно заливка программы в микроконтроллер.

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

В открывшемся окне настройки инструментов нажимаем кнопку Add для добавления нового инструмента. Заполняем следующие поля:. Теперь, для программирования микроконтроллера достаточно зайти в меню Tools и нажать команду USBASP atmega32 , которая там должна появиться после проделанных настроек.

Программирование необходимо запускать после компиляции проекта, так как файл прошивки создается в процессе компиляции проекта. Физически на программаторе интерфейс имеет 10 контактов. Большинство контактов объединены общим проводом. Назначение используемых контактов следующее:.

На печатных платах модулей, где используются контроллеры AVR, разработчики очень часто располагают интерфейс SPI 6 контактов, позволяющий произвести внутрисхемное программирование контроллера. Такой интерфейс можно видеть даже на платах Arduino. Все доставили в лучшем виде и быстро. Забирал на складе СДЭК.

Все упаковано в антистатику, затем в пузырчатую пленку и еще сверху в коробку. Не побилось ни чего. Купил комплектующие для сборки робота. Оплачено было прямо на сайте картой. Быстро отправили, почта на этот раз хорошо сработала, что удивительно. Работаем с магазином по безналу очень давно.

Хочу отметить быструю реакцию менеджера Евгения на наши запросы, а так же своевременную отгрузку товаров. Как купить. Контроллеры AVR. Контроллеры Контроллеры ESP. Датчики и сенсоры. Модули связи. Модули расширения. Звук и музыка. Кнопки и управление. Индикаторы, светодиоды. Исполнительные модули. Приводы, механика. Макетные платы. Провода и кабели. Разъемы и штекеры. Крепеж, метизы. Расходные материалы. Радиодетали прочие.

Модуль связи nRF24L01 2. Припой 0. Модуль Ethernet W Колпачок для кнопки 12x12x7. Установка драйвера программатора В первую очередь необходимо установить драйвер для программатора. Скачать Avrdude по ссылке с нашего Google диска Программа avrdude является консольной и запускается из командной строки. Ниже приведен пример командной строки для программирования контроллера при помощи программатора USBASP: avrdude -c usbasp -p atmega32 -U flash:w:myhexfile.

В корзину. Список пуст. Сергей, Самара. Константин, Волгоград. Михаил, Москва. Игорь Васильевич, Казань. Покупателям Оплата Доставка Гарантии Проекты.

Info x. Вход Закрыть. Email адрес:. Файл должен располагаться либо в каталоге программы, либо необходимо указать полный путь к файлу; -U lfuse:w:0x6a:m параметр определяет младший байт регистра Fuse; -U hfuse:w:0xff:m параметр определяет старший байт регистра Fuse; Регистры Fuse используются для настройки режима работы микроконтроллера и для их определения обратитесь к документации соответствующего контроллера. В Atmel Studio открываем пункт меню Tools и выбираем пункт External tools Command : файл запуска программы avrdude.

Arguments : параметры запуска для avrdude, которые мы рассмотрели выше. Путь к файлу указан через специальные макросы и Atmel Studio подставит их сама. Мы не указали регистр Fuse в этом примере, но при необходимости вы можете добавить их самостоятельно. Initial directory : указан макрос для подстановки каталога, в котором находится файл прошивки.

Use Output window : установите эту галочку для того, что бы результат работы программы показывался в окне Atmel Studio. Послу установки всех настроек нажмите кнопку OK для сохранения настроек и выхода. Константин, Волгоград Купил комплектующие для сборки робота. Быстро отправили, почта на этот раз хорошо сработала, что удивительно Михаил, Москва Привезли макетки, все достойно упаковано, ничего не сломано. Можно покупать, если надо быстро.

Игорь Васильевич, Казань Работаем с магазином по безналу очень давно. Контакты тел.


Микроконтроллеры ATmega328P / ATtiny45 – программирование

А почему именно Mplab, а не более современная Mplab X от того же микрочипа? Войдите , пожалуйста. Хабр Geektimes Тостер Мой круг Фрилансим. Мегапосты: Криминальный квест HR-истории Путешествия гика. Войти Регистрация. Средства программирования PIC-контроллеров Компиляторы , Отладка , Программирование микроконтроллеров Введение PIC-контроллеры остаются популярными в тех случаях, когда требуется создать недорогую компактную систему с низким энергопотреблением, не предъявляющую высоких требований по ее управлению.

По стирания памяти микроконтроллера необходимо записывать только данные . Программатор может определять подключение к программируемому.

Подключение и распиновка программатора USBASP v.2.0

Сегодня мы рассмотрим как, без особых затрат и быстро, запрограммировать любой микроконтроллер AVR поддерживающий режим последовательного программирования интерфейс ISP через USB-порт компьютера. Для того, чтобы запрограммировать микроконтроллер необходимо иметь две вещи: — программатор — соответствующее программное обеспечение для записи данных в МК Одним из наиболее простых, популярных и миниатюрных программаторов для AVR является USBASP программатор , созданный немцем Томасом Фишлем. Имеется много разных схемотехнических решений этого программатора, программатор можно собрать самому или купить стоимость — доллара. При самостоятельной сборке следует учитывать, что собранный программатор необходимо будет прошить сторонним программатором. Назначение джамперов: — разъем JP1 — предназначен для перепрошивки микроконтроллера программатора для перепрошивки — необходимо замкнуть контакты — разъем JP2 — напряжение питания программатора — 5 Вольт или 3,3 Вольта по умолчанию — 5 Вольт, как на фотографии. Если у микроконтроллера установлена частота тактирования более 1,5 мГц — джампер может быть разомкнут, при этом скорость программирования высокая. Если тактовая частота менее 1,5 мГц — необходимо закоротить выводы джампера — снизить скорость программирования, иначе запрограммировать микроконтроллер не получится.

USBasp | AVRDUDE | Программирование микроконтроллеров AVR

Узнаем как подключить микроконтроллер к программатору используя интерфейс ISP при помощи нескольких проводников. Чтобы правильно подключить микросхему-микроконтроллер к программатору нужно разобраться где у него и какие выводы. Для получения исчерпывающей информации о интересующем нас микроконтроллере качаем на официальном сайте даташит datasheet на интересующий нас чип — Даташиты по микроконтроллерам ATMEL. На первой страничке даташита приводится подробное описание возможностей микроконтроллера, а далее приведена распиновка микросхем под каждый из типов корпусов.

Продолжение перевода лекций SparkFun [1].

Программатор для МК

Автономный программатор AVR. Работать нужно по возможности в комфортной обстановке и с комфортом,. Реальность вносит свои коррективы. Пришлось как раз заниматься серийным программированием микроконт-. Требовалось приехать на объект с программатором и ноутбуком, разобрать. Вопрос возник в процессе уже после нескольких итерация, и не давал.

Работа с микроконтроллерами: прошивка программатором и чистый «Си»

После подачи низкого уровня на вход RESET необходимо выполнить инструкцию разрешения программирования. В таблице представлено описание сигналов программирования. Обратите внимание, что не все выводы последовательного программирования совпадают с выводами внутреннего интерфейса SPI. Также следует отметить, что повсюду при описании последовательного программирования используются наименования MOSI и MISO для описания последовательного ввода и вывода данных, соответственно. Вместо них используются PE0 и PE1 для ввода и вывода данных при последовательном программировании см.

Видео к статье: Подключение и прошивка микроконтроллера AVR Адрес статьи: Up next. Программатор AVR за 1$ (USBasp).

Programmin

Прошить микроконтроллер, значит скопировать в него программу. Загрузить программу можно через специальное устройство — программатор. Программаторы бывают разных типов, нас интересуют те, которые умеют прошивать AVR микроконтроллеры фирмы atmel, тип ATmega. Раньше у меня был стационарный компьютер и я пользовался LPT программатором на фото слева.

Как подключить AVR микроконтроллер к программатору

Как проверить исправность работы USBasp программатора? Есть програматор. Не получаеться записать HEX файл на мк. Как убедиться что программатор виден для Ошибка программатора USBasp 2.

В первом случае микроконтроллеры программируются перед установкой в устройство, для перепрограммирования требуется их извлечение из устройства, установка в панельку программатора, извлечение из программатора, установка в устройство…. Такой метод возможен только при использовании DIP-корпусов.

Вообще версии Micronucleous начиная с 2. Жаль, а в описании платы фото в самом верху написано , что поддержка Attiny Thank you. Это у меня не правильная тинька? Хотя на чипе написано верно все..

Изделие обеспечивает формирование всех необходимых для выше указанных операций сигналов и питающих напряжений. Со стороны компьютера программатор подключается к USB порту, а со стороны целевой платы — к разъему для внутрисхемного программирования, установленному на плате. Питание программатора осуществляется от USB порта компьютера. Для работы с программатором может быть использована программа IDE версии 7.


Подключение к микроконтроллеру – PublicSensors

1.3 Подключение к микроконтроллеру

На этой странице: