Ключ к знанию

Из чего состоит микроконтроллер


Что такое микроконтроллер, зачем он нужен и как его используют

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

История появления

Работы над изобретением микропроцессора велись с начала 1970-х годов. Первой компанией, разработавшей его, была компания Intel. Уже в 1971 году ее был выпущен первый микроконтроллер 4004, который состоял из 2300 полупроводниковых транзисторов, а по размеру был не больше ладони. Это стало возможным, после того как для микросхемы был специально разработан кристалл процессора.

Несмотря на маленькие размеры, производительность микропроцессора не уступала компьютеру Eniac, имеющему габариты в 85 м3. Особенностью этого устройства было то, что оно могло обрабатывать только 4 бита информации.

В ближайшие полгода еще несколько компаний заявили о создании аналогичных изделий.

К концу 1973 года Intel выпускает 8-зарядный микропроцессор. Он был настолько удачно разработан, что и сегодня считается классикой.

Через несколько месяцев фирма Motorola выпускает свой 8-битовый микропроцессор 6800. Он стал сильным конкурентом интеловской микросхеме, т. к. имел более значительную систему прерываний и одно напряжение электропитания. В 8080 их было три.

Внутренняя архитектура 6800 тоже отличалась. В ней не было регистров общего назначения, в которых могли сохраняться как адресная информация, так и числовые показатели. Вместо них, в процессоре появился еще один полноценный аккумулятор для обработки данных и 16-разрядные регистры для хранения адресов. Работа с памятью у 6800 выполнялась быстрее и была проще, но 8080 тратил меньше времени на обмен внутренней информацией между регистрами.

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

В 1978 году Интел выпустила 16-разрядный микропроцессор, который IBM использовала для разработки персональных компьютеров. Моторола не отстала от своего конкурента и тоже выпустила 16-разрядный микропроцессор, который использовали Atari и Apple.

Сейчас существует более 200 разновидностей микроконтроллеров. Количество компаний, их изготавливающих, перевалило за два десятка. Широкое распространение у разработчиков получили:

  • 8-битные микроконтроллеры Pic компании Microchip Technology и AVR от Atmel;
  • 16-битовые MSP 430 фирмы TI;
  • 32-битные ARM от одноименной компании.
В России пользуются популярностью микроконтроллеры Renesas Electronics, Freescale, Samsung.

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

Микроконтроллер по сути является микросхемой, который состоит из:

  • Центрального процессора. В него входят блок управления, регистры, ПЗУ (постоянное запоминающее устройство).
  • Периферии, которая включает порты ввода-вывода, контроллеры прерываний, таймеры, генераторы различных импульсов, аналоговые преобразователи и подобные элементы.

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

Принцип работы микроконтроллера

Несмотря на сложное устройство принцип работы микроконтроллера очень прост. Он основан на аналоговом принципе действия. Система понимает лишь две команды («есть сигнал», «нет сигнала»). Из этих сигналов в его память вписывается код определенной команды. Когда МК считывает команду, он ее выполняет.

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

В зависимости от содержащихся в МК набора программ, они делятся на:

CISC – комплекс большого числа базовых команд;
RISC – только необходимые команды.

Большинство контроллеров содержит RISC набор. Объясняется это тем, что такой МК проще изготовить, он дешевле и больше пользуется спросом у разработчиков электронной техники.

Назначение и область применения микроконтроллера

Благодаря тому, что микроконтроллеры AVR очень просты в использовании, обладают высокой способностью интегрирования и низкой потребляемой мощностью, области их применения разнообразны:

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

Это не полный перечень областей применения МК.

Основное назначение МК – контролировать все процессы, которые происходят на его платформе. От включения или выключения света по хлопку до поднятия штор при изменении освещенности на улице. По сути, МК осуществляет контроль за состоянием неких переменных и изменение системы в динамических условиях.

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

Для работы микроконтроллеру, как и любому электронному устройству, необходима энергия. Напряжение МК Atmel AVR находится в диапазоне 1.8–5.5 Вольт и зависит от модели и серии. Большинство приборов работает от 5 Вольт. Но встречаются и низкочастотные модели (Attiny 2313), нижняя граница у которых от 1,8 В.

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

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

Если у модели несколько вводов и выводов питания, то подключать их нужно все.

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

Кроме того, необходимо установить и конденсаторы, лучше керамические, из расчета 1 на 100 нанофарад.

Подключение

Через микроконтроллер можно подключить к локальной сети любой девайс. В качестве таковой можно рассмотреть Ethernet. Прежде всего, определимся с понятиями.

Ethernet – это набор стандартов IEEE 802.3, которые описывают разнообразные технологии локальных сетей: общий канальный уровень и набор технологий физического уровня, включающий в себя для передачи информации оптоволокно, витую пару, коаксиал с различными скоростями.

Понять, как работает локальная сеть, можно через модель OSI. Она включает в себя несколько уровней:

  1. Физический. Состоит из витой пары, драйверов и трансформаторов, по которым происходит передача данных.
  2. Канальный. Через него передаются Ethernet-фреймы между узлами локальной сети.
  3. Сетевой. По нему происходит передача пакетов. Они могут передаваться через несколько сетей, различающихся по технологиям физического и канального уровней.
  4. Транспортный. Связывает узлы между собой. Перед отправкой данных транспортный уровень представляет их в виде пакета сетевого уровня и передает другому узлу. Он может отправлять и группы пакетов одновременно. Если используется протокол с установкой соединения, то перед отправкой транспортный уровень устанавливает соединение, контролирует его качество, а только потом передает пакет данных.
  5. Прикладной. Решает прикладные задачи, те, ради которых создавался. С внешним миром он обменивается данными по стандартному или эксклюзивному протоколу.

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

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

Управление микроконтроллером

Управление МК может осуществляться двумя способами:

  1. Проводной путь. Управление исполнительными механизмами происходит через электропроводное соединение управляющих цепей и исполнительных механизмов. Включение — по нажатию кнопки на диспетчерском пункте или кнопочном пульте.
  2. Беспроводной путь. Такой способ управления не требует проводного соединения. С передатчика или пульта дистанционного управления (ПДУ) передается сигнал, который идет на приемник.

Сигналы беспроводного соединения могут быть:

  • Оптическими. Подобными сигналами управляется домашняя бытовая техника: телевизоры или кондиционеры.
  • Радио. Есть несколько вариантов: Wi-Fi, Bluetooth и др.

Развитие современных средств связи позволяет управлять контроллерами как через ПДУ, находясь в непосредственной близости к прибору, так и по интернету из любой точки мира через локальную сеть.

Обеспечивает поддержку cети Wi-Fi МК ESP 8266. В продаже он может быть в виде микросхемы или распаян, как arduino. У него 32-битное ядро, программировать его нужно через последовательный порт UART. Бывают более продвинутые платы с возможностью прошивки по USB – это NodeMCU. Они могут хранить информацию, записанную, например, с датчиков. Такие платы работают с различными интерфейсами, в т. ч. SPI, I2S.

Поддерживает большое число функций:

  • планировщик задач;
  • таймер;
  • канал АЦП;
  • формирование на выходе ШИМ сигнала;
  • аудиопроигрыватель и многое другое.

Плата может быть использована как самостоятельное устройство и как модуль для беспроводной связи с Ардуино.

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

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

Существуют несколько способов тактирования МК. Они зависят от использования:

  • Внутреннего RC-генератора. Он может работать только на частоте 1, 2, 4, 8 МГц. Если нужна другая частота, то он не подойдет. При необходимости использования точных временных интервалов тоже нельзя пользоваться этим методом, т. к. его задающая частота колеблется в зависимости от температуры.
  • Внешнего кварца. Этот способ имеет более сложное подключение. Емкость конденсатора должна находиться в интервале 15–22 пФ. Один выход присоединяется к резонатору, а другой заземляется.
  • Внешнего генератора. Этот генератор также нестабилен при разной температуре, как и внутренний.
  • RС-цепочек. Для данной схемы подойдет конденсатор емкостью от 22 пФ, резистор 10–100 кОм.

Для простейших микроконтроллеров подойдут внутренний или внешний генератор и RC-цепочки. Для проектирования более точных МК потребуются стабильные источники тактирования.

Семейства микроконтроллеров

Все МК объединяются в семейства. Основная характеристика, по которой происходит это деление, — структура ядра.

 Под ядром МК подразумевают набор определенных команд, цикличность работы процессора, организацию как памяти программ, так и баз данных, систему прерываний и базовый набор периферийных устройств (ПУ).

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

Объединяют все МК в семейства одинаковость двоичного кода программирования.

Семейства делятся на:

  • MSC-51, производства Intel. Монокристальный МК на основе Гарвардской архитектуры. Основной представитель этого семейства 80С51, созданный по технологии CMOS. И хотя эти контроллеры разработаны еще в 80-х годах прошлого века, но до сих пор широко применяются. И сегодня многие компании, такие как Siemens, Philips и др. выпускают свои контроллеры с подобной архитектурой.
  • PIC (Microchip). МК Гарвардской архитектуры. В его основе лежит архитектура с сокращенным набором команд, встроенная память команд и данных, низкое энергопотребление. В это семейство входят более 500 различных МК (8-ми, 16-ти, 32-битные) с различными наборами периферии, памяти и прочими характеристиками.
  • AVR (Atmel). Высокоскоростные контроллеры разработаны на собственной архитектуре. Основой контроллера является Гарвардский RISC-процессор с самостоятельным доступом к памяти программ и баз данных (Flash ПЗУ). Каждый из 32 регистров общего назначения может работать как регистр-аккумулятор и совокупность 16-битных команд. Высокая производительность в 1 MIPS на каждый МГц тактовой частоты обеспечивается за счет порядка выполнения команд, который предусматривает выполнение одной команды и одновременную подготовку к следующей. Для поддержания своей продукции компания Atmel выпускает бесплатную и качественную среду разработки Atmel
  • ARM (ARM Limited) разработаны на собственной архитектуре. В семейство входят 32-х и 64-битовые МК. ARM Limited занимается только разработкой ядер и их инструментов, а лицензии на производство продает другим компаниям. Эти процессоры потребляют мало энергии, поэтому находят широкое применение в производстве мобильных телефонов, игровых консолей, маршрутизаторов и т. д. К компаниям, выкупившим лицензии, относятся: STMicroelectronics, Samsung, Sony Ericsson и др.
  • STM (STMicroelectronics). 8-разрядные контроллеры (STM8) относятся к категории высоконадежных с низким энергопотреблением изделий. В это же семейство входят контроллеры STM32F4 и STM Их основу составляет-32 битный Cortex. Такие контроллеры обладают отлично сбалансированной архитектурой и имеют большие перспективы развития.

Это не все семейства микроконтроллеров. Здесь мы привели только основные.

Типы корпусов микроконтроллеров

Внешних отличий МК от других микросхем нет. Кристаллы размещены в корпусах с определенным количеством выходов. Все МК выпускаются только в 3-х типах корпусов:

  • Корпус DIP имеет два ряда выводов. Расстояние между ними 2,54 мм. Выводы вставляются внутрь отверстий на контактных площадках.
  • Корпус SOIC. Он подходит для монтажа, который предполагает поверхностную припайку выходов к контактной площадке. Расстояние между выходами 1,27 мм.
  • Корпуса QFP (TQFP). Выводы расположены со всех сторон. Расстояние между ними в 3 раза меньше, чем в DIP. Корпус имеет квадратную форму. Предназначаются только для поверхностной пайки.
  • Корпус QFN. Самый маленький по сравнению с предыдущими. Контакты выходят в 6 раз чаще, чем в DIP. Имеют большое распространение в промышленном производстве, т. к. позволяют значительно уменьшить габариты выпускаемых приборов.

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

В чем отличие микроконтроллера от микропроцессора?

Весь компьютерный функционал микропроцессора (Micro Processor Unit — MPU) содержится на одном полупроводниковом кристалле. По характеристикам он соответствует центральному процессору компьютера ЦП (Central Processing Unit — CPU). Область его применения – хранение данных, выполнение арифметико-логических операций, управление системами.

МП получает данные с входных периферийных устройств, обрабатывает их и передает выходным периферийным устройствам.

Микроконтроллер совмещает в себе микропроцессор и необходимые опорные устройства, объединенные в одном чипе. Если нужно создать устройство, коммуницирующее с внешней памятью или блоком ЦАП/АЦП, то понадобится только подключить источник питания с постоянным напряжением, цепь сброса и источник тактовой частоты.

Устройства на микроконтроллерах

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

На МК могут быть следующие устройства:

  • Аналоговый компаратор. Основная его задача сравнивать поступающее (измеряемое) напряжение с идеальным. Если измеряемое напряжение выше, чем идеальное, то компаратор выдает сигнал логической 1 (прибор отключается), если ниже, то логический 0 (прибор продолжает работать).
  • Аналогово-цифровой преобразователь (АЦП). Измеряет аналоговое напряжение в период времени и выдает его в цифровой форме. Есть не у всех МК.
  • Таймер/счетчик. Представляет собой сочетание 2-х форм таймера и счетчика. Таймер формирует интервалы времени, а цифровой счетчик считает количество импульсов, идущих от внутреннего генератора частот, или сигналы от внешних источников. Одним из представителей работы таймера /счетчика может быть ШИМ (широтно-импульсный модулятор). Он предназначен для управления средним значением напряжения при нагрузке.
  • Сторожевой таймер. Его задача перезапускать программу через определенный временной промежуток.
  • Модуль прерываний. Он сообщает МК о наступлении какого-либо события и прерывает выполнение программы. После завершения события возобновляет прерванную программу.

Не все из этих периферийных устройств обязательно есть в каждом МК. Существуют и другие, менее распространенные устройства.

Что нужно для программирования микроконтроллера

Чтобы микроконтроллер мог выполнять необходимые функции и решать определенные задачи, его необходимо запрограммировать.

Путь программирования проходит несколько этапов:

  1. Перед тем как приступить к написанию кода программы, надо определиться с конечной целью.
  2. Составляется алгоритм работы программы.
  3. Непосредственное написание кода программы. Коды пишутся на языке Си или Ассемблере.
  4. Компиляция программы, т. е. перевод ее в двоичную или шестнадцатеричную систему 1 и 0. Только так ее сможет понять МК.
  5. Откомпилированный код записывают в память контроллера.
  6. Прошивают МК с помощью программатора. Они бывают двух типов подключения: через COM или USB порт. Самый простой и дешевый программатор USBASP.
  7. Тестирование и отладка МК на реальном устройстве.

Радиолюбители иногда обходятся без прописывания алгоритма работы программы на бумаги. Они держат его в голове.

Языки программирования

Языки программирования для МК мало чем отличаются от классических компьютерных. Основное отличие заключается в том, что МК ориентируются на работу с периферией. Архитектура МК требует битово-ориентированных команд. Поэтому для контроллеров создавались особые языки:

  • Ассемблер. Самый низкий уровень языка. Программы, написанные на нем, получаются громоздкими и труднопонимаемыми. Но несмотря на это он позволяет наиболее полно раскрыть все возможности контроллеров и получить максимальное быстродействие и компактный код. Подходит преимущественно для маленьких 8-битных МК.
  • С/С++. Более высокий уровень языка. Программа, написанная на нем, более понятна человеку. На сегодняшний день есть много программных средств и библиотек, позволяющих писать коды на этом языке. Его компиляторы есть практически на любой модели МК. На сегодня это основной язык для программирования контроллеров.
  • Еще более удобный для восприятия и проектирования язык. Но он мало применяется для программирования МК.
  • Старинный язык программирования. На сегодня почти не применяется.

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

Среда разработки

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

Вот несколько сред программирования:

  • FlowCode – универсальная графическая среда. Программируется с помощью построения логических структур блок-схем.
  • Algorithm Builder. Тоже графическая среда. Но написание кода проходит в 3–5 раз быстрее, чем в FlowCode. В ней совмещены графический редактор, компилятор, симулятор МК, внутрисхемный программатор.
  • В ней объединены Ассемблер и С/С++. Функционал среды позволяет самостоятельно прошивать МК.
  • Image Craft. Как и предыдущая поддерживает Ассемблер и С/С++ языки. В ее составе есть библиотека, позволяющая работать с отдельными устройствами МК.
  • Популярная среда для любителей. Имеет Си-подобный язык, но отличающийся от других. Он более понятен человеку. Поддерживает библиотеки, в составе которых есть драйвера для подключения некоторых платформ.

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

Основы программирования

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

Если Ассемблер окажется сложен, то можно начинать с Си. Одной из сильных его сторон является то, что он хорошо переносит коды с одного вида МК на другой. Но для этого надо правильно все прописать, разделив рабочие алгоритмы и их реализации в машине по разным частям проекта. Это позволит переносить алгоритм в другой контроллер, переделав всего лишь интерфейсный слой, в котором прописано обращение к «железу», оставив рабочий код без изменений.

Далее действуют по следующей схеме:

  1. Выбор компилятора и установка среды (подробнее о них писалось выше).
  2. Запуск среды и выбор в ней нового проекта. Необходимо будет указать место расположения. Путь нужно выбирать наиболее короткий.
  3. Настройка проекта. Классическим действием будет создание make-файла, в котором прописываются все зависимости. На первой странице указывают еще частоту работы МК.
  4. Настройка путей. В них надо добавить директорию проекта. В нее можно добавлять сторонние библиотеки.
  5. Постановка задачи.
  6. Сборка схемы. На этом этапе надо соединить модуль USB-USART конвертера с аналогичными выводами МК. Это позволит прошить микроконтроллер без программатора. Нужно накинуть джамперы, соединяющие LED1 и LED2. Этим действием мы подключим светодиоды LED 1 и 2 к выводам PD4 и PD5.
  7. Пропись кода.
  8. Добавление библиотек и заголовков с определениями.
  9. Главные функции. Язык Си состоит из одних функций. Они могут быть вложенными и вызываться в любом порядке относительно друг из друга и разными способами. Но все они имеют три обязательных параметра: 1) возвращаемое значение; 2) передаваемые параметры; 3) тело функции. В зависимости отданных, все возвращаемые или передаваемые значения должны быть определенного типа.
  10. Компиляция и запуск эмуляции.
  11. Отладка программы.

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

Советы начинающим программистам микроконтроллеров

Чтобы первый опыт в программировании МК не закончился неудачей и навсегда не отбил охоту заниматься этим делом, нужно следовать некоторым советам:

  • Начинать с изучения периферии и ее особенностей.
  • Каждую большую задачу надо разделять на максимально количество мелких.
  • В начале пути не стоит упрощать себе жизнь и пользоваться кодогенераторами, нестандартными фичами и т. п. вещами.
  • Обязательно нужно изучать языки программирования (Си и Ассемблера).
  • Читайте Даташит.
  • Соберите необходимый набор инструментов. Это стоит определенных денег, но окупит себя экономией времени и качеством работы.

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

future2day.ru

Что такое микроконтроллер? Определение характеристик и архитектуры.

Добавлено 17 сентября 2019 в 11:57

Сохранить или поделиться

В данной статье мы сначала рассмотрим определяющие характеристики этих чрезвычайно популярных микросхем, а затем их внутреннюю архитектуру.

Что такое микроконтроллер? Определение характеристик и архитектуры.

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

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

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

Генератор сигналов произвольной формы, разработанный на 8-разрядном микроконтроллере.

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

Что такое микроконтроллер?

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

Наиболее распространенным способом обозначения этой категории интегральных микросхем является «микроконтроллер», но взаимозаменяемо также используется аббревиатура «MCU», так как расшифровывается «microcontroller unit». Также иногда вы можете увидеть «µC» (где греческая буква мю заменяет приставку «микро»).

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

Микроконтроллеры и микропроцессоры

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

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

Ниже приведена диаграмма, которая иллюстрирует эту концепцию.

Диаграмма, поясняющая различие между понятиями «микроконтроллер» и «микропроцессор»

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

Микроконтроллеры и цифровые сигнальные процессоры (DSP)

Цифровой сигнальный процессор (или DSP) – это микропроцессор, оптимизированный для сложных вычислительных задач, таких как цифровая фильтрация, математический анализ сигналов в реальном времени и сжатие данных. Очень сложный микроконтроллер может быть в состоянии заменить цифровой сигнальный процессор, но он всё еще считается микроконтроллером, если значительная часть его внутренней схемы предназначена для управления, мониторинга и связи с окружающей системой.

Основные узлы микроконтроллера

Микроконтроллер состоит из центрального процессора (ЦП, CPU), энергонезависимой памяти, энергозависимой памяти, периферийных устройств и вспомогательных цепей.

Центральный процессор (CPU)

Центральный процессор выполняет арифметические операции, управляет потоком данных и генерирует управляющие сигналы в соответствии с последовательностью инструкции, созданных программистом. Эта чрезвычайно сложная схема, необходимая для функциональности процессора, разработчику не видна. Фактически, благодаря интегрированным средам разработки и языкам высокого уровня, таким как C, написание кода для микроконтроллеров часто является довольно простой задачей.

Память

Энергонезависимая память используется для хранения программы микроконтроллера, то есть (часто очень длинного) списка инструкций машинного языка, которые точно указывают процессору, что делать. Обычно вместо «энергонезависимой памяти» вы будете видеть слово «flash» («флеш»), которое относится к определенному типу энергонезависимого хранилища данных.

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

Периферийные устройства

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

  • Преобразователи данных: аналого-цифровой преобразователь, цифро-аналоговый преобразователь, генератор опорного напряжения. Данный график демонстрирует данные трехосевого акселерометра, оцифрованные с помощью встроенного АЦП микроконтроллера
  • Генерирование тактовых сигналов: внутренний генератор, схема на кварцевом резонаторе, петля фазовой автоподстройки частоты.
  • Расчет времени: таймер общего назначения, часы реального времени, счетчик внешних событий, широтно-импульсная модуляция.
  • Обработка аналоговых сигналов: операционный усилитель, аналоговый компаратор.
  • Ввод/вывод: цифровые входные и выходные цепи общего назначения, параллельный интерфейс памяти.
  • Последовательная связь: UART, SPI, I2C, USB

Вспомогательные цепи

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

  • Схема отладки позволяет разработчику тщательно контролировать микроконтроллер во время выполнения инструкций. Это важный, а иногда и необходимый метод отслеживания ошибок и оптимизации производительности прошивки.
  • Прерывания являются чрезвычайно ценным видом работы микроконтроллера. Прерывания генерируются внешними или внутренними аппаратными событиями и заставляют процессор немедленно реагировать на эти события, выполняя определенную группу инструкций. Программы микроконтроллера, написанные на C, организованы в функции. Прерывание заставляет выполнение программы «переходить» в процедуру обработки прерывания (ISR), и после того, как ISR завершил выполнение своих задач, процессор возвращается к функции, которая выполнялась, когда произошло прерывание.
  • Модуль генерирования тактового сигнала можно считать периферийным устройством, если он предназначен для генерирования сигналов, которые будут использоваться вне микросхемы. Но во многих случаях основная цель внутреннего генератора микроконтроллера состоит в том, чтобы предоставить тактовый сигнал для центрального процессора и периферийных устройств. Внутренние генераторы часто имеют низкую точность, но в приложениях, которые могут допускать эту низкую точность, они являются удобным и эффективными способом упростить конструкцию и сэкономить место на плате.
  • Микроконтроллеры могут включать в себя различные типы схем электропитания. Интегрированные стабилизаторы напряжения позволяют в самой микросхеме генерировать необходимое напряжение питания, модули управления питанием могут использоваться для значительного снижения потребления тока устройством в неактивных состояниях, а модули супервизора могут переводить процессор в состояние сброса, когда напряжение питания недостаточно высоко, чтобы обеспечить надежную работу.

Следующие статьи

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

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

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

Теги

MCUВстраиваемые системыМикроконтроллерМикропроцессорПроектирование встраиваемых систем

Сохранить или поделиться

radioprog.ru

Общее устройство микроконтроллеров

Доброго дня уважаемые радиолюбители!
Приветствую вас на сайте “Радиолюбитель“

Общее устройство микроконтроллеров: основа микроконтроллера, периферийные устройства

Ну вот, уважаемые читатели, мы и подошли к одному из главных вопросов в деле изучения микроконтроллеров – устройству микроконтроллеров.

Микроконтроллеры фирмы ATMEL

Для начала давайте условимся, что слово микроконтроллер в тексте будет прописываться двумя заглавными буквами – МК, так проще и удобнее.

Немножко истории.
Фирма ATMEL была создана в 1984 году, ее полное название – Advanced Technologi Memory and Logic.
Первый МК фирма выпустила в 1993 году.
В 1995 году была придумана новая архитектура процессорного ядра для МК, так называемое RISС-ядро (что это за диво, вы при желании можете ознакомиться в любой популярной литературе, а мы отвлекаться не будем).
Новую архитектуру МК назвали AVR. Идея новой архитектуры ядра оказалась очень удачной, и уже с 1997 года ATMEL начала серийный выпуск МК на основе RISC-ядра.

В настоящее время ATMEL выпускает в год несколько миллиардов МК разнообразных типов. Из всего этого множества мы выделим два семейств восьмиразрядных МК:

- TINY AVR
MEGA AVR

Семейство Tiny – более простые, менее навороченные и, соответственно,  более дешевые.
Семейство Mega – более навороченные, но и стоят дороже.
В каждом семействе большое разнообразие различных МК, что позволяет нам выбрать для создаваемой конструкции наиболее оптимальный вариант МК как по его возможностям, так и по цене.

Почему эти семейства МК называются восьмиразрядными (заодно узнаем что такое шины).


МК – сложная штука, в нем (в одном корпусе) размещено много разных устройств, которые, естественно, должны общаться между собой – передавать или принимать данные (нули и единички), передавать и принимать различные сигналы управления, записывать данные в память или считывать их из памяти. Общение устройств между собой а также с «внешним миром» происходит с помощью шин.
Шину можно представить как жгут с несколькими проводами с помощью которых все устройства соединены между собой и по которым передаются цифровые сигналы – логические нули и логические единицы.

В МК имеется три шины:
1. Шина данных (Data Bus – по английски).
Шина данных — шина, предназначенная для передачи информации.
Эта шина служит только для передачи различных данных между устройствами. Эта шина двунаправленная: по ней устройство может как передавать, так и принимать данные. МК семейства Tiny и Mega могут за один раз передать или принять восемь бит информации (бит – наименьшая единица измерения данных в цифровой технике, одна логическая единица или один логический ноль – это один бит информации) . Такая шина называется восьмиразрядной (иногда встречается название – восьмибитовая), а отсюда и сами МК – восьмиразрядными (если грубо, то можно сказать, что все устройства соединены жгутами из восьми проводов).
Минимальная разрядность шины данных – 8 бит (меньше не бывает). Современные компьютеры имеют 64-разрядную шину данных. Разрядность шины данных всегда кратна 8 (восьмиразрядная, шестнадцатиразрядная, тридцатидвухразрядная…)
2. Шина адреса (Addr Bus – по английски).
Шина адреса — шина, на которой в ходе выполнения программы выставляется адрес ячейки памяти, к которой в данный момент времени должен обратиться МК чтобы считать или следующую команду, или данные, или в которую необходимо записать данные.
3. Шина управления (Control Bus – по английски).
Шина управления – шина, а точнее набор линий (проводников) по которым передаются управляющие сигналы с помощью которых определяется как будет происходить обмен информацией – или ее считывание из памяти, или запись в память, а также некоторые специальные сигналы – сигнал готовности, сигнал сброса.
Небольшой пример работы шин.
Необходимо записать число 60 в ячейку памяти:
– на шине адреса выставляется адрес ячейки памяти в которую необходимо записать число
– на шине управления выставляется сигнал записи
– по шине данных передается число 60, которое записывается в выбранную ячейку памяти.
Ну вот, как общаются устройства в МК между собой, мы вроде-бы разобрались. Идем дальше.

В современном МК много различных устройств, в каком-то типе больше, а в каком-то меньше, а кроме того, в разных МК эти устройства могут различаться по своим характеристикам. Но в МК есть то, что составляет его основу и присутствует во всех типах – процессорное ядро (микропроцессорная система – по аналогии с компьютером), которое состоит из трех основных устройств:
1. АЛУ – арифметико-логическое устройство (микропроцессор) которое выполняет все вычисления (выполняет нашу программу).
2. Память -предназначена для хранения программ, данных, а также любой другой нужной нам информации.
3. Порты ввода – вывода. Это выводы МК с помощью которых он общается с «внешним миром». При передаче информации МК выставляет на своих выводах соответствующие логические уровни (0 или 1). При приеме информации МК считывает с этих выводов логические уровни, которые выставлены внешним устройством.
Это трио – основа МК:

Эту основу МК мы с вами рассмотрим очень подробно, но в следующей статье, как и то, что вы прочтете ниже.

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

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

2. АЦП – аналогово-цифровой преобразователь.
Имеют не все МК.
АЦП – преобразователь аналогового напряжения в цифровую форму.
Аналоговое напряжение – это напряжение которое изменяется по напряжению во времени. Например – синусоидальный сигнал с выхода генератора частоты, напряжение в бытовой розетке, звуковой сигнал на колонках.
АЦП постоянно анализирует на своем входе величину напряжения и выдает на своем выходе цифровой код, соответствующий входному напряжению.
Примеры применения:
– цифровой вольтметр или амперметр
– процессорный стабилизатор напряжения
МК, которые имеют АЦП, также имеют раздельное питание для цифровой и для аналоговой частей.

3. Таймер/счетчик
Присутствует во всех моделях МК, но в разных количествах – от 1 до 4, и с разными возможностями.
Таймер/счетчик – это как бы два устройства в одном флаконе: таймер + счетчик.
Таймер – устройство, которое позволяет формировать временные интервалы. Таймер представляет собой цифровой счетчик который считает импульсы или от внутреннего генератора частоты, или от внешнего источника сигнала.
С помощью таймера/счетчика можно:
– отсчитывать и измерять временные интервалы
– подсчитывать количество внешних импульсов
– формировать ШИМ-сигналы
К примеру, мы хотим создать прибор позволяющий измерять частоту входного сигнала (частотомер). В этом случае мы можем использовать два счетчика/таймера. Первый будет отсчитывать временные интервалы равные 1 секунде, а второй будет считать количество импульсов за промежуток времени в 1 секунду которые отсчитывает первый таймер. Количество импульсов подсчитанное вторым таймером/счетчиком за 1 секунду будет равно частоте входного сигнала.
ШИМ- широтно-импульсный модулятор, предназначен для управления средним значением напряжения на нагрузке.
ШИМ – один из вариантов работы таймера/счетчика, позволяющий генерировать на выходе МК прямоугольное импульсное напряжение с регулируемой длительностью между импульсами (скважностью), которое применяется в различных устройствах:
– регулирование частоты вращения электродвигателя
– осветительные приборы
– нагревательные элементы

4. Сторожевой таймер.
Есть во всех моделях МК. Может быть включен или выключен по усмотрению программиста.
У сторожевого таймера только одна задача – производить сброс (перезапускать программу) МК через определенный промежуток времени.
При работе МК могут возникать различные ситуации при которых его нормальная работа будет нарушена (внешние помехи, дурацкая программа, за которую надо голову оторвать программисту). В таких случаях говорят, что МК «завис».
При нормальной работе МК и включенном сторожевом таймере, программа должна периодически производить сброс сторожевого таймера (а периодический сброс мы должны сами предусмотреть в программе) еще до того, как он должен сработать и перезапустить МК. Если программа «зависла», то сброса сторожевого таймера не будет, и через определенный промежуток времени он перезапустит МК.

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

6. Интерфейсы и модули для передачи данных. Мы подробно рассматривать их будем только в том случае, если они потребуются для собираемой нами (в будущем) конструкции. Более подробно о них можно прочитать в популярной литературе.
Последовательный периферийный интерфейс SPI
Имеется во всех моделях МК.
Мы его в 99,9 случаях из 100 применяем для программирования МК.
Кроме программирования МК интерфейс SPI позволяет:
– обмениваться данными между МК и внешними устройствами
– обмениваться данными нескольким МК между собой
Универсальный приемопередатчик
Имеют все модели МК, но разных типов:
– USART
– UART
Предназначены для обмена данными по последовательному каналу.
Последовательный двухпроводный интерфейс TWI
Встречается только в серии Mega.
Предназначен для обмена данными по двухпроводной линии. Всего к такой линии можно подключить до 128 устройств.
TWI является полным аналогом интерфейса I2C.


Предыдущие статьи:

♦ Микроконтроллер и как его победить
♦ Микроконтроллер и системы счисления
♦ Микроконтроллер и логические операции

Следующие статьи:

♦ Арифметико-логическое устройство и организация памяти – память программ, память данных, энергонезависимая память
♦ Регистры общего назначения, регистры ввода/вывода, стек, счетчик команд
♦ Регистр состояния SREG
♦ Порты ввода/вывода микроконтроллера



radio-stv.ru

Что такое микроконтроллер? ⋆ diodov.net

Микроконтроллеры уже практически полностью заполнили современный мир электроники. Поэтому каждый начинающий или опытный электронщик рано или поздно сталкивается с этими, на первый взгляд загадочными устройствами. По сути, микроконтроллер – это всего лишь кусок кремния в пластиковом корпусе с металлическими выводами, который самостоятельно не выполняет никаких функций. Однако он способен решать множество сложных задач с довольно высокой скоростью при наличии записанной («прошитой») в него программы. Поэтому нашей задачей является научиться писать программы для микроконтроллера, тем самым превращая его из куска кремния в кусок «золота».

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

Типы корпусов микроконтроллеров

Внешне микроконтроллеры ничем не отличаются от других микросхем. Кристаллы МК размещаются в стандартных корпусах, которые имеют строго определенное количество выводов. Микроконтроллеры изготавливаются в трех принципиально разных видах корпусов.

DIP корпус

К первому виду относится DIP корпус. Сокращенно от английского Dual InLine Package – корпус с двумя рядами выводов. Расстояние между выводами составляет 0,1 дюйма, что равно 2,54 мм. Также подобные корпуса еще обозначают PDIP. Первая буква “Р” обозначает, что корпус пластиковыйPlastic. Микроконтроллеры в таком корпусе будем использовать и мы, поскольку такие МК легко устанавливаются на макетную плату, что значительно облегчает выполнять отладку.

Рис.1 – Микроконтроллер ATmega8 в DIP корпусе

SOIC корпус

Следующим, в порядке снижения габаритов, будет SOIC корпус. Его аббревиатура расшифровывается так: SmallOutline Integrated Circuit. Он используется при пайке поверхностным монтажом, т. е. выводы микросхемы припаиваются к контактным площадкам, расположенным на поверхности платы, а не вставляются в отверстия, как DIP корпус. Расстояние между у SOIC корпусов выводами в два раза меньше, чем в DIP и составляет 1,27 мм.

Рис. 2 – Микроконтроллер AT89C2051 в SOIC корпусе

QFP и TQFP корпуса

Еще меньшие габариты имеет тип корпуса QFP (Quad Flat Package) или TQFP (Thin Quad Flat Package) (рис. 3). Отличительной особенностью его является расположение выводов по всем четырем сторонам, а сам корпус имеет форму квадрата. Как и SOIC, TQFP предназначен для поверхностного монтажа. Расстояние между выводами в 3 раза меньше, чем в DIP корпусах.

Рис. 3 – Микроконтроллер ATmega328P в TQFP корпусе

QFN корпус

Наиболее экзотическим с точки зрения любительской практики является корпус QFN (Quad Flat Noleads). Такой корпус имеет наименьшие габариты среди всех рассмотренных корпусов. В качестве выводов здесь используются контакты, расстояние между которыми в 6 раз меньше, чем в DIP корпусах. По этой причине они редко применяются радиолюбителями. Одна в промышленности такие корпуса находят широкое применение, поскольку габариты готового электронного устройства можно снизить в десятки раз. На рис.4 наглядно видно различия в габаритах одного и того же микроконтроллера (ATmega8) в DIP и QFN корпусах.

Рис. 4 – Микроконтроллер ATmega8 в DIP и QFN корпусах

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

Рис. 5 – Микроконтроллеры в разных типах корпусов

Микроконтроллеры всюду окружают нас

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

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

Основные возможности микроконтроллеров

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

С помощью МК можно формировать очень точные временные интервалы благодаря наличию встроенных таймеров-счетчиков. Это позволяет создавать часы, таймеры, секундомеры и прочие устройства, где необходимо учитывать отрезки времени.

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

Если подсчитать количество импульсов за единицу времени, то мы получим частотомер.

Наличие встроенного устройства широтно-импульсной модуляции (ШИМ) позволяет управлять частотой вращения вала двигателя.

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

Еще микроконтроллеры могут обмениваться данными между компьютером и другим МК. Для этого практически в любом МК имеется встроенный один или несколько интерфейсов передачи данных: USART, SPI, CAN, USB и др.

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

В чем отличие микроконтроллера от микропроцессора?

Часто микроконтроллер называют микропроцессором, однако, это не совсем так. Микропроцессор выполняет лишь ряд арифметических и логических операций. Микроконтроллер же содержит в себе микропроцессор и другие функциональные узлы, такие как порты ввода-вывода, память аналогово-цифровые преобразователи, ШИМ и прочее. В общем случае микроконтроллер является аналогом материнской платой компьютера, на которой расположены все устройства, в том числе и центральный процессор. А микропроцессор – это всего лишь отдельный элемент, обладающий высокой вычислительной мощностью.

Какой тип микроконтроллера выбрать для начального изучения?

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

К основным критериям выбора МК относится:

— доступность, т. е. МК можно легко купить в любом радиомагазине;

— низкая стоимость. Здесь все понятно;

— наличие подробной технической документации;

— бесплатное программное обеспечение;

— наличие литературы и достаточного количества примеров по выбранному типу МК.

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

На мой взгляд, и по личному опыту всем названным критериям отвечает микроконтроллер ATmega8 компании Atmel. Его мы и возьмем за основу.

Еще статьи по данной теме

diodov.net

Разработка электроники. О микроконтроллерах на пальцах / Habr

Задумывая технологический стартап, вы совсем не обязаны быть асом в электронике, гораздо больше шансов на хорошую идею имеет узкий специалист со знанием основ маркетинга, но, даже заказывая кому-то разработку, ориентироваться в возможностях современной элементной базы и представлять цену решения необходимо обязательно. Иначе можно потребовать невозможного, либо получить устройство с завышенной себестоимостью на устаревшей элементной базе.
Под катом попытка кратко и просто рассказать о возможностях современных микроконтроллеров людям от них далёким. Для тех, у кого есть идея нового электронного устройства, но отсутствует представление о том, что такое микроконтроллер. Те, кто хочет сделать первый шаг от занимательных экспериментов с платформой ардуино к проектированию собственных устройств, также могут найти в ней простые, но полезные советы. Я старался, не останавливаясь на технических подробностях, для этого и книги не достаточно изложить суть и дать несколько простейших, но полезных советов по схемотехнике, чтобы предостеречь от элементарных ошибок начинающих.

Краткое содержание статьи:


Как микроконтроллеры завоевали мир
Архитектура ARM — сегодняшний лидер рынка микроконтроллеров
Конкуренция с младшими братьями
Об укладке асфальта, пользе сна и его разновидностях
Совсем коротко о технологии изготовления и о том, как появляются серии микроконтроллеров
Периферия простейшего ARM микроконтроллера за пол бакса
Самый дешёвый способ получить дополнительные функции
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?
Cortex-M7 — когда хочется большего…

Защита кода, возможность его обновления и многообразие помогли микроконтроллерам завоевать мир

Любой умный прибор требует управления. В большинстве случаев сегодня этим занимаются микроконтроллеры — чипы, которые совмещают в себе микропроцессорное ядро, память и периферийные модули, отвечающие за связь с остальными компонентами устройства и внешним миром.

Микроконтроллеры — мастера на все руки. Один микроконтроллер способен заменить десятки специализированных микросхем, которые были бы необходимы для выполнения требуемых функций в случае, если бы роль вычислителя занимал микропроцессор.

Одно из неоспоримых преимуществ микроконтроллера — программа, под управлением которой он работает, скрыта внутри его корпуса (в секции под названием “память программ”) и очень хорошо защищена от взлома, конечно, в случае, если разработчик микрокода об этом позаботился, активизировав встроенные механизмы защиты. Таким образом, вы получаете защиту интеллектуальной собственности настолько большую, насколько это возможно в наши дни.

Что нельзя взломать — то можно скопировать. Зачем пытаться считать код, встроенной в микроконтроллер программы, с помощью дорогостоящих хитроумных приспособлений, если проще и дешевле найти профессионала, который может написать его заново? Возможно результат будет даже лучше, а функционал богаче чем у прототипа. Да это стоит денег, но содержание FLASH памяти сегодняшних микроконтроллеров настолько хорошо защищено, что попытки грубого “взлома” обойдутся ещё дороже. Кроме того, решается проблема интеллектуальной собственности, а вы, вместе с исходными кодами программы, получаете возможность развивать и совершенствовать своё устройство.

Память программ, в современных универсальных микроконтроллерах, является перезаписываемой, причём процесс перезаписи можно повторять не один десяток тысяч раз. Напрашивается использование этого факта для обновления программного обеспечения с целью устранения найденных в нём ошибок или расширения функций уже работающего устройства. Это достаточно просто реализовать — добавив в программу специальный участок кода под названием “бутлоадер”, вы получаете возможность обновлять программное обеспечение вашего прибора различными способами: в пункте сервисного обслуживания (если устройство имеет специальный, скрытый внутри корпуса от посторонних глаз, разъём), подключив к компьютеру по USB, через сетевой или даже беспроводной интерфейс. Главное, предусмотреть в приборе необходимую для этого периферию. Предоставляя возможность обновления ПО, всегда следует думать о безопасности, если этот процесс недостаточно защищён, мало того, что злоумышленники могут похитить ваш код, они могут модифицировать его и использовать в своих не исключено, что коварных целях. Например, взять под контроль вещи вашего “умного дома” или шпионить с помощью, установленной вами же у себя дома, WEB камеры.

Архитектура ARM — сегодняшний лидер рынка микроконтроллеров

Со времён Царя Гороха микроконтроллеры принято разделять по разрядности данных, над которыми они проводят операции. В подавляющем большинстве случаев, сегодня, в новых разработках, стоит останавливать свой выбор на 32 битных микроконтроллерах с ядром АRM. Существует огромное количество их модификаций и всегда можно подобрать экземпляр, наилучшим образом подходящий для решения вашей задачи. В зависимости от набора функций и производительности, цена чипа может составлять от десятков центов до десятков долларов.
Микроконтроллеры(MCU), в зависимости от архитектуры вычислительного ядра, принято разделять на крупные семейства. На сегодняшний день, для разработок устройств малой и средней сложности, наиболее популярны микроконтроллеры c ядрами от Cortex-M0 до Cortex-M7. Чем больше цифра, тем больше вычислительные (и не только) возможности, цена и максимальное энергопотребление. Не последнюю роль в популярности ARM сыграла преемственность архитектуры. Разработчик может с минимальными издержками модифицировать программный код своих предыдущих наработок, переходя от микроконтроллеров одного производителя к чипам другого и мигрируя между ядрами с разной производительностью.
Конкуренция с младшими братьями

Однако ARMы «рулили» не всегда. Я хорошо помню времена, когда абсолютными лидерами рынка были 8 битные микроконтроллеры и, с занятых позиций, их безуспешно пытались оттеснить 16 битные коллеги, но, по иронии судьбы, удалось сделать это только 32 битным старшим братьям. Так сложилось, что к моменту их появления, технологии изготовления чипов сильно удешевили интеграцию в них больших объёмов FLASH памяти. Воспользовавшись удобным случаем, программисты стали переходить с ассемблера на язык более высокого уровня — Си, структура которого отлично ложилась на 32 битную архитектуру. В результате 32 битные микроконтроллеры выполняли вычисления гораздо быстрее своих 8 и 16 битных коллег, но была одна проблема — у них был выше ток потребления.

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

Известно, что средний ток потребления вычислительного ядра микроконтроллера существенно увеличивается с поднятием его тактовой частоты. Поначалу 8 битные модели микроконтроллеров отличались заметно меньшим потреблением при сходной частоте и, кроме того, были способны работать от низкой тактовой частоты, вплоть до 32 кГц.

Энергопотребление микроконтроллеров сильно зависит от тактовой частоты ядра и периферии, чтобы её регулировать, для генерации стали использовать, широко применявшийся в радиопередающих устройствах, узел формирования тактовой частоты на основе ФАПЧ. Это позволило в широких пределах изменять тактовую частоту, не меняя задающий кварцевый резонатор. Периферийным модулям совсем не обязательно иметь такую же тактовую частоту, что и вычислительному ядру. Чтобы снизить их энергопотребление, частоту на них стали подавать через делители с программно-регулируемым коэффициентом деления. Ввели возможность отключать неиспользуемые модули. Эти меры сильно уменьшили энергопотребление, но оно по прежнему оставалось существенно больше, чем у 8 битных.

На короткое время сложился паритет — 32 битные MCU захватили нишу топовых приложений, а 8 битные уверенно удерживали позиции в устройствах, для которых было важно низкое энергопотребление. Он сохранялся до тех пор, пока 32 битные MCU не освоили в совершенстве «импульсный» режим работы.

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

Об укладке асфальта, пользе сна и его разновидностях

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

Понаблюдайте за строительными рабочими которые кладут асфальт. Они резко активизируют свою работу, когда пришёл грузовик с новой порцией асфальта, а после его укладки снижают темп. Так и микроконтроллеры умеют повышать и снижать частоту тактирования ядра. Однако, им это даётся не так просто, как рабочим — одновременно изменится и частота работы всей внутренней периферии, поэтому, чувствительные к этому её части придётся перенастраивать.
Не проще ли, выполнив быстро всю работу, немного поспать. Зачастую, да. Причём виды сна микроконтроллеров отличаются ещё более драматично, чем у человека.

Можно просто вздремнуть. В этом случае наш чип всегда наготове и как только зазвенел будильник таймера или его потревожило внешнее прерывание, он просыпается практически мгновенно. Как человек во время дремоты может снять напряжение, но не выспаться толком, когда тебя постоянно дёргают, так и микроконтроллер может снизить своё энергопотребление в этом режиме “всего” раз в 10, называют этот режим SLEEP.

Лучший способ хорошо выспаться — раздеться, лечь в постель, задёрнуть шторы на окне и включить будильник. Однако, после такого сна, уже моментально в работу не включишься. Придётся, как минимум, предварительно ополоснуться холодной водой и одеться. Есть такой режим и у микроконтроллера, когда он ограничивает количество внешних раздражителей и выключает основной тактовый генератор. Это режим STOP. В нём можно уменьшить потребление в 1000 раз, но и на выход из него уже потребуется существенное время.

Теперь, представьте себе, что вы перед сном выпили изрядную дозу снотворного, отключили будильник и телефон, закрыли все окна и двери. Это будет режим STAND BY. Вывести из такого режима микроконтроллер можно только с помощью особых выводов и большая часть памяти о том, чем он занимался перед таким сном будет потеряна навсегда, придётся начинать работу заново. Зато находясь в таком режиме MCU потребляет ещё в два раза меньше.

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

Выбирая режим экономии энергопотребления необходимо помнить о последствиях применения:

  • чем глубже сон, тем дольше пробуждение
  • чем глубже сон, тем меньше способов вывести из него микроконтроллер
  • чем глубже сон, тем меньше остаётся информации о предыдущем состоянии микроконтроллера
  • для достижения минимальных заявленных значений, во многих режимах необходимо принимать дополнительные меры, например — отключения периферии
  • для минимизации энергопотребления устройства в целом необходимо грамотно спроектировать схемотехнику всего устройства
  • для минимизации энергопотребления устройства в целом, нужно позаботиться о том, чтобы остальные компоненты и цепи также имели микропотребление в неактивном режиме. Глупо предпринимать огромные усилия для того, чтобы опустить потребление микроконтроллера ниже одного микроампера и, при этом, применять в устройстве дешёвый стабилизатор с током собственного потребления в 100 микроампер но встречается такое сплошь и рядом
  • для успешного использования режимов глубокого сна не только программа, но и схемотехника, должны быть тщательно продуманы, иначе, вместо экономии, можно получить весьма серьёзные проблемы — редко случающееся, зато “мёртвое” зависание устройства по необъяснимой причине, либо слишком частое пробуждение и, как результат, потребление на порядки выше ожидаемого


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

Физически активная часть микроконтроллера, как и подавляющее количество других микросхем, обычно сформирована на пластине монокремния (назовём его, в данном контексте, ЧИП). Чипы занимают очень маленькую площадь, технологически же выгодно производить пластины большого диаметра, поэтому, обычно большое количество чипов, как соты, размещают на одной большой пластине и формируют, в ходе одного технологического процесса. В последствии пластины нарезают на кусочки, получая уже отдельные чипы, которые и помещают в корпуса. Разработка топологии и отладка технологических процессов нового чипа стоит очень дорого, а занимаемое на пластине одним чипом место, как правило, не велико. Производителям выгодно выпускать чипы крупными партиями, но пользователям требуются микроконтроллеры в разных корпусах — кому то важно получить корпус поменьше и подешевле, другому наоборот требуется побольше выводов, чтобы управлять LCD или внешней памятью с параллельным интерфейсом. Производителям выгодно перекрывать все ниши, чтобы клиенты не перебегали к конкурентам, не найдя оптимальной для себя модели.

Очень часто бывает выгодней выпустить крупной партией один универсальный чип и помещать его в разные корпуса, чем запускать десяток различных. У чипов, помещённых в корпуса с малым количеством выводов, часть портов (в данном контексте, под портами будем понимать контактные площадки на поверхности чипа, служащие для общения с внешним миром) просто останутся неподсоединёнными. Часто производители идут дальше — чтобы поднять спрос и цену на микроконтроллеры с большим количеством ножек, они искусственно обрезают функциональность тех, у которых их меньше — отключают некоторые функции, ограничивают объём доступной памяти и т. п.

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


Так из одного стандартного дизайна чипа формируется целая серия микросхем.
Периферия простейшего ARM микроконтроллера за пол бакса

Процессорное ядро — это мозг, но, чтобы он не был подобен “сферическому коню в вакууме”, требуются аналоги органов чувств и конечностей.

В микроконтроллере их роль играют выводы на корпусе, к которым внутри корпуса могут подключаются порты(контактные площадки) чипа. В свою очередь, через внутренние коммутаторы, к одному и тому же порту могут подключаться различные периферийные модули.
Для начала рассмотрим периферию одной из простейших серий от ST на основе ядра Cortex-M0 — stm32F03.

Для этой серии имеем следующий набор базовых функций:
Часы реального времени (Real Time Clock или RTC), которые могут запитываться с помощью отдельного вывода и работают от отдельного низкочастотного резонатора. Этот модуль потребляет крайне мало энергии, в случае пропадания основного питания он может часами работать от заряженного конденсатора, или годами от маленькой встроенной в прибор батарейки. Кроме этого, он может служить в качестве будильника, выводя микроконтроллер из состояния даже самого глубокого сна в заранее заданное время.

WatchDog — сторожевая собака мешающая микроконтроллеру заснуть навсегда, например, свалившись в бесконечный цикл или перейдя по несуществующему адресу. Его принцип работы прост. Программист настраивает таймер защиты от “зависания” на определённый период времени, допустим на секунду, и запускает его. Затем он расставляет, в выбранных им местах программы, короткие участки кода, которые перезапускают таймер с нулевого значения. Если за секунду не произошло ни одного сброса таймера, WatchDog считает, что с программой что-то не так и устраивает микроконтроллеру перезапуск. Программа начинает работать с начала, причём существует возможность определить являлся ли инициатором ресета WatchDog и учесть этот факт при запуске.

Универсальные цифровые входы-выходы (General Purpose Input-Output GPIO) — это самая распространённая функция, которую поддерживают большинство выводов микроконтроллера. Они могут конфигурироваться либо как входы, либо как выходы.

Рассмотрим работу в качестве входа. Если напряжение на входе микроконтроллера меньше некоего порога (как правило близкого к половине питания), то оно воспринимается как логический ноль, в противном случае как 1. Цифровые входы обычно имеют очень высокое входное сопротивление, поэтому, если их оставить не подключенными, их состояние может скакать из нуля в единицу и обратно, под действием наводок электромагнитных полей. Для того, чтобы этого не происходило, существуют специальные режимы, когда внутри чипа вход соединяется через сопротивление 20 — 50 КОм с плюсом питания микроконтроллера (pull-up) или с минусом (pull-down).

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

Советы начинающим разработчикам Выводы микроконтроллера — мастера на все руки, но следует соблюдать простые правила, чтобы не вывести их из строя. Несмотря на все предосторожности, предпринимаемые производителями чипов, они боятся статики и перенапряжений, поэтому не стоит подсоединять их напрямую к разъёмам, выходящим за пределы платы. Необходимо, в этом случае, предпринять меры — либо воспользоваться специальными интегральными компонентами защиты, либо предусмотреть в схеме супрессор, стабилитрон или защитные диоды, плюс установить в разрыв между выводом разъёма и портом токоограничивающее сопротивление.

На рисунке выше изображён участок схемы, спроектированного мной устройства (спутникового модема), с элементами простейшей защиты портов микроконтроллера. X4 — разъём для внешних коммуникаций. Нас интересуют контакты 5-7, к которым присоединяются тревожные кнопки. Сигналом тревоги служит замыкание на землю, поэтому, в нормальном состоянии, на портах должно присутствовать напряжение питания микроконтроллера, что и обеспечивают резисторы R24-R26, номиналом 1 КОм. Супрессоры VD4-VD6 ограничивают напряжение на уровне 5 вольт, это допустимо потому, что применяемый мной микроконтроллер, хотя и питается напряжением 3,3 вольта, но имеет порты толерантные к напряжению 5 вольт. Резисторы R29-R31 на 100 Ом.
Подобная защита спасёт порты вашего микроконтроллера от внешних перенапряжений. У некоторых микроконтроллеров отдельные порты не боятся напряжений, превышающих их напряжение питания. Так у многих микроконтроллеров STM32Fxx почти все порты будучи сконфигурированными как цифровые могут работать с 5 вольтовыми цепями, но если они работают в аналоговом режиме, например в качестве входа АЦП, теряют эту способность и это необходимо учитывать при разработке схемы.

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

Существует ещё один лайфхак. Иногда их можно оставить входом и замкнуть на другую цепь. Это помогает в случае очень плотной трассировки провести проводник «сквозь» микроконтроллер, что особо актуально для двухслойных плат.

Используя порты микроконтроллеров в качестве выходов, также стоит свериться с даташитом. Отдельные порты могут иметь разное ограничение по максимальному току, который от них можно получить не опасаясь выхода их строя — нагрузочную способность. Кроме этого, сам чип имеет максимальную нагрузочную способность всех выходов в сумме, которую не следует превышать.
Последнее, о чём хочется упомянуть, выходные порты ARM микроконтроллеров не реагируют на программные инструкции мгновенно, как у 8-битных микроконтроллеров. Они управляются через шину, и их быстродействие зависит от частоты тактирования соответствующего узла, которую можно менять программно. Если вы хотите быстрой реакции, позаботьтесь об увеличении этой частоты, если важнее уменьшить энергопотребление, наоборот выберите менее скоростной режим.


Температурный сенсор Микроконтроллер имеет свой собственный температурный сенсор, правда не слишком точный, тем не менее его можно, с определёнными допущениями, использовать для измерения температуры внутри корпуса прибора.

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

Интерфейсы обмена данными Различные микроконтроллеры данной серии могут иметь по нескольку наиболее распространённых интерфейсов, сильно облегчающих общение с другими чипами и внешним миром:

  • USART — асинхронный последовательный порт, часто использующийся для связи с компьютером там он называется COM или RS232, модемами и другими устройствами
  • SPI — высокоскоростной интерфейс, который имеют очень многие чипы, например внешняя память
  • I2C — двухпроводной интерфейс, разработанный для общения с датчиками и другой периферией на небольшом расстоянии и небольших скоростях обмена. Большой его плюс заключается в том, что одновременно к одной шине можно подключить десятки различных устройств

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

Аналого-цифровой преобразователь АЦП или ADС на котором придётся остановиться подробнее.

Чрезвычайно полезный модуль, который способен измерять напряжение аналоговых сигналов. Оценивает он их в долях от величины опорного источника сигнала, в нашем случае это напряжения питания аналогового модуля микроконтроллера, которое может быть равным или немного ниже основного напряжения питания чипа. Теоретическая точность работы АЦП зависит от его разрядности. В современных микроконтроллерах чаще всего применяется 12 разрядный АЦП последовательного приближения, реже 10 и как экзотика встречается 16.

При питании 3 вольта 12 разрядный АЦП микроконтроллера будет иметь разрешающую способность 3/4096=0.00073 Вольта — лучше одного милливольта.

Но на практике достичь этого идеала бывает не просто.

Подробности для начинающих разработчиковНа практике всё бывает далеко не так красиво и точность измерений может снижаться по многим причинам. Ниже перечисляю основные, хорошо известные любому опытному электронщику, а также простые но эффективные способы сведения их пагубного влияния до минимума
нестабильность напряжения источника питания АЦП
  • применять для питания MCU линейные стабилизаторы с хорошими параметрами
  • применять для питания аналоговой части MCU высокостабильные источники опорного напряжения

импульсные помехи по питанию АЦП
  • подключать аналоговое питание к цифровому через простейшие фильтры низкой частоты — подавать питание на аналоговую часть MCU через индуктивность и в непосредственной близости от входа микроконтроллера устанавливать керамический конденсатор с диэлектриком XR7 ёмкостью 100 нанофарад, а ещё лучше, параллельно ему включить танталовый конденсатор с ёмкостью в одну — две микрофарады.

импульсные помехи на входе АЦП
  • пропускать входной сигнал хотя бы через простейший ФНЧ, состоящий из резистора и конденсатора. Для борьбы с помехами от передающих радиотрактов и короткими импульсными помехами иногда достаточно одиночного конденсатора с диэлектриком NP0 ёмкостью в несколько десятков пикофарад, установленного между входом и землёй, в непосредственной близости от входа АЦП
  • не экономить на блокировочных конденсаторах, по крайней мере самого микроконтроллера, устанавливать их в непосредственной близости от каждого вывода питания и в других местах, рекомендованных производителем, рекомендованного им номинала
  • тщательно выбирать месторасположение компонентов и соблюдать правила трассировки цепей питания и особенно “земли”, в идеале аналоговая и цифровая земли должны соединяться в одной точке — рядом с выводом аналоговой земли микроконтроллера

высокое выходное сопротивление источника сигнала, опасно тем, что в момент старта измерения АЦП последовательного приближения, которое чаще всего используется в микроконтроллерах, его вход потребляет некоторый отличный от нуля ток и это может привести к уменьшению истинного значения напряжения, так как сигнал фактически подаётся через делитель напряжения.
  • правильно выбирать параметры настройки АЦП, например во многих микроконтроллерах можно увеличить время зарядки входной цепи, правда тут приходится идти на компромисс, снижая быстродействие
  • устанавливать на входе АЦП буферные усилители на основе ОУ (операционный усилитель), или повторители напряжения. Выбирать их по принципу самых дешёвых не стоит, можно не улучшить, а ухудшить ситуацию, причём значительно. Если не хватает собственного опыта, лучше поискать специально рекомендованные производителями для подобных приложений

Выше изображён участок реальной схемы для подачи питания на аналоговую часть микроконтроллера в устройстве с батарейным питанием. В данном случая я использовал АЦП для оцифровки сигнала с аналогового MEMS микрофона и поэтому имело смысл выделить в отдельную цепь не только аналоговое питание, но и аналоговую землю. В большинстве случаев это избыточно, для того чтобы от неё действительно был толк, нужна ещё и правильная трассировка.

От цепи VBUT питается вся цифровая часть микроконтроллера. На всякий случай привожу номиналы элементов: R5-10 Ом, С10 0.1 мкФ, без индуктивностей L1 и L2 BLM18PG471SN1D в большинстве случаев можно обойтись.

Ещё один любопытный пример из моей практики. В плате, на которой размещалось большое количество высокопотребляющих чипов ASIC, необходимо было измерять их температуру. Самый простой и дешёвый способ — использование высокоомных термисторов. В качестве фильтров я применил конденсаторы достаточно большой ёмкости, воспользовавшись тем фактом, что температура меняется сравнительно медленно. Для оцифровки звука такой фокус однозначно бы «не прокатил».

Осталось упомянуть ещё одну важную особенность АЦП, характерную для микроконтроллеров. Собственно, модулей АЦП в нём, как правило, один или два, а вот входов может быть много. В описываемой серии модуль 1, а входов может быть до 16. Как же так? Очень просто, входы подсоединены к нему через коммутатор. Если вы собираетесь измерять напряжение с 10 входов, то должны организовать цикл — последовательно переключить коммутатор к каждому из 10 входов и сделать измерение. Это необходимо учитывать, рассчитывая времена измерения. В данной серии АЦП, теоретически, способно сделать измерение за 1 микросекунду. Получается, что полный цикл 10 измерений у вас займёт точно больше 10 микросекунд!


Система прямого доступа в память ПДП или DMA — ещё одна архиважная вещь. Этот модуль позволяет пересылать данные от периферии в память или наоборот.

Например, с его помощью вы можете выделить участок памяти для хранения данных, приходящих из АЦП и сделать из него кольцевой буфер. Далее запускается АЦП в режиме считывания данных через равные промежутки времени. Используя механизмы DMA, считанные данные будут, без участия ядра, самостоятельно, байт за байтом, помещаться в выделенный буфер. Когда буфер будет полностью заполнен, ядро получит сигнал и приступит к их программной обработке, а система DMA начнёт процесс загрузки сначала. Поскольку DMA имеет несколько каналов, то никто не мешает реализовать для нашего случая автоматический вывод на USART данных из буфера. В результате мы получим, работающий без использования ядра процесс передачи считанных с АЦП в USART, и не простая работа программиста по конфигурации DMA окупится сторицей.

Модуль широтно-импульсной модуляции ШИМ или PWM, в силу ограниченности статьи не будем останавливаться на нём подробно, отмечу только, что это крайне полезная и широко используемая функция, с помощью которой возможно управлять яркостью светодиодов, скоростью вращения двигателей, рулевыми машинками, конструировать интеллектуальные DC-DC преобразователи и даже звук синтезировать.

Что можно получить, добавив 30 центов?

Переход на Cortex-M0+. Самый дешёвый способ получить дополнительные функции

А какие дополнительные плюшки предлагает микроконтроллер новейшей серии с ядром чуть посовременнее Cortex-M0+, при стоимости на 20-50 центов дороже аналогов в рассмотренной выше серии по корпусу и количеству выводов?

Таблица отличий между сериями

  • в два раза увеличилась максимальная тактовая частота
  • с 2 до 1.7 вольт понизилось минимальное напряжение питания
  • АЦП способно работать в два с половиной раза быстрее
  • появились два канала 12 битного цифро-аналогового преобразователя. Это крайне полезная функция, с помощью которой возможно формировать на выводах сигнал заданного напряжения с точностью лучшей чем 1 мВ, например сигналы произвольной формы в звуковом диапазоне частот
  • появились компараторы — устройства для сравнения величин двух аналоговых сигналов, это бывает полезным скажем для определения момента возникновения перегрузки по току
  • добавлен USB интерфейс, посредством которого можно подключать устройства к компьютеру. Особый интерес вызывает наличие поддержки опций управления питанием для реализации USB type3-C совместимого интерфейса. О нём я рассказывал в одной из своих статей на Хабре
  • появился ускоритель AES для процедур 256 битного шифрования/дешифрации
  • UART получил возможность работы в режимах сна и аппаратную поддержку протоколов LIN (простая сеть, широко используется в автопроме), IRDA (протокол передачи данных посредством инфракрасных светодиодов, вспомните телевизионные пульты), SIMcard…
  • расширены возможности таймеров и модуля PWM
  • верхняя граница температурного диапазона работы поднялась до 125 градусов
  • увеличена надёжность работы за счёт расширения режимов перезапуска при возникновении проблем с питанием
  • добавлен “честный” аппаратный генератор случайных значений — полезная функция в криптографии

Ну что же, для многих применений незначительная добавка в цене себя вполне окупает, поскольку можно отказаться от перехода на более дорогостоящие микроконтроллеры старших модельных рядов.
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?

  • Максимальная тактовая частота вырастает уже до 80 МГц
  • Появился блок для ускорения вычислений с плавающей точкой
  • Ясное дело, максимальная встроенная память увеличилась
  • Модели с количеством ног 100 и более поддерживают работу с внешней статической памятью
  • USB научился работать в режиме HOST
  • Появился контроллер CAN интерфейса. Это очень перспективный интерфейс разработанный для высоконадёжных приложений. Своё победное шествие он начал с автомобильной промышленности и уже почти 20 лет ведёт затяжную войну с давно устаревшим RS-485 в крайне консервативной отрасли промышленной автоматизации.
  • Появился интерфейс для подключения SDcard. Очень полезная функция — добавляете в своё устройство держатель за 50 центов и получаете съёмный носитель размером в десятки Гигабайт! С большинством карт удаётся работать и по обычному SPI, но намного медленнее
  • Добавили встроенный Операционный Усилитель с большим разнообразием режимов работы. Именно благодаря этой и предыдущей функциям, для своего последнего проекта беспроводного стетоскопа, пришлось остановить выбор на M4 вместо M0+. В результате появилась возможность управлять усилением сигнала с MEMS микрофона и сохранять десятки часов аудиозаписей работы сердца на SD карте
  • Криптомодуль научился аппаратно считать HASH функции.
  • Контроллер сенсорных приложений усовершенствован и теперь поддерживает уже не только кнопки, но и элементы прокрутки

Cortex-M7 — когда хочется большего...

В подавляющем количестве проектов возможностей предоставляемых вышеописанными ядрами достаточно, но случаются и исключения. Лично со мной такое случалось всего пару раз, причём лишь один раз по действительно уважительной причине — требовалась высокая производительность для подготовки данных для ASIC, контроллер Ethernet и шина CAN-FD c повышенной скоростью обмена.

Если на уровне универсальных микроконтроллеров с ядрами Cortex 4 и ниже, на мой субъективный взгляд, по параметру цена/функциональность сейчас лидирует фирма ST, то в области более высокопроизводительных чипов она уступает лидерство ATMEL, вернее, теперь уже недавно поглотившему его MICROCHIP. Поэтому я остановил свой выбор на серии ATSAMV71, стоимостью от 6 долларов.

Помимо вышеописанного (контроллер Ethernet и шина CAN-FD), по большому счёту, мы получаем, существенно увеличивающее производительность ядро с ускорителем операций, работающее на тактовой частоте до 300 МГц, интерфейсы для подключения видеоматрицы и поддержку динамической памяти.

В заключении попрошу имеющих опыт общения с микроконтроллерами попрошу выбрать подходящий ответ на вопрос.

habr.com

Микроконтроллер для начинающих или хочу всё знать — Arduino+

Ардуино – популярнейший микроконтроллер на сегодняшний день, с которым знаком каждый инженер, а большая часть даже вплотную работала. Вся прелесть его заключается в том, что ПО под свои проекты нет необходимости писать с нуля, ведь изначально в МК загружены пресеты, которые вы можете применять по необходимости.

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

История появления

Начиналась вся эта эра микроконтроллеров, которые мы сегодня используем во всех видах техники, с микро-ЭВМ или Электро-Вычислительных-Машин. Они, по сути, и были первыми контроллерами, что традиционно означает – управляющее устройство, но строились на платформе одного кристалла.

Впервые данное изобретение было запатентовано в 1971 году М. Кочреным, который разместил на одном кристалле сразу и процессор, и память с возможностью ввода-вывода обрабатываемой информации.

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

Назначение и область применения микроконтроллера

Но давайте разберёмся, чем smd микроконтроллеры 14 pin отличаются от 12 пиновых и как применять микроконтроллеры для чайников.

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

А назначение устройства выплывает напрямую из терминологии, описанной выше, ведь любой МК, по своей сути, – маленький процессор, обрабатывающий команды, способный принимать и передавать данные, а в исключительных случаях, даже сохранять их в постоянной памяти.

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

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

Но давайте разберёмся, почему любая разработка ПО для микроконтроллеров с помощью специальных сред в итоге компилирует (превращает) код в двоичный, и зачем это нужно?

Принцип работы

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

  1. Он принимает определённые переменные или другие данные, которые прежде должны быть преобразованы в двоичный сигнал. Это необходимо, поскольку на низшем уровне система способна воспринимать лишь 2 состояния – есть сигнал или нет сигнала. Такой принцип называют аналоговым. Существует аналогичный алгоритм, когда сигнал присутствует постоянно, но меняется по частоте – цифровой. У них множество различий, как в областях применения, так и в особенностях работы сигнала, но суть одна – процессор способен воспринимать лишь значения 0 и 1, или true и false, и не важно, какими путями микропроцессоры и микроконтроллеры будут их считывать.
  2. Во внутренней памяти устройства хранится набор специальных инструкций, который позволяет, путем базовых математических преобразований, выполнять какие-то действия с полученными данными. Именно эти базовые операнды и берутся на вооружение компилируемых языков программирования, когда необходимо написать библиотеку готовых функций. Остальные нюансы языков программирования – это уже синтаксис и теория алгоритмов. Но в результате, всё сводится к базовым операндам, которые превращаются в двоичный код и обрабатываются внутренней системой процессора.
  3. Всё, что было получено и сохранено после обработки, выдается на выход. На самом деле, данный пункт выполняется всегда, единственная разница, что выходом может быть и преобразование состояния объекта какой-то системы. Простейшим примером станет замыкание электрической цепи, в случае, если на специальный датчик подать ток, вследствие чего загорится лампочка. Здесь всё зависит от типа устройства, так, 8051 микроконтроллер может выполнять несколько видов выводов, имея 14 пинов, а какой-то другой – всего один, ведь у него 1 пин на выход. Количество выходов влияет на многопоточные свойства девайса, иными словами, возможность выводить информацию сразу на несколько устройств или совершать несколько действий одновременно.

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

Это напрямую влияет на скорость работы устройств, и именно из-за этой характеристики 2-ух ядерные девайсы мощнее, чем 1-ядерные, но имеющие большую герцовку (способность выполнять большее количество преобразований за единицу времени).

Но почему микроконтроллер овен не способен выполнять некоторые действия, характерные для 8051, и какая классификация вообще существует в данной сфере?

Виды микроконтроллеров

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

  1. Количеству аналоговых и цифровых пинов.
  2. Общему количеству пинов.
  3. Количеству ядер, которые присутствуют в МК.
  4. Скорости выполнения операций или герцовке.
  5. Объему оперативной и постоянной внутренней памяти.
  6. Размерам.

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

Особенности микроконтроллеров Ардуино

Но всё же у большинства, при упоминании МК, в памяти всплывает название «Ардуино», и это не удивительно. Ведь у данной разновидности поликристальных чипов есть характерные особенности, выгодно выделяющие ее на фоне конкурентов:

  1. Низкий порог входа. Так как программная среда уже написана и протестирована за вас, никаких «велосипедов» придумывать не нужно.
  2. Оптимизация под конкретные задачи. У создателей есть целая линейка разнообразных чипов, которые сильно различаются по характеристикам, благодаря чему будет проще подобрать подходящий.
  3. Готовая платформа и множество решений различных проблем или задач в открытом доступе.

Подключение и управление

Подключаются чипы через специальные разъемы, называемые пинами. Те, в свою очередь, распределяются на:

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

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

Микроконтроллеры для начинающих

Лучшим примером МК для начинающих инженеров станет именно плата Ардуино, по уже упомянутым причинам. В ней вы сможете быстро разобраться, благодаря низкому порогу входа, но также, по желанию, изучить различные интересные паттерны проектирования и решения задач.

Всё это позволит новичку развиться, познакомиться ближе с миром радиотехники, а возможно, и программирования, что в дальнейшем станет хорошей базой для изучения более сложных вещей и воплощения в жизнь крупных проектов. Поэтому другой, более подходящей платформы для начинающих, – не найти.

Пример применения микроконтроллера Ардуино

Выбирая свой первый проект, вы, скорее всего, самостоятельно просмотрите немало разнообразных примеров применения Ардуино, но мы же можем привести наиболее популярные:

  1. Системы смарт-хауса. Это различные умные переключатели, занавески, вентиляторы и разнообразные сигнализации. Они позволяют сделать ваше взаимодействие с жильем более интерактивным.
  2. Автоматические теплицы.
  3. Разнообразные датчики, вплоть до специального ошейника для домашнего любимца, показывающего его местоположение и пульс.

В целом же, в вопросе применения вы ограничиваетесь лишь собственной фантазией!

Производители микроконтроллеров

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

Главное, не забывайте читать отзывы об устройствах и заранее прочесывать наш сайт в поисках готовых решений проблем.

arduinoplus.ru

Что такое микроконтроллер, семейства и корпуса AVR микроконтроллеров

Попробуем разобраться что же представляет из себя AVR микроконтроллер, что это такое и из чего состоит. Узнаем какие есть семейства микроконтроллеров от фирмы ATMEL и в каких корпусах выпускаются микро-чипы от данного производителя. Сделаем выбор корпуса микросхемы, наиболее пригодного для знакомства с AVR микроконтроллерами.

Содержание:

  1. Контроллеры и микроконтроллеры
  2. Что такое AVR микроконтроллер
  3. Корпуса для AVR микросхем
  4. Заключение

Контроллеры и микроконтроллеры

Микроконтроллер - это электронное устройство, микросхема которая представляет собою маленький компьютер со своей памятью и вычислительным ядром(микропроцессором), а также с набором дополнительных интерфейсов для подключения самых разных устройств для ввода и вывода различной информации, управления устройствами и измерения различных параметров. Микропроцессор, оперативная память, флешь-память, порты ввода/вывода, таймеры, интерфейсы связи - все это заключено в одном кристалле, одной микросхеме которая и называется микроконтроллером.

Чем отличается микроконтроллер от контроллера? - под контроллером подразумевается определенная схема или плата с различными компонентами для контроля и выполнения поставленных задач, а микроконтроллер - это схема универсального контроллера, которая размещена на маленьком кристаллике микросхемы и которая способна работать по четко заданной программе.

Работа микроконтроллера и его периферии осуществляется по программе, которая записывается во внутреннюю память и способна храниться в такой памяти достаточно длительный срок(несколько десятков лет).

Что такое AVR микроконтроллер

AVR микроконтроллеры, производимые фирмой ATMEL - это семейство 8-битных и более новых 32-битных микроконтроллеров с архитектурой RISC, которые совмещают в себе вычислительное ядро, Flash-память и разнообразную периферию (аналоговые и цифровые входы и выходы, интерфейсы и т.п.) на одном кристале. Это маленькие и очень универсальные по функционалу микросхемки, которые могут выполнять контроль и управлять различными устройствами, взаимодействовать между собою потребляя при этом очень мало энергии.

Данное RISC-ядро было разработано двумя студентами из города Тронхейма (третий по населению город Норвегии, расположен в устье реки Нидельвы) - Альф Боген (Alf-Egil Bogen) и Вегард Воллен (Vegard Wollen). В 1995м году данные персоны сделали предложение корпорации ATMEL на выпуск новых 8-битных микроконтроллеров, с тех пор AVR микроконтроллеры заполучили большую популярность и широкое применение.

Что обозначает аббревиатура AVR? - здесь наиболее вероятны два варианта:

  1. Advanced Virtual RISC;
  2. Alf Egil Bogen Vegard Wollan RISC, в честь создателей - Альфа и Вегарда .

Весь класс микроконтроллеров поделен на семейства:

  • tinyAVR (например:ATtiny13, ATtiny88б ATtiny167) - начальный класс, миниатюрные чипы, мало памяти и портов, базовая периферия;
  • megaAVR (например: ATmega8, ATmega48, ATmega2561) - средний класс, больше памяти и портов, более разнообразная периферия;
  • XMEGA AVR (например: ATxmega256A3U, ATxmega256A3B) - старший класс, много ресурсов, хорошая производительность, поддержка USB, улучшенная безопасность;
  • 32-bit AVR UC3 (например: AT32UC3L016, ATUC256L4U) - новые высокопроизводительные 32-битные микроконтроллеры поддерживающие много технологий и интерфейсов среди которых USB, Ethernet MAC, SDRAM, NAND Flash и другие.

Микроконтроллеры AVR имеют обширную систему команд, которая насчитывает от 90 до 133 команд в зависимости от модели микроконтроллера. Для сравнения: PIC-микроконтроллеры содержат от 35 до 83 команд, в зависимости от семейства.

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

Корпуса для AVR микросхем

Микроконтроллеры AVR выпускаются в корпусах DIP, SOIC, TQFP, PLCC, MLF, CBGA и других. Примеры некоторых корпусов приведены на рисунке ниже.

Рис. 1. Корпуса микросхем для микроконтроллеров AVR - DIP, SOIC, TQFP, PLCC.

Как видим, корпуса для AVR микроконтроллеров есть на любой вкус и потребности. Можно выбрать недорогой чип в корпусе DIP8 и смастерить миниатюрную игрушку или же какое-то простое устройство, а можно купить более функциональный и дорогой микроконтроллер в корпусе TQFP64 и подключить к нему разнообразные датчики, индикаторы и исполнительные устройства для выполнения более серьезных задач.

Для начинающих программистов AVR наиболее удобны микросхемы в корпусе DIP, данные микросхемы удобно паять и они очень просто монтируются на разнообразных монтажных панелях, к примеру на Breadboard и других.

 

Рис. 2. AVR микроконтроллеры ATmega8 и ATtiny13 в корпусе DIP на макетной панели (Breadboard).

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

Заключение

В следующей статье рассмотрим варианты применения AVR микроконтроллеров, где они уже используются и для чего. Постараюсь дать ответ на вопрос "зачем мне изучать программирование AVR микроконтроллеров?".

Начало цикла статей: Программирование AVR микроконтроллеров в Linux на языках Asembler и C.

ph0en1x.net

что это такое и зачем нужны — Arduino+

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

Для работы с микроконтроллерами, такими как Ардуино или Iskra JS и подобными, нужны дополнительные знания, которые мы постепенно будем познавать.

Что такое микроконтроллеры?

Микроконтроллер представляет собой микросхему, которая используется для управления электронными устройствами. В типичном микроконтроллере имеются функции и процессора, и периферийных устройств, а также содержится оперативная память и/или ПЗУ (постоянное запоминающее устройство). Если говорить кратко, то микроконтроллер — это компьютер, функционирующий на одном кристалле, который способен выполнять относительно несложные операции.

Микроконтроллеры широко используются в вычислительной технике (процессоры, материнские платы, контроллеры дисководов, накопители HDD/FDD), бытовой электронике (стиральные машины, микроволновые печи, телефоны и т.д.), в промышленности и т.д. Рассмотрим, как проходит подключение и управление микроконтроллером, а также другие нюансы, связанные с ними.

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

Нижеописанная схема является упрощенным вариантом подключения микроконтроллера AVR.

AVR — это семейство восьмибитных микроконтроллеров фирмы Atmel. Год разработки — 1996.

По-хорошему, необходимо добавить еще несколько дополнительных внешних элементов в схему.

Упрощенная схема подключения микроконтроллера

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

Вывод AREF используется как вход для опорного напряжения АЦП — сюда подается напряжение, относительно которого будет высчитываться АЦП. Допустимо использование внутреннего источника опорного напряжения на 2.56В, или же использовать напряжение от AVCC.

АЦП (Аналого-цифровой преобразователь) — электронное устройство, преобразующее напряжение в двоичный цифровой код

На вывод AREF рекомендуется подключить конденсатор, который позволит увеличить качество напряжения АЦП и, тем самым, позволит провести правильные измерения АЦП. Между AVCC и GND установлен конденсатор и дроссель, а между GND и VCC установлен керамический конденсатор с емкостью 100 нФ (поближе к выводам питания схемы) для сглаживания кратких импульсов помех, образующихся в результате работы микросхемы.

Также между GND и VCC устанавливается ещё один конденсатор с емкостью в 47 мкФ для того, чтобы сгладить возможные броски напряжения.

Управление микроконтроллером

Микроконтроллеры AVR оснащены Гарвардской архитектурой. Каждая из областей памяти располагаются в своем адресном пространстве. Память данных в контроллерах осуществляется посредством регистровой, энергонезависимой и оперативной памяти.

Микроконтроллер AVR

Регистровая память предусматривает наличие 32 регистров общего назначения, которые объединены в файл, а также служебные регистры для ввода и вывода. И первые, и вторые располагаются в пространстве ОЗУ, однако не являются его частью.

В области РВВ (регистров ввода и вывода) находятся различные служебные регистры — состояния, управления микроконтроллером и т.д., а также регистры, которые отвечают за управление периферийных устройств, являющихся частью микроконтроллера. По сути, управление данными регистрами и является методом управления микроконтроллером.

Устройства на микроконтроллерах

Микроконтроллеры AVR являются простыми в использовании, имеют низкую потребляемую мощность и высокий уровень интеграции.

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

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

  • Регистратор температуры на Atmega168;
  • Кухонный таймер на Attiny2313;
  • Термометр;
  • Измеритель частоты промышленной сети на 50 Гц;
  • Контроллер светодиодного стоп-сигнала на Attiny2313;
  • Светодиодные лампы и светильники, реагирующие на температуру или звук;
  • Электронные или сенсорные выключатели.

Отметим, что для разных устройств используются разные модели микроконтроллеров. Так, 32-разрядные микроконтроллеры AVR UC3 (а также XMEGA, megaAVR, tinyAVR и т.д.) подойдут для систем общего назначения с технологиями picoPower, QTouch, EEPROM, системами обработки событий и самопрограммированием.

Микроконтроллеры для начинающих

Если вы собираетесь программировать микроконтроллеры, такие как Ардуино, например, а также собирать устройства, которые предусматривают их наличие в схеме, необходимо учитывать некоторые правила и рекомендации:

  • Перед решением любых задач следует делить их на более мелкие, вплоть до базовых действий.
  • Не следует пользоваться кодогенераторами и прочими «упрощающими» материалами, хотя бы на начальных этапах.
  • Рекомендуется изучить язык С и Ассемблер — это упростит понимание принципа работы микроконтроллеров и программ.

Для того, чтобы новичок мог заниматься микроконтроллерами, рекомендуется изучать базовые материалы. К таким материалам можно отнести следующие книги:

  • «Применение микроконтроллеров AVR: схемы, программы и алгоритмы» Баранов В.Н., 2006 год,
  • «Микроконтроллеры AVR: вводный курс», Дж. Мортон, 2008 год,
  • «Программирование микроконтроллеров ATMEL на языке С» Прокопенко В.С, 2012 год.

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

arduinoplus.ru

Что такое микроконтроллер? - РадиоСхема

Микроконтроллеры являются неотъемлемой частью встроенных систем. Микроконтроллер — это дешевый и маленький компьютер на одной микросхеме, который содержит процессор, небольшой объем оперативной памяти и программируемого ввода-вывода периферийных устройств. Они предназначены для использования в автоматически контролируемой продукции и устройств для выполнения предварительно определенных и запрограммированных задач. Чтобы получить лучшее представление о том, что на самом деле представляет микроконтроллер, давайте посмотрим пример продукта, где используется микроконтроллер. Цифровой термометр, который отображает температуру окружающей среды использует микроконтроллер к которому подключены датчик температуры и блок индикации (как LCD). Микроконтроллер здесь получает входные данные от датчика температуры в сыром виде, обрабатывает их и отображает на небольшой ЖК-дисплей в понятном человеку виде. Аналогичным образом один или несколько микроконтроллеров используются во многих электронных устройствах согласно требованию и сложности приложений.

Где используются микроконтроллеры?

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

PIC18F8720 Microcontroller

Почему мы используем микроконтроллеры?

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

Также микроконтроллеры имеют такие функции, как встроенный микропроцессор, ОЗУ, ПЗУ, последовательные интерфейсы, параллельные интерфейсы, аналого-цифровой преобразователь (АЦП), цифро-аналоговый преобразователь (ЦАП) и др. это позволяет легко строить приложения вокруг него. Кроме того, среда программирования микроконтроллеров предоставляет широкие возможности для контроля различных типов приложений по их требованию.

Различные типы микроконтроллеров.

Существует широкий спектр микроконтроллеров, доступных на рынке. Различные компании, как Atmel, ARM, Microchip, Texas Instruments, Renesas, Freescale, NXP Semiconductors, etc. и др. налажено производство различных видов микроконтроллеров с различными видами функций. Глядя на различные параметры, такие как программируемая память, объем флэш-памяти, напряжение питания, ввода/вывода, скорость, и т. д., можно правильно выбрать микроконтроллер для их применения.

Давайте посмотрим на эти параметры и различные типы микроконтроллеров по этим параметрам.

Шина данных (Разрядность):

Если классифицировать по бит-Размер, большинство микроконтроллеров от 8-бит до 32 бит (более высокие разрядные микроконтроллеров также доступны). В 8-разрядного микроконтроллера своя шина данных состоит из 8 линий данных, а в 16-разрядный микроконтроллер его шина данных состоит из 16 линий данных и так далее для 32 бит и выше микроконтроллеров.

 Память:

Микроконтроллерам нужна память (ОЗУ, ПЗУ, ППЗУ, ЭСППЗУ, флэш-память и т. д.) для хранения программ и данных. Хотя некоторые микроконтроллеры имеют встроенные чипы памяти, а другие требуют внешней памяти в связке. Они называются встроенной памяти микроконтроллеров и внешней памяти микроконтроллеров соответственно. Встроенный объем памяти также варьируется в различных типах микроконтроллеров и вообще вам бы найти микроконтроллеры с памятью 4Б до 4Мб.

 Количество входных/выходных контактов:

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

 Набор Команд:

Есть два вида наборов инструкций — на RISC и cisc. Микроконтроллер может использовать процессор RISC (сокращенный набор инструкций компьютера) или с CISC (комплекс команд ЭВМ). Как подсказывает название, RISC сокращает время операции, определяющие такт инструкции; а CISC позволяет прикладывать одну инструкцию в качестве альтернативы многие инструкции.

 Архитектура Памяти:

Существует два типа микроконтроллеров – Гарвардская архитектура памяти микроконтроллеров и Принстон архитектура памяти микроконтроллеров.

 Вот несколько популярных микроконтроллеров среди студентов и любителей.

Серии 8051 микроконтроллеров (8-бит)

Микроконтроллеры AVR от компании Atmel (ATtiny, серии atmega)

Микрочип-это серия pic микроконтроллеров

Тексас инструментс», микроконтроллеры msp430 фирмы

ARM-Микроконтроллеры

 Особенности микроконтроллеров

Микроконтроллеры используются во встраиваемых системах на их различные характеристики. Как показано в приведенной ниже блок-схема микроконтроллера, он состоит из процессора, ввода/вывода, последовательные порты, таймеры, АЦП, ЦАП и прерыватель контроля.

архитектуры 8051 микроконтроллера

Процессор или центральный процессор

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

 Памяти

Чипы памяти интегрированы в микроконтроллер для хранения всех программ и данных. Там могут быть разные типы памяти, интегрированный в микроконтроллеры как ОЗУ, ПЗУ, ППЗУ, ЭСППЗУ, флэш-память и др.

 Порты Ввода-Вывода

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

 Последовательные Порты

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

 АЦП и ЦАП

Иногда встраиваемых систем примеяют преобразования данных из цифрового в аналоговый и наоборот. Поэтому большинство микроконтроллеров объединены с встроенным АЦП (аналого цифровой преобразователь) и ЦАП (цифро-аналоговые преобразователи) для выполнения требуемого преобразования.

 Таймеры

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

 Прерывание Контроля

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

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

[Читайте также: разница между микропроцессором и микроконтроллером]

<<< Техническая информация

radioschema.ru

Микроконтроллеры. Устройство и особенности. Применение

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

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

Устройство микроконтроллера

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

Внутри корпуса микроконтроллера находятся основные элементы всей его структуры. Существует три класса таких устройств: 8, 16 и 32-разрядные. Из них 8-разрядные модели имеют малую производительность. Она достаточна для решения простых задач управления объектами. 16-разрядные микроконтроллеры – модернизированные 8-разрядные. Они имеют расширенную систему команд. 32-разрядные устройства включают в себя высокоэффективный процессор общего назначения. Они используются для управления сложными объектами.

  • Арифметико-логическое устройство служит для производства логических и арифметических операций, выполняет работу процессора совместно с регистрами общего назначения.
  • Оперативно запоминающее устройство служит для временного хранения информации во время функционирования микроконтроллера.
  • Память программ является одним из основных структурных элементов. Она основана на постоянном запоминающем устройстве с возможностью перепрограммирования, и служит для сохранения микропрограммы управления работой микроконтроллером. Она называется прошивкой. Ее пишет сам разработчик устройства. Изначально в памяти программ завод изготовитель ничего не закладывает, и там нет никаких данных. Прошивку с помощью программатора разработчик устройства записывает внутрь.
  • Память данных используется в некоторых моделях микроконтроллеров для записи различных постоянных величин, табличных данных и т.д. Эта память имеется не во всех микроконтроллерах.

  • Для связи с внешними устройствами существуют порты ввода-вывода. Их также используют для подключения внешней памяти, различных датчиков, исполнительных устройств, светодиодов, индикаторов. Интерфейсы портов ввода-вывода разнообразны: параллельные, последовательные, оборудованные USB выходами, WI FI. Это расширяет возможности применения микроконтроллеров для различных сфер управления.
  • Аналого-цифровой преобразователь требуется для введения аналогового сигнала на вход микроконтроллера. Его задачей является преобразование сигнала из аналогового вида в цифровой.
  • Аналоговый компаратор служит для выполнения сравнения двух сигналов аналогового вида на входах.
  • Таймеры используются для выполнения установки диапазонов и задержки времени в функционировании микроконтроллера.
  • Цифро-аналоговый преобразователь исполняет обратную работу по преобразованию из цифрового сигнала в аналоговый.
  • Действие микроконтроллера синхронизируется с генератором тактовыми импульсами при помощью блока синхронизации, который работает совместно с микропрограммой. Генератор тактовых импульсов может быть как внутренним, так и внешним, то есть, тактовые импульсы могут подаваться с постороннего устройства.

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

Микроконтроллеры и их применение

Сфера их использования постоянно расширяется. Микроконтроллеры применяются в различных механизмах и устройствах. Основными областями их применения являются:

  • Авиационная промышленность.
  • Робототехника.
  • Промышленное оборудование.
  • Железнодорожный транспорт.
  • Автомобили.
  • Электронные детские игрушки.
  • Автоматические шлагбаумы.
  • Светофоры.
  • Компьютерная техника.
  • Автомагнитолы.
  • Электронные музыкальные инструменты.
  • Средства связи.
  • Системы управления лифтами.
  • Медицинское оборудование.
  • Бытовая техника.

Примером можно рассмотреть использование микроконтроллеров в автомобильной электронике. В некоторых автомобилях Пежо встроено 27 различных микроконтроллеров. В элитных моделях БМВ применяется более 60 таких устройств. Они контролируют жесткость подвески, впрыск топлива, работу приборов освещения, стеклоочистителей, стеклоподъемников и других механизмов.

Советы по выбору

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

Основными факторами подбора микроконтроллера являются:
  • Способность работы с прикладной системой. Возможность реализации этой системы на однокристальном микроконтроллере, или на специализированной микросхеме.
  • Наличие в микроконтроллере необходимого количества портов, контактов, так как при их нехватке он не будет способен выполнить задачу, а если будут лишние порты, то стоимость будет завышена.
  • Необходимые устройства периферии: различных преобразователей, интерфейсов связи.
  • Наличие других вспомогательных устройств, ненужных для работы, из-за которых повышается стоимость.
  • Сможет ли ядро контроллера обеспечить требуемую производительность: мощность вычислений, дающую возможность обработки запросов системы на определенном прикладном языке программирования.
  • Имеется ли в проекте бюджета достаточно финансов, чтобы применять дорогостоящий микроконтроллер. Если он не подходит по цене, то остальные вопросы не имеют смысла, и разработчик должен искать другой микроконтроллер.
  • Доступность. В этот фактор входят следующие пункты:

— Нужное количество.
— Выпускается ли в настоящее время.
— Наличие поддержки разработчика.
— Наличие языков программирования, внутрисхемных эмуляторов, средств отладки и компиляторов.

  • Информационная поддержка, включающая в себя:

— Связь с профессиональными специалистами.
— Квалификация персонала, и их заинтересованность в помощи и решении проблем.
— Примеры текстов программ.
— Программы и бесплатные ассемблеры.
— Сообщения об ошибочных действиях.
— Примеры использования.

  • Надежность завода изготовителя. В этот фактор входит:

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

Похожие темы:

electrosam.ru

Микроконтроллер своими руками / Habr

Пытаясь освоить контроллеры и уже владея навыками программирования ПЛИС, мне пришла в голову дурная мысль. Пришла, постучала и вошла. Всем тем, к кому приходят дурные мысли, и кому интересно как с этим явлением справляются другие, посвящается.

Возникла идея нарисовать свой контроллер, не ограниченный по количеству периферии, ОЗУ и другим параметрам, кроме ёмкости ПЛИС. Скажем контроллер содержит 5 UARTов, а позарез нужен шестой, придётся изворачиваться. А зачем, если можно просто щёлкнуть мышкой и добавить необходимое? Или наоборот, задачка хорошо решается на пяти контроллерах с разрядностью 5, 32, 20, 32 и 20 с непредсказуемым количеством линий связи между ними. Жалко использовать пять 32 разрядников, ресурс всегда жалко, а совмещать две подзадачи на одно ядро – некрасиво, что ли.

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

Конечно, все эти проблемы надуманы и решаются и легко и просто. Но дурная мысль не ищет таких решений, она просто бродит в переполненном пространстве сознания и подталкивает сделать нестандарт. А, если у молодого инженера отпуск, то прости жена и дети, но папа не «опять сидит за компьютером», а профессионально растёт. Тем более иногда хочется выполнять не кем-то придуманные задачки, а свои, полностью свои.

Рис. 1. Таймеры. Добавляй сколько хочешь. Обратите внимание на грамматическую ошибку. Стыдно, но не хочется Builder устанавливать для перекомпиляции.

Разрешите представить вам контроллер, архитектура которого, не то чтобы отличается от всех прочих, скорее она не принята на вооружение. Уже давно забыт список прочитанной перед началом работ литературы, использованы мысли многих людей из разных компьютерных эпох, простите меня мои забытые учителя. Зато вам не придётся от меня открещиваться. Да и денег это не пронесло, поэтому и делиться нечем.

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

— Разрядность контроллера от 1 до 32, со знаком или без оного. (Не помню проверял ли я работу на малых разрядностях). Используется дополнительный код.
— Количество портов ввода/вывода ни чем не ограничена, разрядность ограничена разрядностью ядра.
— Количество таймеров так же не ограничено. На каждый таймер можно установить свой обработчик прерывания.
— Обработчик прерываний с бесконечным количеством входов, каждый вход имеет приоритет от 0 до 99 (ограничение по причине «и так большого числа»). Возможность запрещать все прерывания или низкоприоритетные только.
— Количество последовательных портов типа UART неограниченно, разрядность ограничена разрядностью ядра.
— Делитель частоты сделан плохо и неправильно, но исправно выдаёт любую частоту для любой периферии или просто наружу контроллера.
— Сопроцессор. О нём ниже.

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

Хотелось бы рассказать про код команд, но сам не помню из чего он состоит. Исходя из принципа «не использовать то, что не используется» даже длинна кода команды является величиной не константной, тем более его содержимое. Скажем, если в компилируемой программе встречается 14 команд, то каждая команда кодируется 4 битами, если используется 18 команд – выделяется пятый бит. Плюс к каждой команде добавляется бит длинны, если он равен 0, то команда одинарная, если 1 – двойная, или наоборот, это не важно. Двойная команда нужна для операций, содержащих адрес ОЗУ или ПЗУ. Добавим к этому то, что шины адреса так же имеют не константные длины, и получим полный бардак в коде команд, рассматривать его никаким дизассемблером смысла нет, как собственно и ассемблер в этом контроллере.

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


Рис. 2. Руководство достаточно скромное. Нескромное так и не написано.


Рис. 3. Вторая часть руководства. Не знаю почему, но окно расширить нельзя. Есть ещё и третья часть, но уж совсем скучная.

И, естественно, мы имеем стековый контроллер. То есть Форт функционирует в своей естественно среде – в стеке, в аппаратном стеке, а не медленном программном. «Всё за такт!» — второй девиз проекта. Аппаратный стек позволил при переходе в функции или вызове прерывания сразу приступать к выполнению команд обработки данных, без необходимости сохранять контент прерванного процесса. «Новые» данные просто помещаются в стек сверху, «старые» уходят в глубь и прекрасно там сохраняются. Затем «новые» данные, поучаствовав в разных операциях, благополучно переходят в ОЗУ или другие места, а «старые» выталкиваются на вершину. При возврате в прерванный участок кода никто ничего не заметит. Адрес прерванного кода сохраняется в другом стеке, и максимальное количество прерванных процессов зависит только ото глубины Стека Возвратов. Это величина настраивается при компиляции, хоть бы и «очень большое число». Параметры в функции передаются так же через стек.

Stackcpu – именно так и называется контроллер, почему-то латиницей, хотя писать код можно и кириллицей. Что я и делаю, приведу пример функции «меняем_биты_в_слове»:

:меняем_биты_в_слове читаем_из_нужного_порта, меняем_прочитанное_из_нужного_порта, записываем_в_требуемую_ячейку_памяти; 

Где: «читаем_из_нужного_порта», «меняем_прочитанное_из_нужного_порта», «записываем_в_требуемую_ячейку_памяти» — функции, выполняющие определённые действия.

Ну не псих ли я красиво ли? Приведу ещё доказательства, программа управления светофором:

 \\main BEGIN зелёный потушить, жёлтый потушить, красный зажечь. пятьдесят секунд ждём… зелёный потушить, жёлтый зажечь, красный потушить. четыре секунды ждём… зелёный зажечь, жёлтый потушить, красный потушить. сорок секунд ждём… зелёный уменьшить_яркость_до_нуля, жёлтый гори, а красный не_гори. четыре секунды ждём… 0 UNTIL \бесконечный цикл 

Ну что, псих красиво? Третий принцип проекта: «Литературный язык в управление электроникой!» Хотя, как показала практика, писать так программы довольно утомительно. Для знатоков Форт сообщу, что точку мой компилятор воспринимает как разделитель, и запятую тоже. Конечно, лучше использовать язык С, но компилятор С мне не по зубам, а использовать сторонние компиляторы архитектура не позволяет.


Рис. 4. Среда разработки с отчётом компилятора и линковщика.

Сколько ёмкости FPGA занимает контроллер? Да кто ж его знает. Всё зависит от разрядности числа, выбранной периферии, ещё чего-то, и от текста программы. В контроллере не будет умножителя, если он не встречается в программном коде, или не будет делителя, если его не использует программист. Под программистом я подразумеваю себя, так как других программистов данного контроллера не существует (принцип «не использовать тем, кто не использует»). По блочной памяти для ОЗУ данных и ПЗУ команд: минимум два блока, максимум вся блочная память кристалла.

Максимальная частота работы высчитывается только опытным путём, под конкретную архитектуру. Один из моих 24 разрядных контроллеров не работал на частоте 48 Mhz в Spartan2, на частоте 40Mhz заработал. В Spartan6 на сотне Mhz работал 32 разрядный. А может и на паре сотен заработает, ничего в нём такого сложного нет.


Рис. 5. Вот такой код увидит процессор. Обратите внимание, одна команда FORTH – это одна команда ядра процессора – один системный такт.

Первый PS: упомяну одну возможность сопроцессора – фильтр. Обычный БИХ фильтр. Но вот, что необычного в нём, так это то, что он использует плавающую точку. Не то что б в этом был какой-то смысл, просто прочитал какую-то книжку про форму представления чисел, и решил: ерунда интересна эта ваша плавающая точка, сделаем.


Рис. 6. Моделирование результатов работы фильтра. Высчитывается логика кода VHDL с точностью до битика.

Так же были планы по превращения проекта в систему на кристалле: добавление различных, писанных на VHDL блоков в периферию контроллера. И вроде не так уж и сложно, но запал иссяк. Дурные мысли меня покинули, и бродят где-то между программистами и электронщиками. И зовут их теперь Стартапами.
Так что, если к вам кто-то придёт и представится Стартапом, подумайте, а не скрывается ли под ним какой-нибудь Времяубиватель.
И ещё одно PS: С другой стороны, за время работы над проектом Stackcpu я неплохо подучил три два языка программирования:
1. FORTH, точнее некое его подмножество, необходимое для проверки работоспособности контроллера.
2. С++, на чистом С было бы тяжело написать среду разработки и компилятор.
3. VHDL, именно буквы этого языка и есть контроллер.

Понятно, что рассказывать можно долго, но на этом хватит. Пойду заниматься чужими идеями, но с моей реализацией!
Собственно контроллер (половина мегабайта): cloud.mail.ru/public/1cdf4b1d4799/StackCPU.rar

habr.com


Смотрите также



© 2009-: Каталог автоинструкторов России.
Карта сайта, XML. продвижение сайта