Многие не знают, как выглядит микроконтроллер, но наверняка все видели небольшие микросхемы, находящиеся на печатной плате. Одна из таких микросхем запросто может оказаться микроконтроллером. Основная его функция – это управление электронными устройствами. Часто микроконтроллер называют «чипом» или «микрочипом», «мозгами» или просто контроллером.
Что такое микроконтроллер?
Микроконтроллер представляет из себя микросхему , внутри которой располагаются процессор, оперативно-запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), генератор тактовой частоты и периферийные устройства , такие как аналоговые и цифровые порты, интерфейсы, компараторы, таймеры и т.п. То есть это настоящий мини компьютер в одном маленьком кристалле, предназначенный для решения относительно простых задач. Центром микрочипа является процессор, выполняющий программу, записанную во внутреннее или внешнее ПЗУ. Посредством выполнения программы и происходит решение задач, для которых предназначено электронное устройство.
История микроконтроллеров
Появились микроконтроллеры в 1971 году, благодаря американцам М. Кочрену и Г. Буну. С тех пор их стали массово использовать в компьютерной технике и промышленной автоматизации. В Советском Союзе также велись разработки подобных устройств. Первый отечественный микроконтроллер был создан в 1979 году.
В настоящее время изготовлением микроконтроллеров занимается множество компаний по всему миру. Выпускаются 8-битные, 16-битные и современные производительные 32-битные микроконтроллеры. Наиболее популярными считаются микроконтроллеры PIC, AVR, MSP430 и ARM.
Разнообразие микроконтроллеров
Внешне одинаковые, все они отличаются друг от друга скоростью работы процессора, его разрядностью и размером внутренней памяти. Существует более 200 модификаций микроконтроллеров. Для каждого устройства необходимы микроконтроллеры с определенными параметрами (желательно максимально подходящими под решаемую устройством задачу при минимальной стоимости). Поэтому помимо производительности, при создании микроконтроллера, учитывается и его итоговая стоимость. Наиболее востребованы рынком массовые типы микроконтроллеров, имеющие простое устройство и наиболее дешевые в производстве. Такие микроконтроллеры предназначены для решения простых задач и используются в детских игрушках, бытовой технике, в системах автоматического открывания дверей и т.д. Но существуют и микроконтроллеры, которые могут выполнять множество различных сложных операций за короткий промежуток времени. Такие микрочипы ставят в современные смартфоны, планшеты и другую сложную технику. Конечно, и цена на такие микросхемы соответствующая.
Как программируют микроконтроллеры?
Для того чтобы быть использованным в электронном устройстве, микроконтроллер должен быть запрограммирован управляющей микропрограммой («прошивкой»), которая будет управлять данным устройством. Прошивки, в большинстве случаев, пишутся на таких языках программирования как Си и ассемблер. Язык Си имеет преимущество перед ассемблером, поскольку предоставляет возможности для более быстрой разработки микропрограммы, обладает универсальностью, лучшей читаемостью алгоритма. Если же задача требует использования высокопроизводительных микроконтроллеров для своего решения, то в большинстве случаев в качестве прошивки используют какую либо операционную систему и специально написанное для нее программное обеспечение.
Для облегчения разработки и отладки микропрограмм применяются специальные программные симуляторы, внутрисхемные эмуляторы и аппаратные отладочные интерфейсы.
Процесс программирования микроконтроллеров
Процесс программирования микроконтроллеров состоит из нескольких этапов. В первую очередь определяются задачи, которые будет выполнять микроконтроллер. Затем разрабатывается схема электрическая принципиальная – графическая модель, предназначенная для обозначения взаимосвязей элементов. Далее составляется алгоритм работы микроконтроллера в устройстве и пишется микропрограмма (или используется уже имеющаяся). По завершению разработки можно приступить непосредственно к загрузке программы в микроконтроллер («прошивке»). С помощью симуляторов и эмуляторов можно промоделировать работу микрочипа на компьютере и увидеть, как он будет работать в устройстве. Для того чтобы файл-прошивку записать в микроконтроллер, используется специальное устройство – программатор, который вместе с микроконтроллером подключается к персональному компьютеру. Есть два способа прошивки – параллельное программирование и внутрисхемное программирование. Первое более быстрое и используется при массовом производстве. Второй вид программирования часто используется для перепрошивки готового устройства.
После всего этого микроконтроллер встраивается в устройство, в котором он будет использоваться, тестируется и в случае обнаружения ошибок в схеме и/или прошивке производится доработка. В дальнейшем доработанное устройство передается в серийное производство.
Использование микроконтроллеров
Микроконтроллеры в наши дни используются практически во всех сферах деятельности человека – в компьютерах и вычислительной технике, в бытовой и электротехнике, в военной промышленности, транспортных средствах и т. д. У каждого человека дома и на работе есть устройства с микроконтроллерами – телевизоры, мобильные телефоны, стиральные машинки, автомобили. Это можно перечислять бесконечно. Уже невозможно представить мир без умных электронных устройств. Использование микроконтроллеров позволяет сделать устройство более компактным и снизить энергопотребление, а грамотно написанная микропрограмма повысит его конкурентоспособность. Поэтому важно обращаться для создания электронных устройств с использованием микроконтроллеров в , где высококвалифицированные специалисты выполнят и помогут выпустить вашу идею на рынок в кратчайшие сроки.
Ардуино – популярнейший микроконтроллер на сегодняшний день, с которым знаком каждый инженер, а большая часть даже вплотную работала. Вся прелесть его заключается в том, что ПО под свои проекты нет необходимости писать с нуля, ведь изначально в МК загружены пресеты, которые вы можете применять по необходимости.
В большинстве случаев достаточно даже просто скачать уже готовую библиотеку, которую можно найти в свободном доступе на нашем сайте. Но те, кто ещё не встречался с данным устройством, могут недоумевать во многих нюансах его использования. Давайте же приоткроем ширму тайны и разберём микроконтроллеры для начинающих.
Начиналась вся эта эра микроконтроллеров, которые мы сегодня используем во всех видах техники, с микро-ЭВМ или Электро-Вычислительных-Машин. Они, по сути, и были первыми контроллерами, что традиционно означает – управляющее устройство, но строились на платформе одного кристалла.
Впервые данное изобретение было запатентовано в 1971 году М. Кочреным, который разместил на одном кристалле сразу и процессор, и память с возможностью ввода-вывода обрабатываемой информации.
На сегодняшний день простейшим примером МК будет процессор, который установлен у каждого из вас в ноутбуке или ПК. Там есть некоторые нюансы в терминологии, но по своей сущности он является именно микроконтроллером.
Назначение и область применения микроконтроллера
Но давайте разберёмся, чем smd микроконтроллеры 14 pin отличаются от 12 пиновых и как применять микроконтроллеры для чайников.
Для начала стоит обозначить, что область применения МК – гигантская, каждый современный автомобиль, холодильник и любой электрический прибор, если не учитывать различные адаптеры и модули, содержат в себе тот самый однокристальный (чаще поликристальный) чип. Ведь без него было бы невозможно, в принципе, контролировать приборы и каким-либо образом ими манипулировать.
А назначение устройства выплывает напрямую из терминологии, описанной выше, ведь любой МК, по своей сути, – маленький процессор, обрабатывающий команды, способный принимать и передавать данные, а в исключительных случаях, даже сохранять их в постоянной памяти.
Соответственно, прямое назначение такого устройства – контроль всего, что происходит на его платформе, например, в вашем ПК процессор является сердцем и ядром системы, ведь любой код компилируется в двоичный, дабы уже МК мог обрабатывать данные и выводить результаты.
Без этого ни одно приложение бы не запустилось. Но это лишь конкретная область применения, на деле, с помощью Ардуино и похожих систем, можно контролировать любые переменные, включая свет по хлопку или раздвигание штор при изменении освещения на улице. Вот и выходит, что назначение МК – это контроль любых переменных и изменение системы под их состояние, возможно, с последующим выводом промежуточных данных, для проверки работоспособности.
Но давайте разберёмся, почему любая разработка ПО для микроконтроллеров с помощью специальных сред в итоге компилирует (превращает) код в двоичный, и зачем это нужно?
Принцип работы
В предыдущих пунктах мы оперировали абстрактными понятиями, теперь пришло время перейти к реальным и практическим примерам. Принцип работы любого, даже самого сложного контроллера, сводится к следующему алгоритму:
- Он принимает определённые переменные или другие данные, которые прежде должны быть преобразованы в двоичный сигнал. Это необходимо, поскольку на низшем уровне система способна воспринимать лишь 2 состояния – есть сигнал или нет сигнала. Такой принцип называют аналоговым. Существует аналогичный алгоритм, когда сигнал присутствует постоянно, но меняется по частоте – цифровой. У них множество различий, как в областях применения, так и в особенностях работы сигнала, но суть одна – процессор способен воспринимать лишь значения 0 и 1, или true и false, и не важно, какими путями микропроцессоры и микроконтроллеры будут их считывать.
- Во внутренней памяти устройства хранится набор специальных инструкций, который позволяет, путем базовых математических преобразований, выполнять какие-то действия с полученными данными. Именно эти базовые операнды и берутся на вооружение компилируемых языков программирования, когда необходимо написать библиотеку готовых функций. Остальные нюансы языков программирования – это уже синтаксис и теория алгоритмов. Но в результате, всё сводится к базовым операндам, которые превращаются в двоичный код и обрабатываются внутренней системой процессора.
- Всё, что было получено и сохранено после обработки, выдается на выход. На самом деле, данный пункт выполняется всегда, единственная разница, что выходом может быть и преобразование состояния объекта какой-то системы. Простейшим примером станет замыкание электрической цепи, в случае, если на специальный датчик подать ток, вследствие чего загорится лампочка. Здесь всё зависит от типа устройства, так, 8051 микроконтроллер может выполнять несколько видов выводов, имея 14 пинов, а какой-то другой – всего один, ведь у него 1 пин на выход. Количество выходов влияет на многопоточные свойства девайса, иными словами, возможность выводить информацию сразу на несколько устройств или совершать несколько действий одновременно.
В целом, любой моно или поликристальный блок работает по этому алгоритму, разница лишь в том, что второй – способен параллельно выполнять несколько расчетов, а первый имеет конкретный список действий, который должен выполнить последовательно.
Это напрямую влияет на скорость работы устройств, и именно из-за этой характеристики 2-ух ядерные девайсы мощнее, чем 1-ядерные, но имеющие большую герцовку (способность выполнять большее количество преобразований за единицу времени).
Но почему микроконтроллер овен не способен выполнять некоторые действия, характерные для 8051, и какая классификация вообще существует в данной сфере?
Виды микроконтроллеров
На самом деле, в отличие от вспомогательных девайсов, у микроконтроллеров нет какой-то стандартизированной классификации, из-за чего их виды, зачастую, разделяют по следующим параметрам:
- Количеству аналоговых и цифровых пинов.
- Общему количеству пинов.
- Количеству ядер, которые присутствуют в МК.
- Скорости выполнения операций или герцовке.
- Объему оперативной и постоянной внутренней памяти.
- Размерам.
В зависимости от изменения тех или иных параметров, можно рассчитать подключение нагрузки к микроконтроллеру и подобрать устройство, идеально подходящее к вашему конкретному проекту, как по характеристикам, так и по функционалу.
Особенности микроконтроллеров Ардуино
Но всё же у большинства, при упоминании МК, в памяти всплывает название «Ардуино», и это не удивительно. Ведь у данной разновидности поликристальных чипов есть характерные особенности, выгодно выделяющие ее на фоне конкурентов:
- Низкий порог входа . Так как программная среда уже написана и протестирована за вас, никаких «велосипедов» придумывать не нужно.
- Оптимизация под конкретные задачи . У создателей есть целая линейка разнообразных чипов, которые сильно различаются по характеристикам, благодаря чему будет проще подобрать подходящий.
- Готовая платформа и множество решений различных проблем или задач в открытом доступе.
Подключение и управление
Подключаются чипы через специальные разъемы, называемые пинами. Те, в свою очередь, распределяются на:
- Отвечающие за питание . Стандартное сочетание из нуля, фазы и заземления. Последнее чаще всего игнорируют.
- Отвечающие за ввод данных .
- Отвечающие за вывод данных . Их можно разделить на аналоговые и цифровые, о главном различии уже упоминалось выше, и каждый из выходов имеет свои достоинства и недостатки.
С помощью всех этих «ножек» и происходит управление системой, а их необходимое количество напрямую зависит от поставленной задачи.
Микроконтроллеры для начинающих
Лучшим примером МК для начинающих инженеров станет именно плата Ардуино, по уже упомянутым причинам. В ней вы сможете быстро разобраться, благодаря низкому порогу входа, но также, по желанию, изучить различные интересные паттерны проектирования и решения задач.
Всё это позволит новичку развиться, познакомиться ближе с миром радиотехники, а возможно, и программирования, что в дальнейшем станет хорошей базой для изучения более сложных вещей и воплощения в жизнь крупных проектов. Поэтому другой, более подходящей платформы для начинающих, – не найти.
Пример применения микроконтроллера Ардуино
Выбирая свой первый проект, вы, скорее всего, самостоятельно просмотрите немало разнообразных примеров применения Ардуино, но мы же можем привести наиболее популярные:
- Системы смарт-хауса . Это различные умные переключатели, занавески, вентиляторы и разнообразные сигнализации. Они позволяют сделать ваше взаимодействие с жильем более интерактивным.
Для работы с микроконтроллерами, такими как Ардуино или Iskra JS и подобными, нужны дополнительные знания, которые мы постепенно будем познавать.
Сегодня я хотел бы написать о микроконтроллерах в целом, чтобы свои знания подтянуть и заодно другим рассказать.
Микроконтроллер представляет собой микросхему, которая используется для управления электронными устройствами. В типичном микроконтроллере имеются функции и процессора , и периферийных устройств , а также содержится оперативная память и/или ПЗУ (постоянное запоминающее устройство). Если говорить кратко, то микроконтроллер - это компьютер, функционирующий на одном кристалле, который способен выполнять относительно несложные операции.
Микроконтроллеры широко используются в вычислительной технике (процессоры, материнские платы, контроллеры дисководов, накопители HDD/FDD), бытовой электронике (стиральные машины, микроволновые печи, телефоны и т.д.), в промышленности и т.д. Рассмотрим, как проходит подключение и управление микроконтроллером, а также другие нюансы, связанные с ними.
Подключение микроконтроллера
Нижеописанная схема является упрощенным вариантом подключения микроконтроллера AVR. AVR - это семейство восьмибитных микроконтроллеров фирмы Atmel. Год разработки - 1996.
По-хорошему, необходимо добавить еще несколько дополнительных внешних элементов в схему.
Провод, который указан на схеме пунктиром, использовать не обязательно в том случае, если питание микроконтроллера идет от внешнего источника.
Вывод AREF используется как вход для опорного напряжения АЦП - сюда подается напряжение, относительно которого будет высчитываться АЦП. Допустимо использование внутреннего источника опорного напряжения на 2.56В, или же использовать напряжение от AVCC.
АЦП (Аналого-цифровой преобразователь) - электронное устройство, преобразующее напряжение в двоичный цифровой код
На вывод AREF рекомендуется подключить конденсатор, который позволит увеличить качество напряжения АЦП и, тем самым, позволит провести правильные измерения АЦП. Между AVCC и GND установлен конденсатор и дроссель, а между GND и VCC установлен керамический конденсатор с емкостью 100 нФ (поближе к выводам питания схемы) для сглаживания кратких импульсов помех, образующихся в результате работы микросхемы.
Также между GND и VCC устанавливается ещё один конденсатор с емкостью в 47 мкФ для того, чтобы сгладить возможные броски напряжения.
Управление микроконтроллером
Микроконтроллеры AVR оснащены Гарвардской архитектурой. Каждая из областей памяти располагаются в своем адресном пространстве. Память данных в контроллерах осуществляется посредством регистровой, энергонезависимой и оперативной памяти.
Регистровая память предусматривает наличие 32 регистров общего назначения, которые объединены в файл, а также служебные регистры для ввода и вывода. И первые, и вторые располагаются в пространстве ОЗУ, однако не являются его частью.
В области РВВ (регистров ввода и вывода) находятся различные служебные регистры - состояния, управления микроконтроллером и т.д., а также регистры, которые отвечают за управление периферийных устройств, являющихся частью микроконтроллера. По сути, управление данными регистрами и является методом управления микроконтроллером.
Устройства на микроконтроллерах
Микроконтроллеры AVR являются простыми в использовании, имеют низкую потребляемую мощность и высокий уровень интеграции.
Как правило, такие микроконтроллеры могут использоваться на самых разных устройствах, в том числе системах общего назначения, системах оповещения, для ЖК-дисплеев, плат с ограниченным пространством.
Также они используются для измерителей уровня заряда аккумулятора, аутентификации, в автомобильной электронике, для защиты от короткого замыкания и перегрева и т.д. Кроме промышленных целей, микроконтроллеры могут использоваться (и чаще всего используются новичками) для создания следующих устройств:
- Регистратор температуры на Atmega168;
- Кухонный таймер на Attiny2313;
- Термометр;
- Измеритель частоты промышленной сети на 50 Гц;
- Контроллер светодиодного стоп-сигнала на Attiny2313;
- Светодиодные лампы и светильники, реагирующие на температуру или звук;
- Электронные или сенсорные выключатели.
Отметим, что для разных устройств используются разные модели микроконтроллеров. Так, 32-разрядные микроконтроллеры AVR UC3 (а также XMEGA, megaAVR, tinyAVR и т.д.) подойдут для систем общего назначения с технологиями picoPower, QTouch, EEPROM, системами обработки событий и самопрограммированием.
Микроконтроллеры для начинающих
Если вы собираетесь программировать микроконтроллеры, такие как Ардуино, например, а также собирать устройства, которые предусматривают их наличие в схеме, необходимо учитывать некоторые правила и рекомендации :
- Перед решением любых задач следует делить их на более мелкие, вплоть до базовых действий.
- Не следует пользоваться кодогенераторами и прочими "упрощающими" материалами, хотя бы на начальных этапах.
- Рекомендуется изучить язык С и Ассемблер - это упростит понимание принципа работы микроконтроллеров и программ.
Для того, чтобы новичок мог заниматься микроконтроллерами, рекомендуется изучать базовые материалы. К таким материалам можно отнести следующие книги: "Применение микроконтроллеров AVR: схемы, программы и алгоритмы" Баранов В.Н., 2006 год, "Микроконтроллеры AVR: вводный курс" , Дж. Мортон, 2008 год, "Программирование микроконтроллеров ATMEL на языке С" Прокопенко В.С, 2012 год.
Данные книги являются практическим руководством, в котором затрагиваются аспекты и основы цифровой логики, а также рассматриваются примеры программ для микроконтроллеров, написанных на языке С с различными имитаторами схем, компиляторами и средами.
Что нужно для того, чтобы стать профессиональным разработчиком программ для микроконтроллеров и выйти на такой уровень мастерства, который позволит с лёгкостью найти и устроиться на работу с высокой зарплатой (средняя зарплата программиста микроконтроллеров по России на начало 2015 года составляет 80 000 рублей). Чтобы понимать то, о чём я буду говорить, желательно, чтобы вы хотя бы на начальном уровне знали электронику или хотя бы более-менее помнили школьный курс физики. Если этим вы похвастаться не можете, то тоже не страшно, так как я буду стараться объяснять всё максимально доступно. Ну а если какие-то вещи останутся для вас непонятными, то задавайте вопросы . Только прошу описывать вашу проблему как можно более подробно, чтобы не тратить своё и моё время на переписку с дополнительными уточнениями.
Для тех, у кого проблемы с просмотром видео, я коротко расскажу его содержание. Итак, микропроцессор и микроконтроллер - это специальные микросхемы. Но чем они отличаются друг от друга? Вопрос не такой простой, как хотелось бы. Скажу больше, я не уверен, что знаю правильный ответ))) Однако, опираясь на свои немалые знания и опыт, я могу попытаться на него ответить. В далёкие времена вычислительные системы строились на множестве микросхем разных типов. Когда-то вообще не было микропроцессоров. Вычислительные системы сначала были механическими, потом ламповыми, потом транзисторными. Потом пришло время интегральных микросхем. Мне довелось работать на первой советской автоматической телефонной станции (АТС) с программным управлением. Её процессор был собран на микросхемах 155-й серии (электронщики меня поймут). Эта АТС занимала целую комнату. Но со временем элементная база становилась всё меньше и меньше по размеру. То, что раньше собирали из нескольких десятков микросхем, удалось впихнуть в одну микросхему. Так и получился микропроцессор. Однако для создания полноценной вычислительной системы требовались и другие элементы: память, элементы ввода-вывода и т.п. В итоге микропроцессорная система состояла из нескольких микросхем, и управлял всей этой системой микропроцессор . Однако техника не стояла на месте. Учёным и инженерам удалось сделать кристаллы микросхем ещё меньше. И кому-то пришла идея объединить все элементы микропроцессорной системы в одну микросхему. Так появился микроконтроллер . Итак, современный микроконтроллер - это микросхема, которая включает в себя все элементы микропроцессорной системы, такие как процессор, порты ввода-вывода, оперативную память и т.п. Таким образом, чтобы собрать какое-нибудь простейшее устройство, нужно всего лишь:
Сложно? Да, непросто. Но если вы из тех, кто опускает руки при первых же проблемах, то эта профессия не для вас. Профессиональный программист - это сильная личность, человек, для которого нет нерешаемых задач. Применение микроконтроллеровСегодня микроконтроллеры применяются практически во всех электронных устройствах - от китайских гирлянд до систем управления атомными станциями. Разумеется, функциональность и надёжность микроконтроллеров в гирляндах и на АЭС отличаются. Практически вся бытовая техника (за исключением, быть может, простых электрочайников и подобных устройств) управляется микроконтроллерами: стиральные машины, телевизоры, холодильники, мультиварки и т.п. В современных автомобилях также используются микроконтроллеры в бортовых компьютерах. В общем, трудно в современном мире найти сферу человеческой деятельности, где бы не применялись микроконтроллеры. Какой из этого вывод? Правильно. Если вы станете профессиональным программистом в области разработки устройств на микроконтроллерах и их программирования, то без работы вы не останетесь. А с учётом того, что профессия эта сложная, и не каждому охота с ней связываться, эта работа будет ещё и высокооплачиваемой, так как спрос на таких специалистов высок. Но об этом мы ещё поговорим в следующих статьях. Ждите писем. А если вы ещё не подписаны, то |
Рассмотрим внутреннюю архитектуру микроконтроллеров AVR, попробуем разобраться из каких блоков состоит кристалл микросхемы и за какие функции отвечает каждый блок, как они взаимодействуют между собою. Также будут приведены полезные сравнения и примеры, ценные заметки что помогут прояснить принципы работы микроконтроллера с внешними устройствами и периферией.
AVR микроконтроллер изнутри
Микроконтроллер изнутри - это компьютер со своим вычислительным устройством, постоянной и динамической памятью, портами ввода-вывода и разной периферией.
Рис. 1. Структура AVR микроконтроллера. Рисунок с сайта digikey.com
Внутри микроконтроллер содержит:
- Быстродействующий процессор с RISC-архитектурой;
- FLASH-память;
- EEPROM-память;
- Оперативную память RAM;
- Порты ввода/вывода;
- Периферийные и интерфейсные модули.
RISC (Reduced Instruction Set Computer) - архитектура с тщательно подобранным набором команд, которые как правило выполняются за один такт работы процессора. Современные AVR микроконтроллеры содержат около 130 команд, которые очень быстро выполняются и не требуют больших затрат как по внутри-процессорным ресурсам, так и по потребляемой мощности.
Структурная схема AVR микроконтроллера
Посмотрим на рисунок ниже и разберемся из каких блоков состоит микроконтроллер и как они связаны между собою:
Рис. 2. Структурная схема AVR микроконтроллера.
Рассмотрим кратко что изображено на блоках в схеме:
- JTAG Interface (Joint Test Action Group Interface) - интерфейс внутрисхемной отладки (4 провода);
- FLASH - перепрограммируемая память для сохранения программы;
- Serial Peripheral Interface, SPI - последовательный периферийный интерфейс (3 провода);
- EEPROM (Electrically Erasable Programmable Read-Only Memory) - перепрограммируемое ПЗУ, энергонезависимая память;
- CPU (ЦПУ) - центральный процессор управления, сердце микроконтроллера, 8-битное микропроцессорное ядро;
- ALU (АЛУ) - арифметико-логическое устройство, основа блока CPU;
- RAM (Random Access Memory) - оперативная память процессора;
- Program Counter - счетчик команд;
- 32 General Purpose Registers - 32 регистра общего назначения;
- Instruction Register - регистр команд, инструкций;
- Instruction Decoder - декодер команд;
- OCD (On-Chip Debugger) - блок внутренней отладки;
- Analog Comparator - аналоговый компаратор, блок сравнения аналоговых сигналов;
- A/D Converter (Analog/Digital converter) - аналогово-цифровой преобразователь;
- LCD Interface (Liquid-Crystal Display Interface) - интерфейс для подключения жидко-кристаллического дисплея, индикатора;
- USART (Universal Asynchronous Receiver-Transmitter), UART - универсальный асинхронный приемопередатчик;
- TWI (Two-Wire serial Interface) - последовательный интерфейс с двухпроводным подключением;
- Watchdog Timer - сторожевой или контрольный таймер;
- I/O Ports - порты вода/вывода;
- Interrupts - блок управления и реакции на прерывания;
- Timers/Counters - модули таймеров и счетчиков.
Подробнее о внутренних блоках микроконтроллера
А теперь подробно рассмотрим все блоки микроконтроллера, разберемся что и для чего нужно, приведу простые примеры доступным языком.
JTAG Interface - важный интерфейс который позволяет производить внутреннюю отладку прямо в чипе используя блок внутренней отладки (OCD ), без использования эмуляторов. Можно сказать что JTAG - это интерфейс для "железной" отладки микроконтроллера. Через JTAG-адаптер микросхема напрямую подключается к программному комплексу для программирования и отладки.
Используя данный интерфейс можно в пошаговом режиме выполнять программу прямо в микроконтроллере, смотреть как изменяется содержимое регистров, как мигают индикаторы и светодиоды что подключены к микроконтроллеру после каждого шага и т.п. Для подключения к JTAG интерфейсу достаточно 4-х проводников: TDI(Test Data In), TDO(Test Data Out), TCK(Test Clock), TMS (Test Mode Select).
JTAG интерфейс доступен далеко не во всех микроконтроллерах AVR, как правило таким вкусным дополнением обладают чипы у которых 40 и более лапок, а объем памяти доступен в размере не менее 16КБ. Для серьезных задач - серьезные материалы и инструменты.)
FLASH - память программ, энергонезависимое ПЗУ(постоянное запоминающее устройство) что выполнено по технологии FLASH. Здесь хранится программа, которая будет исполняться блоком ALU микроконтроллера. Флешь-память чипа можно многократно перезаписывать, тем самым меняя или дополняя программный код для выполнения. Данный тип памяти может сохранять записанные в нее данные в течение 40 лет, а количество возможных циклов стирания/записи может достигать 10000.
В зависимости от модели микроконтроллера размер FLASH-памяти может достигать 256 KБ.
Serial Peripheral Interface, SPI - последовательный периферийный интерфейс (SPI) который зачастую применяется для обмена данными между несколькими микроконтроллерами со скоростью до нескольких MГц (нескольких миллионов тактов в секунду).
Для обмена данными по SPI интерфейсу между двумя устройствами достаточно 3-х проводников:
- MOSI (Master Output Slave Input) - Данные от ведущего к ведомому;
- MISO (Master Input Slave Output) - Данные от ведомого к ведущему;
- CLK (Clock) — тактовый сигнал.
Устройства с SPI-интерфейсом делятся на два типа: ведущий(Master) и ведомый(Slave). Если к интерфейсу подключено несколько устройств то для обмена данными между ними нужны дополнительные линии связи(проводники) чтобы мастеру можно было выбрать ведомое устройство и сделать запрос к нему.
Также SPI интерфейс используется для внутрисхемного SPI программирования, по этому интерфейсу к микроконтроллеру подключается программатор.
EEPROM - энергонезависимая память данных в которой данные будут храниться даже при отключении питания микроконтроллера. В данной памяти можно хранить настройки выполнения программы, собранные данные для статистики работы устройства и другую полезную информацию. К примеру, собрав маленькую метеостанцию на микроконтроллере, в EEPROM на каждый день можно сохранять данные о температуре воздуха, давлении, силе ветра, а потом в любой момент считать эти собранные данные и провести статистические исследования.
Для EEPROM выделено отдельное адресное пространство которое отличается от адресного пространства RAM и FLASH. Память EEPROM микроконтроллера - очень ценный ресурс, поскольку ее как правило очень мало - от 0,5 до нескольких килобайт на чип. Количество перезаписей для данного типа памяти составляет порядка 100000 что в 10 раз больше чем ресурс FLASH памяти.
ALU - Арифметико-логическое устройство, которое синхронно с тактовым сигналом и опираясь на состояние счетчика команд (Program Counter ) выбирает из памяти программ (FLASH ) очередную команду и производит ее выполнение.
Тактовый сигнал для микроконтроллера вырабатывается тактовым генератором, и может быть подан из нескольких доступных источников на выбор:
- внутренний RC-генератор, который можно калибровать на нужную частоту;
- керамический или кварцевый резонатор с конденсаторами (не у всех моделей);
- внешний тактовый сигнал.
Установка источника тактовых импульсов производится при помощи FUSE-битов.
FUSES (с англ.: плавление, пробка, предохранитель) - специальные 4 байта(4*8=32 бит) данных, которые настраивают некоторые глобальные параметры микроконтроллера в процессе прошивки. После прошивки данные биты нельзя изменить через внутреннюю программу что записана в МК.
Данной конфигурацией бит мы указываем микроконтроллеру вот что:
- какой использовать задающий генератор (внешний или внутренний);
- делить частоту генератора на коэффициент или нет;
- использовать ножку сброса (RESET) для сброса или же как дополнительный пин ввода-вывода;
- количество памяти для загрузчика;
- другие настройки зависимо от используемого микроконтроллера.
CPU - это мозг микроконтроллера, который содержит в себе АЛУ, регистры и оперативную память.
К ALU подключен блок из 32-х регистров общего назначения (32 General Purpose Registers - регистровая память), каждый из которых представляет собою 1 байт памяти (8 бит). Адресное пространство регистров общего назначения размещено в начале оперативной памяти (RAM) но не является ее частью. С данными что помещаются в регистры можно производить разнообразные арифметические, логические и битовые операции. Выполнение подобных операций в оперативной памяти не доступно. Для работы с данными из RAM нужно их записать в регистры, произвести в регистрах нужные операции, а потом записать результирующие данные из регистров в память или в другие регистры для выполнения каких-то действий.
RAM - оперативная память. В нее можно записывать данные из регистров, считывать данные в регистры, все операции с данными и расчеты производятся в регистрах. Для разных семейств AVR чипов размер оперативной памяти ограничен:
- ATxmega - до 32 KБ;
- ATmega - 16 Кб;
- ATtiny - 1 Кб.
Analog Comparator - данный блок сравнивает между собою два уровня сигнала и запоминает результат сравнения в определенном регистре, после чего сданный результат можно проанализировать и выполнить необходимые действия. Для примера: можно использовать этот блок как АЦП(Аналогово-Цифровой Преобразователь) и измерять напряжение батареи питания, в случае если если напряжение батареи достигло низкого уровня - произвести некоторые действия, помигать красным светодиодом и т.п. Также данный модуль можно применять для измерения длительности аналоговых сигналов, считывания установленных режимов работы устройства при помощи потенциометра и т.п.
A/D Converter - данный блок преобразовывает аналоговое значение напряжения в цифровое значение, с которым можно работать в программе и на основе которого можно выполнять определенные действия. Как правило диапазон напряжений что подаются на вход АЦП в AVR микроконтроллере находится в пределах 0-5,5 Вольт. Для данного блока очень важно чтобы микроконтроллер питался от стабильного и качественного источника питания. Во многих AVR микроконтроллерах есть специальный отдельный вывод для подачи стабильного питания на схему АЦП.
LCD Interface - интерфейс для подключения жидкокристаллического индикатора или дисплея. Применятся для отображения информации, состояния устройства и его узлов.
USART - последовательный асинхронный интерфейс для обмена данными с другими устройствами. Есть поддержка протокола RS-232, благодаря чему микроконтроллер можно соединить для обмена данными с компьютером.
Для подобной связи МК с COM-портом компьютера нужен конвертер логических уровней напряжения (+12В для COM - в +5В для микроконтроллера), или же просто RS232-TTL. Для подобных целей используют микросхемы MAX232 и им подобные.
Для подключения микроконтроллера к компьютеру через USB используя UART-интерфейс можно использовать специализированную микросхему FT232RL. Таким образом на новых компьютерах и ноутбуках можно не имея физического COM-порта привязать микроконтроллер используя USB-порт через USART интерфейс.
TWI - интерфейс для обмена данными по двухпроводной шине. К такой шине данных можно подключить до 128 различных устройств, используя две линии данных: тактовый сигнал (SCL) и сигнал данных (SDA). Интерфейс TWI является аналогом базовой версии интерфейса I2C.
В отличие от SPI интерфейса (один мастер и один/несколько ведомых) интерфейс TWI - двунаправленный, сто позволяет организовать между несколькими микроконтроллерами небольшую внутреннюю сеть.
Watchdog Timer представляет собою систему контроля зависания устройства с последующим его перезапуском. Это как автоматическая кнопка RESET для старенького компьютера с глючной ОС.))
I/O Ports , GPIO - это набор блоков портов ввода/вывода к пинам которых можно подключить разнообразные датчики, исполняющие устройства и цепи. Количество пинов вход/выход, что идут от портов в микроконтроллере, может быть от 3 до 86.
Выходные драйверы в портах AVR микроконтроллера позволяют напрямую подключать нагрузку з потребляемым током 20 мА(максимум 40 мА) при напряжении питания 5В. Общий нагрузочный ток для одного порта не должен превышать значение в 80 мА (например на 4 пина для одного из портов повесить по светодиоду с током 15-20 мА).
Interrupts - это блок который отвечает за реакцию и запуск на выполнение определенных функций при поступлении сигнала на определенные входы микроконтроллера или же по какому-то внутреннему событию (например тиканью таймера). Под каждое прерывание разрабатывается и записывается в память отдельная подпрограмма.
Почему этот блок называется блоком прерываний? - потому что при возникновении определенного для прерывания события выполнение основной программы прерывается и происходит приоритетное выполнение подпрограммы что написана для текущего прерывания. По завершению выполнения подпрограммы происходит возвращение к выполнению основной программы с того момента где она была прервана.
Timers/Counters - набор таймеров и счетчиков. Микроконтроллер, как правило, содержит в себе от одного до четырех таймеров и счетчиков. Они могут применяться для подсчета количества внешних событий, формирования сигналов определенной длительности, вырабатывать запросы на прерывания и т.п. Разрядность таймеров и счетчиков составляет - 8 и 16 бит (смотреть в даташите для чипа).
Заключение
Вот в принципе и все что изначально полезно знать о структуре микроконтроллера AVR. Дальше, в процессе работы и программирования, у вас будет возможность на практике изучить даташиты для разных моделей AVR чипов, узнать более детально принципы работы каждого из структурных кубиков МК и изучить как они работают, поиграться с отладкой и т.п.
В следующей статье попробуем разобраться с маркировкой микроконтроллеров, поразмышляем о наиболее доступных и подходящих для начального изучения чипах.