Микроконтроллер: определение, задачи, разновидности, применение


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

Работы над изобретением микропроцессора велись с начала 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.

PIC

Также есть 16-битные «пики» — PIC24F и DsPIC30/33F. Ну и 32-битные — PIC32MX. Эти непонятные сочетания букв и цифр — часть идентификатора чипа. То же, что и марки у машин. Например, широко распространенный камень PIC16F628A расшифровывается так: семейство PIC16F6 (Mid-range), а остальная часть имени — указатель на конкретный камень. У рассмотренных далее МК в имени может содержаться еще больше информации.

Эти микроконтроллеры имеют среднюю стоимость. Например, камень PIC6F628 в Chipdip стоит около 150 рублей, а PIC18F2550 — 620 рублей.

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

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

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

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

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

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

Что нужно для того, чтобы стать профессиональным разработчиком программ для микроконтроллеров и выйти на такой уровень мастерства, который позволит с лёгкостью найти и устроиться на работу с высокой зарплатой (средняя зарплата программиста микроконтроллеров по России на начало 2022 года составляет 80 000 рублей). Подробнее…

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

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

CPU (central processing unit) дословно переводится как “центральное обрабатывающее устройство”. Но в современном языке обычно называется “центральное процессорное устройство” (ЦПУ), или просто “центральный процессор”.

Этот модуль принимает из памяти программ коды команд, декодирует (расшифровывает) их и выполняет эти команды.

ЦПУ состоит из регистров, арифметико-логического устройства (АЛУ) и цепей управления.

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

Память программ — это память, где хранятся коды команд. Последовательность именно этих команд и является программой микроконтроллера, которую вы “зашиваете” в микроконтроллер с помощью программатора.

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

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

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

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

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

Дискретный сигнал имеет только два фиксированных состояния: 0 и 1. Обычно 0 соответствует отсутствию напряжения на выходе, а 1 — наличию напряжения. Хотя может быть и наоборот.

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

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

Аналоговый сигнал является непрерывным.

Например, если речь идёт о напряжении в диапазоне от 0 до 5 В, то дискретный сигнал будет иметь только два значения: 0 и 5 В.

Аналоговый же сигнал будет иметь множество значений во всём диапазоне от 0 до 5 В. Например, 1 В, 3 В, 3,75 В и т.п.

Таймер используется для отсчёта временных интервалов.

Сторожевой таймер — это специальный таймер, предназначенный для предотвращения сбоев программы. Принцип работы этого таймера такой: после запуска он начинает отсчёт заданного временного интервала. Программа должна перезапускать сторожевой таймер до окончания этого промежутка времени. Если она этого не сделала, то с высокой долей вероятности можно считать, что программа “зависла” (произошёл сбой). В этом случае сторожевой таймер перезапускает микроконтроллер.

Таймер реального времени. Грубо говоря — это часы, которые отсчитывают не какие-то абстрактные промежутки времени, а именно реальное (текущее) время. Текущее время используется некоторыми устройствами. Например, такими как реле времени или те же электронные часы.

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

Подписаться на канал в YouTube Вступить в группу «Основы программирования»
Подписаться на рассылки по программированию
Микроконтроллеры для ЧАЙНИКОВ
Бесплатная рассылка о микроконтроллерах. Рассылка содержит как бесплатную информацию для начинающих, так и ссылки на платные продукты (книги, видеокурсы и др.) для тех, кто захочет вникнуть в тему более глубоко. Подробнее…

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

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

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

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

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

RISC – только необходимые команды.

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

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

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

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

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

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

Благодаря тому, что микроконтроллеры 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.

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

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

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

AVR микроконтроллер изнутри

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

Рис. 1. Структура AVR микроконтроллера. Рисунок с сайта digikey.com

Внутри микроконтроллер содержит:

  • Быстродействующий процессор с RISC-архитектурой;
  • FLASH-память;
  • EEPROM-память;
  • Оперативную память RAM;
  • Порты ввода/вывода;
  • Периферийные и интерфейсные модули.

RISC (Reduced Instruction Set Computer) — архитектура с тщательно подобранным набором команд, которые как правило выполняются за один такт работы процессора. Современные AVR микроконтроллеры содержат около 130 команд, которые очень быстро выполняются и не требуют больших затрат как по внутри-процессорным ресурсам, так и по потребляемой мощности.

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

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

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

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

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

УСТРОЙСТВО МИКРОКОНТРОЛЛЕРОВ AVR

Сердцем микроконтроллеров AVR является 8-битное микропроцессорное ядро или центральное процессорное устройство (ЦПУ), построенное на принципах RISC-архитектуры. Основой этого блока служит арифметико-логическое устройство (АЛУ). По системному тактовому сигналу из памяти программ в соответствии с содержимым счетчика команд (Program Counter — PC) выбирается очередная команда и выполняется АЛУ. Во время выбора команды из памяти программ происходит выполнение предыдущей выбранной команды, что и позволяет достичь быстродействия 1 MIPS на 1 МГц. АЛУ подключено к регистрам общего назначения РОН (General Purpose Registers — GPR). Регистров общего назначения всего 32, они имеют байтовый формат, то есть каждый из них состоит из восьми бит. РОН находятся в начале адресного пространства оперативной памяти, но физически не являются ее частью. Поэтому к ним можно обращаться двумя способами (как к регистрам и как к памяти). Такое решение является особенностью AVR и повышает эффективность работы и производительность микроконтроллера. Отличие между регистрами и оперативной памятью состоит в том, что с регистрами можно производить любые операции (арифметические, логические, битовые), а в оперативную память можно лишь записывать данные из регистров.

Память
Фоннеймановская и гарвардская архитектура

В 1945 г. американский математик Джон фон Нейман сформулировал основные принципы работы современных компьютеров. Им была предложена архитектура, получившая его имя (von Neumann architecture) и предполагающая хранение программ и данных в общей памяти (1946 г.). Сегодня такая архитектура наиболее характерна для микропроцессоров, ориентированных на использование в компьютерах. Примером могут служить микропроцессоры семейства х86. Архитектура, предполагающая раздельное использование памяти программ и данных, носит название гарвардской (Harvard architecture). Гарвардская архитектура позволяет центральному процессору работать одновременно как с памятью программ, так и с памятью данных, что существенно увеличивает производительность.

В микроконтроллерах AVR реализована Гарвардская архитектура, в соответствии с которой разделены не только адресные пространства памяти программ и памяти данных, но и шины доступа к ним. Каждая из областей памяти данных (оперативная память и EEPROM) также расположена в своем адресном пространстве.
Память программ (Flash ROM или Flash ПЗУ)

Память программ предназначена для хранения последовательности команд, управляющих функционированием микроконтроллера, и имеет 16-ти битную организацию. Все AVR имеют Flash-память программ, которая может быть различного размера — от 1 до 256 КБайт. Ее главное достоинство в том, что она построена на принципе электрической перепрограммируемости, т. е. допускает многократное стирание и запись информации. Программа заносится во Flash-память AVR как с помощью обычного программатора, так и с помощью SPI-интерфейса, в том числе непосредственно на собранной плате. Возможностью внутрисхемного программирования (функция ISP) через коммуникационный интерфейс SPI обладают все микроконтроллеры AVR, кроме Tiny11 и Tiny28. Все микроконтроллеры семейства Mega имеют возможность самопрограммирования, т. е. самостоятельного изменения содержимого своей памяти программ. Эта особенность позволяет создавать на их основе очень гибкие системы, алгоритм работы которых будет меняться самим микроконтроллером в зависимости от каких-либо внутренних условий или внешних событий. Гарантированное число циклов перезаписи Flash-памяти у микроконтроллеров AVR второго поколения составляет не менее 10 тыс. циклов при типовом значении 100 тыс. циклов. (В официальной технической документации Atmel Corp. указывается значение 10 тыс. циклов.)

Память данных

Память данных разделена на три части: регистровая память, оперативная память (ОЗУ — оперативное запоминающее устройство или RAM) и энергонезависимая память (ЭСППЗУ или EEPROM).

Регистровая память (РОН и РВВ)

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

Энергонезависимая память данных (EEPROM)

Для долговременного хранения различной информации, которая может изменяться в процессе функционирования микроконтроллерной системы, используется EEPROM-память. Все AVR имеют блок энергонезависимой электрически перезаписываемой памяти данных EEPROM от 64 Байт до 4 КБайт. Этот тип памяти, доступный программе микроконтроллера непосредственно в ходе ее выполнения, удобен для хранения промежуточных данных, различных констант, коэффициентов, серийных номеров, ключей и т.п. EEPROM может быть загружена извне как через SPI интерфейс, так и с помощью обычного программатора. Число циклов стирание/запись — не менее 100 тыс.

Оперативная память (ОЗУ или RAM)

Внутренняя оперативная статическая память Static RAM (SRAM) имеет байтовый формат и используется для оперативного хранения данных. Размер оперативной памяти может варьироваться у различных чипов от 64 Байт до 4 КБайт. Число циклов чтения и записи в RAM не ограничено, но при отключении питающего напряжения вся информация теряется. Для некоторых микроконтроллеров возможна организация подключения внешнего статического ОЗУ объемом до 64К.

Периферия

Периферия микроконтроллеров AVR включает: порты (от 3 до 48 линий ввода и вывода), поддержку внешних прерываний, таймеры-счетчики, сторожевой таймер, аналоговые компараторы, 10-разрядный 8-канальный АЦП, интерфейсы UART, JTAG и SPI, устройство сброса по понижению питания, широтно-импульсные модуляторы.

Порты ввода/вывода (I/O)

Порты ввода/вывода AVR имеют число независимых линий «вход/выход» от 3 до 53. Каждая линия порта может быть запрограммирована на вход или на выход. Мощные выходные драйверы обеспечивают токовую нагрузочную способность 20 мА на линию порта (втекающий ток) при максимальном значении 40 мА, что позволяет, например, непосредственно подключать к микроконтроллеру светодиоды и биполярные транзисторы. Общая токовая нагрузка на все линии одного порта не должна превышать 80 мА (все значения приведены для напряжения питания 5 В). Архитектурная особенность построения портов ввода/вывода у AVR заключается в том, что для каждого физического вывода (пина) существует 3 бита контроля/управления, а не 2, как у распространенных 8-разрядных микроконтроллеров (Intel, Microchip, Motorola и т.д.). Это позволяет избежать необходимости иметь копию содержимого порта в памяти для безопасности и повышает скорость работы микроконтроллера при работе с внешними устройствами, особенно в условиях внешних электрических помех.

Прерывания (INTERRUPTS)

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

Таймеры/счетчики (TIMER/COUNTERS)

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

Сторожевой таймер (WDT)

Сторожевой таймер (WatchDog Timer) предназначен для предотвращения катастрофических последствий от случайных сбоев программы. Он имеет свой собственный RC-генератор, работающий на частоте 1 МГц. Как и для основного внутреннего RC-генератора, значение 1 МГц является приближенным и зависит прежде всего от величины напряжения питания микроконтроллера и от температуры. Идея использования стоpожевого таймеpа предельно проста и состоит в pегуляpном его сбpасывании под упpавлением пpогpаммы или внешнего воздействия до того, как закончится его выдеpжка вpемени и не пpоизойдет сбpос пpоцессоpа. Если пpогpамма pаботает ноpмально, то команда сбpоса стоpожевого таймеpа должна pегуляpно выполняться, пpедохpаняя поцессоp от сбpоса. Если же микpопpоцессоp случайно вышел за пpеделы пpогpаммы (напpимеp, от сильной помехи по цепи питания) либо зациклился на каком-либо участке пpогpаммы, команда сбpоса стоpожевого таймеpа скоpее всего не будет выполнена в течение достаточного вpемени и пpоизойдет полный сбpос пpоцессоpа, инициализиpующий все pегистpы и пpиводящий систему в pабочее состояние.

Аналоговый компаратор (AC)

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

Аналого-цифровой преобразователь (A/D CONVERTER)

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

Универсальный последовательный приемопередатчик (UART или USART)

Универсальный асинхронный или универсальный синхронно/асинхронный приемопередатчик (Universal Synchronous/Asynchronous Receiver and Transmitter — UART или USART) — удобный и простой последовательный интерфейс для организации информационного канала обмена микроконтроллера с внешним миром. Способен работать в дуплексном режиме (одновременная передача и прием данных). Он поддерживает протокол стандарта RS-232, что обеспечивает возможность организации связи с персональным компьютером. (Для стыковки МК и компьютера обязательно понадобится схема сопряжения уровней сигналов. Для этого существуют специальные микросхемы, например MAX232.)

Последовательный периферийный интерфейс SPI

Последовательный периферийный трехпроводный интерфейс SPI (Serial Peripheral Interface) предназначен для организации обмена данными между двумя устройствами. С его помощью может осуществляться обмен данными между микроконтроллером и различными устройствами, такими, как цифровые потенциометры, ЦАП/АЦП, FLASH-ПЗУ и др. С помощью этого интерфейса удобно производить обмен данными между несколькими микроконтроллерами AVR. Кроме того, через интерфейс SPI может осуществляться программирование микроконтроллера.

Двухпроводной последовательный интерфейс TWI

Двухпроводной последовательный интерфейс TWI (Two-wire Serial Interface) является полным аналогом базовой версии интерфейса I2C (двухпроводная двунаправленная шина) фирмы Philips. Этот интерфейс позволяет объединить вместе до 128 различных устройств с помощью двунаправленной шины, состоящей из линии тактового сигнала (SCL) и линии данных (SDA).

Интерфейс JTAG

Интерфейс JTAG был разработан группой ведущих специалистов по проблемам тестирования электронных компонентов (Joint Test Action Group) и был зарегистрирован в качестве промышленного стандарта IEEE Std 1149.1-1990. Четырехпроводной интерфейс JTAG используется для тестирования печатных плат, внутрисхемной отладки, программирования микроконтроллеров. Многие микроконтроллеры семейства Mega имеют совместимый с IEEE Std 1149.1 интерфейс JTAG или debugWIRE для встроенной отладки. Кроме того, все микроконтроллеры Mega с флэш-памятью емкостью 16 кбайт и более могут программироваться через интерфейс JTAG.

Тактовый генератор

Тактовый генератор вырабатывает импульсы для синхронизации работы всех узлов микроконтроллера. Внутренний тактовый генератор AVR может запускаться от нескольких источников опорной частоты (внешний генератор, внешний кварцевый резонатор, внутренняя или внешняя RC-цепочка). Минимальная допустимая частота ничем не ограничена (вплоть до пошагового режима). Максимальная рабочая частота определяется конкретным типом микроконтроллера и указывается Atmel в его характеристиках, хотя практически любой AVR-микроконтроллер с заявленной рабочей частотой, например, в 10 МГц при комнатной температуре легко может быть «разогнан» до 12 МГц и выше.

Система реального времени (RTC)

RTC реализована во всех микроконтроллерах Mega и в двух кристаллах «classic» — AT90(L)S8535. Таймер/счетчик RTC имеет отдельный предделитель, который может быть программным способом подключен или к источнику основной тактовой частоты, или к дополнительному асинхронному источнику опорной частоты (кварцевый резонатор или внешний синхросигнал). Для этой цели зарезервированы два вывода микросхемы. Внутренний осциллятор оптимизирован для работы с внешним «часовым» кварцевым резонатором 32,768 кГц.

Питание

AVR функционируют при напряжениях питания от 1,8 до 6,0 Вольт. Ток потребления в активном режиме зависит от величины напряжения питания и частоты, на которой работает микроконтроллер, и составляет менее 1 мА для 500 кГц,5 … 6 мА для 5 МГц и 8 … 9 мА для частоты 12 МГц. AVR могут быть переведены программным путем в один из трех режимов пониженного энергопотребления. Режим холостого хода (IDLE).

Прекращает работу только процессор и фиксируется содержимое памяти данных, а внутренний генератор синхросигналов, таймеры, система прерываний и сторожевой таймер продолжают функционировать. Ток потребления не превышает 2,5 мА на частоте 12 МГц.
Стоповый режим (POWER DOWN).
Сохраняется содержимое регистрового файла, но останавливается внутренний генератор синхросигналов, и, следовательно, останавливаются все функции, пока не поступит сигнал внешнего прерывания или аппаратного сброса. При включенном сторожевом таймере ток потребления в этом режиме составляет около 80 мкА, а при выключенном — менее 1 мкА. (Все приведенные значения справедливы для напряжения питания 5 В).
Экономичный режим (POWER SAVE).
Продолжает работать только генератор таймера, что обеспечивает сохранность временной базы. Все остальные функции отключены.

Сброс при снижении напряжения питания (BOD)

Схема BOD (Brown-Out Detection$WinAVR = ($_GET[‘avr’]); if($WinAVR) include($WinAVR);?>) отслеживает напряжение источника питания. Если схема включена, то при снижении питания ниже некоторого значения она переводит микроконтроллер в состояние сброса. Когда напряжение питания вновь увеличится до порогового значения, запускается таймер задержки сброса. После формирования задержки внутренний сигнал сброса снимается и происходит запуск микроконтроллера.

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

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

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

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

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

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

  • 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 класса в соответствии с их разрядностью:

  • 8-разрядные
  • 16-разрядные
  • 32-разрядные

8-разрядные микроконтроллеры имеют относительно низкую производительность, которая вполне достаточна для решения широкого круга задач управления различными объектами. Это простые и дешевые микроконтроллеры, ориентированные на использование в относительно несложных устройствах массового выпуска. Основными областями их применения являются бытовая и измерительная техника, промышленная автоматика, автомобильная электроника, теле-, видео- и аудиоаппаратура, средства связи. Для этих микроконтроллеров характерна реализация Гарвардской архитектуры, где используется отдельная память для хранения программ и данных. Внутренняя память программ обычно имеет объем от нескольких единиц до десятков килобайт. Для хранения данных используется регистровый блок, организованный в виде нескольких регистровых банков, или внутреннее ОЗУ. Объем внутренней памяти данных составляет от нескольких десятков байт до нескольких килобайт. Ряд микроконтроллеров этой группы позволяет, в случае необходимости, дополнительно подключать внешнюю память команд и данных, объемом до 64…256 килобайт. Микроконтроллеры этой группы обычно выполняют относительно небольшой набор команд (30-100), использующих наиболее простые способы адресации. Такие микроконтроллеры обеспечивают выполнение большинства команд за один такт машинного времени.

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

32-разрядные микроконтроллеры содержат высокопроизводительный процессор, соответствующий по своим возможностям младшим моделям микропроцессоров общего назначения. В ряде случаев процессор, используемый в этих микроконтроллерах, аналогичен CISC- или RISC-процессорам, которые выпускаются или выпускались ранее в качестве микропроцессоров общего назначения. Например, в 32-разрядных микроконтроллерах компании Intel используется процессор i386, в микроконтроллерах компании Motorola широко применяется процессор 68020, в ряде других микроконтроллеров в качестве процессорного ядра служат RISC-процессоры типа PowerPC. На базе данных процессоров были реализованы различные модели персональных компьютеров. Введение этих процессоров в состав микроконтроллеров позволяет использовать в соответствующих системах управления огромный объем прикладного и системного программного обеспечения, созданный ранее для соответствующих персональных компьютеров. Кроме 32-разрядного процессора на кристалле микроконтроллера размещается внутренняя память команд емкостью до десятков килобайт, память данных емкостью до нескольких килобайт, а также сложно-функциональные периферийные устройства – таймерный процессор, коммуникационный процессор, модуль последовательного обмена и ряд других. Микроконтроллеры работают с внешней памятью объемом до 16 Мбайт и выше. Они находят широкое применение в системах управления сложными объектами промышленной автоматики (двигатели, робототехнические устройства, средства комплексной автоматизации производства), в контрольно-измерительной аппаратуре и телекоммуникационном оборудовании. Во внутренней структуре этих микроконтроллеров реализуется Принстонская или Гарвардская архитектура. Входящие в их состав процессоры могут иметь CISC- или RISC-архитектуру, а некоторые из них содержат несколько исполнительных конвейеров, образующих суперскалярную структуру.

Цифровые сигнальные процессоры (ЦСП, DSP) представляют особый класс специализированных микропроцессоров, ориентированных на цифровую обработку поступающих аналоговых сигналов. Специфической особенностью алгоритмов обработки аналоговых сигналов является необходимость последовательного выполнения ряда команд умножения-сложения с накоплением промежуточного результата в регистре-аккумуляторе. Поэтому архитектура ЦСП ориентирована на реализацию быстрого выполнения операций такого рода. Набор команд этих процессоров содержит специальные команды MAC (Multiplication with Accumlation), реализующие эти операции. Значения поступившего аналогового сигнала может быть представлено в виде числа с фиксированной или с “плавающей” точкой. В соответствии с этим ЦСП делятся на процессоры, обрабатывающие числа с фиксированной или плавающей точкой. Более простые и дешевые ЦСП с фиксированной точкой обычно обрабатывают 16-разрядные операнды, представленные в виде правильной дроби. Однако ограниченная разрядность в ряде случаев не позволяет обеспечить необходимую точность преобразования. Поэтому в ЦСП с фиксированной точкой, выпускаемых компанией Motorola, принято 24-разрядное представление операндов. Наиболее высокая точность обработки обеспечивается в случае представления данных в формате с «плавающей» точкой. В ЦСП, обрабатывающих данные с «плавающей» точкой, обычно используется 32-разрядный формат их представления. Для повышения производительности при выполнении специфических операций обработки сигналов в большинстве ЦПС реализуется Гарвардская архитектура с использованием нескольких шин для передачи адресов, команд и данных. В ряде ЦПС нашли применение также некоторые черты VLIW-архитектуры: совмещение в одной команде нескольких операций, обеспечивающих обработку имеющихся данных и одновременную загрузку в исполнительный конвейер новых данных для последующей обработки.

Выбор микроконтроллера

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

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

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

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

    Для уменьшения количества ошибок в программах существуют так называемые примеры использования (Application Note). Эти документы создают производители микроконтроллеров. В них описывается практическое применение микроконтроллеров, приведены схемы устройств, полные тексты или части кода программ, описание работы устройства.

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

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

    • симуляторы
    • эмуляторы.

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

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

    Назад
    Назад: Программирование микроконтроллеров

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

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

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

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

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

    Микроконтроллер (МК) характеризуется:

    1) тактовой частотой

    , определяющей максимальное время выполнения переключения элементов в ЭВМ;

    2) разрядностью

    , т.е. максимальным числом одновременно обрабатываемых двоичных разрядов. Разрядностъ МК обозначается m/n/k/ и включает:

    m -разрядность внутренних регистров, определяет принадлежность к тому или иному классу процессоров;

    n — разрядность шины данных, определяет скорость передачи информации;

    к — разрядность шины адреса, определяет размер адресного пространства.

    Например, МП i8088 характеризуется значениями m/n/k=16/8/20;

    3) архитектурой

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

    В процессе развития архитектура МК претерпела существенные изменения. Первые МК строились по так называемой Принстонской архитектуре (

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

    В Гарвардской архитектуре

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

    Рис.2.1. Фон-Неймановская архитектура МК

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

    По другому архитектурному признаку, связанному с характером системы команд, МК делятся на:

    — CISC — процессоры;

    — RISC — процессоры;

    — VLIW — процессоры.

    МК CISC имеют так называемую полную систему команд (Complex Instruction Set Computer), т. е. большой набор разно форматных команд при использовании многих способов адресации. Архитектура CISC присуща классическим процессорам, она в силу многообразия команд (общее число команд составляет 100…200) позволяет применять эффективные методы решения задач, но, в тоже время, усложняет схему процессора и увеличивает его стоимость и в общем случае не обеспечивает

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

    · Нефиксированным значением длины команды.

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

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

    Рис. 2.2. Гарвардская архитектура МП

    МК RISC имеют сокращенную систему команд (Reduse Instruction Set Computer), из которой исключены редко применяемые команды. Общее число команд находится в пределах 50…100. Первые RISС-процессоры были разработаны в начале 1980-х годов в Стэнфордском и Калифорнийском университетах США. Простая архитектура позволяет как удешевить МК, так и поднять тактовую частоту.

    Характерные особенности МК RISC:

    · Фиксированная длина машинных инструкций (например, 32 бита) и простой формат команды.

    · Одна инструкция выполняет только одну операцию с памятью — чтение или запись. Операции вида «прочитать-изменить-записать» отсутствуют.

    · Большое количество регистров общего назначения (32 и более).

    Многие ранние RISC-МК даже не имели команд умножения и деления.

    Форматы команд, по крайней мере подавляющее их большинство, идентичны (например, все команды имеют длину 4 байта), резко уменьшено число используемых способов адресации. Данные, как правило, обрабатываются только с регистровой или непосредственной адресацией. Значительно увеличено число регистров процессора, что позволяет редко обращаться к внешней памяти, а это повышает быстродействие. Идентичность временных циклов выполнения команд позволяет проще организовывать конвеерные методы обработки информации.

    Существуют промежуточные решения между CISC и RISC – процессорами, например МК AVR фирмы Atmel, являющихся очень популярными у разработчиков в настоящее время. Они имеют Гарвардскую архитектуру и достаточно развитую, хотя и усеченную систему команд. В частности в их арсенале насчитывается до 133 инструкций, что соответствует CISC. С другой стороны большинство инструкций выполняются за один такт, в отличие от CISC МК с Принстонской архитектурой, где на выполнение одной инструкции требуется минимум 12 тактов. Поэтому, если считать что для исполнения некоторых CISC инструкций потребуется выполнение до 3 команд RISC, быстродействие МК AVR более чем в 4 раза превышает быстродействие классических МК с Принстонской архитектурой. Фактически микропроцессоры AVR стали индустриальным стандартом.

    Последними по времени (менее 10 лет назад) появились VLIW — процессоры (Very Long Instruction Word), особенность которых состоит в использовании очень длинных команд (16 байт и более). Отдельные поля длинной команды определяют несколько подлежащих реализации микроопераций, которые могу выполняться параллельно во времени в нескольких операционных устройствах процессора. Таким образом, длинная команда определяет сразу группу микроопераций. VLIW процессоры считаются перспективными для высокопроизводительных систем.

    Большое многообразие производимых МК не позволяет рассмотреть их все в рамках данного курса. Поэтому ограничимся рассмотрением наиболее популярных микропроцессоров фирмы Atmel с CISC архитектурой MCS-51 и RISC архитектурой AVR.

    Микроконтроллер (МК) характеризуется:

    1) тактовой частотой

    , определяющей максимальное время выполнения переключения элементов в ЭВМ;

    2) разрядностью

    , т.е. максимальным числом одновременно обрабатываемых двоичных разрядов. Разрядностъ МК обозначается m/n/k/ и включает:

    m -разрядность внутренних регистров, определяет принадлежность к тому или иному классу процессоров;

    n — разрядность шины данных, определяет скорость передачи информации;

    к — разрядность шины адреса, определяет размер адресного пространства.

    Например, МП i8088 характеризуется значениями m/n/k=16/8/20;

    3) архитектурой

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

    В процессе развития архитектура МК претерпела существенные изменения. Первые МК строились по так называемой Принстонской архитектуре (

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

    В Гарвардской архитектуре

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

    Рис.2.1. Фон-Неймановская архитектура МК

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

    По другому архитектурному признаку, связанному с характером системы команд, МК делятся на:

    — CISC — процессоры;

    — RISC — процессоры;

    — VLIW — процессоры.

    МК CISC имеют так называемую полную систему команд (Complex Instruction Set Computer), т. е. большой набор разно форматных команд при использовании многих способов адресации. Архитектура CISC присуща классическим процессорам, она в силу многообразия команд (общее число команд составляет 100…200) позволяет применять эффективные методы решения задач, но, в тоже время, усложняет схему процессора и увеличивает его стоимость и в общем случае не обеспечивает

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

    · Нефиксированным значением длины команды.

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

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

    Рис. 2.2. Гарвардская архитектура МП

    МК RISC имеют сокращенную систему команд (Reduse Instruction Set Computer), из которой исключены редко применяемые команды. Общее число команд находится в пределах 50…100. Первые RISС-процессоры были разработаны в начале 1980-х годов в Стэнфордском и Калифорнийском университетах США. Простая архитектура позволяет как удешевить МК, так и поднять тактовую частоту.

    Характерные особенности МК RISC:

    · Фиксированная длина машинных инструкций (например, 32 бита) и простой формат команды.

    · Одна инструкция выполняет только одну операцию с памятью — чтение или запись. Операции вида «прочитать-изменить-записать» отсутствуют.

    · Большое количество регистров общего назначения (32 и более).

    Многие ранние RISC-МК даже не имели команд умножения и деления.

    Форматы команд, по крайней мере подавляющее их большинство, идентичны (например, все команды имеют длину 4 байта), резко уменьшено число используемых способов адресации. Данные, как правило, обрабатываются только с регистровой или непосредственной адресацией. Значительно увеличено число регистров процессора, что позволяет редко обращаться к внешней памяти, а это повышает быстродействие. Идентичность временных циклов выполнения команд позволяет проще организовывать конвеерные методы обработки информации.

    Существуют промежуточные решения между CISC и RISC – процессорами, например МК AVR фирмы Atmel, являющихся очень популярными у разработчиков в настоящее время. Они имеют Гарвардскую архитектуру и достаточно развитую, хотя и усеченную систему команд. В частности в их арсенале насчитывается до 133 инструкций, что соответствует CISC. С другой стороны большинство инструкций выполняются за один такт, в отличие от CISC МК с Принстонской архитектурой, где на выполнение одной инструкции требуется минимум 12 тактов. Поэтому, если считать что для исполнения некоторых CISC инструкций потребуется выполнение до 3 команд RISC, быстродействие МК AVR более чем в 4 раза превышает быстродействие классических МК с Принстонской архитектурой. Фактически микропроцессоры AVR стали индустриальным стандартом.

    Последними по времени (менее 10 лет назад) появились VLIW — процессоры (Very Long Instruction Word), особенность которых состоит в использовании очень длинных команд (16 байт и более). Отдельные поля длинной команды определяют несколько подлежащих реализации микроопераций, которые могу выполняться параллельно во времени в нескольких операционных устройствах процессора. Таким образом, длинная команда определяет сразу группу микроопераций. VLIW процессоры считаются перспективными для высокопроизводительных систем.

    Большое многообразие производимых МК не позволяет рассмотреть их все в рамках данного курса. Поэтому ограничимся рассмотрением наиболее популярных микропроцессоров фирмы Atmel с CISC архитектурой MCS-51 и RISC архитектурой AVR.

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

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

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

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

    CPU — процессор микроконтроллера

    Его задача сформировать адрес очередной команды, выбрать команду из памяти и организовать ее выполнение. Основные устройства CPU: — АЛУ — арифметико-логическое устройство — блок регистров общего назначения (РОН)

    АЛУ — устройство, которое выполняет арифметические и логические операции над данными, которые поступают из регистров общего назначения. РОН — регистры общего назначения (всего 32 РОН, от R0 до R31), основная задача которых — обмен данными между АЛУ и ячейками памяти.

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

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

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

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

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

    Что такое микроконтроллеры — назначение и устройство

    Смотрите также обзоры и статьи:

    • Что такое микрофонные разъемы: классификация, где применяются?
    • Как проверить транзистор недорогим мультиметром
    • Как выбрать микроскоп?

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

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

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

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

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

    Почему «микроэлектронное»? Потому что процессоры изготавливаются с помощью технологий современной микроэлектроники на основе полупроводникового кристалла. Информация в микропроцессорной системе передается электрическими импульсами. В одной микросхеме есть много всего — и цифровые порты, и аналогово-цифровые преобразователи для измерений и всякие таймеры и так далее.

    Какие бывают микроконтроллеры

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

    Какие бывают микроконтроллеры:

    • Microchip PIC,
    • Atmel AVR;
    • ATTiny26L;
    • ATMega8515 и пр.

    Atmel AVR имеют главный нюанс — выполнение каждой команды по 1 или 2 периода тактовой частоты. Им можно сделать несколько простеньких программок в «графическом программировании» Alghorytm Builder.

    Стоит обязательно упомянуть о такой подразновидности как ARDUINO, микроплата которого построена на базе контроллера ATMega168, то есть это тот самый AVR, но бутлоадер, что позволяет прошивать его через USB и программировать на упрощенном СИ, который назвали Processing.

    Стоит она немало по сравнению с обычным контроллером, код, генерируемый компилятором Processing не слишком оптимальный по объему и быстродействию. И самое главное — программирование под ардуино не дает знаний того, что творится внутри реального контроллера.

    А что же такое-то микроконтроллер (МК)? Если сказать по-простому, то фактически это целый компьютер в одной микросхеме! Просто он очень простой по характеристикам (по сравнению с современными ПК, так как есть микроконтроллеры, явно мощнее старые Спектрум и даже за и 486. И предназначен для решения задач в различных «встроенных» системах.

    Как устроен микроконтроллер

    То есть в микроконтроллере являются:

    • арифметико-логическое устройство (процессор), который выполняет вычисления и логические операции;
    • Оперативная память (RAM)
    • Память программ (Flash), что является аналогом жесткого диска ПК, в ней хранится программа-прошивка;
    • энергонезависимая память (EEPROM), туда программа может сохранять данные, которые не будут исчезать при отключении питания. Память программ также энергонезависимая, но сохранять туда данные во время работы программа не может (в принципе это возможно, но так не делают по причине ограниченного количества циклов записи-стирания (10000 для AVR))
    • Порты ввода-вывода, которые используются для связи с «внешним миром». Если в ПК порты стандартизированы и имеют каждый свое назначение, то это просто выводы, которые можно настроить программно в зависимости от пожеланий разработчика устройства на МК.
    • Другая периферия, например, аналогово-цифровой преобразователь (фактически измеряет значение напряжения на входе, выводя результат в цифровой форме), аналоговый компаратор (сравнивает напряжения аналоговых сигналов и выдает значение больше / меньше чем 1 или 0), таймеры, которые используются для отмеривания отрезков времени, задержек и других функций.
    • Также много МК имеют встроенные интерфейсы UART (последовательный порт), JTAG (протокол для отладки программы внутри контроллера), USB и другие.

    Назначение микроконтроллеров
    А теперь поговорим о область применения МК. Здесь только не придумаешь:

    1. Использование для замены сложных логических схем. Если нет требований к быстродействию, потому что все же программа, будет вычислять вашу логическую функцию может вносить задержку значительно больше, чем схема, построенная на элементах дискретной логики (микросхемы серии К155, К176 и аналогичные).
    2. Одним из примеров является, например, схема, реализующая динамическую индикацию на светодиодных семисегментных индикаторах. На логических элементах 4-х разрядная схема динамической индикации выглядит примерно так:

    3. Применение в различных роботизированных устройствах, включая беспилотные летательные аппараты;
        Например, квадрокоптер руководствуется платой «Crius MultiWii SE», которая построена на микроконтроллере AVR ATMEGA328P. Он обрабатывает сигналы с датчиков углов наклона, ускорений, давления, магнитного поля (компас), и позволяет осуществлять стабилизацию полета
    4. Просто разные интересные гаджеты, типа часов, термометров, один из примеров — это часы, представленны здесь:

    5. Блоки управления бытовой техники (стиральная машина, кухонные комбайны, микроволновые печи и т.д.), аудио техникой (регулировка с пультов д / у). также часто используются в качестве управляющих устройств в стабилизаторах напряжения. Например, релейные стабилизаторы в основном построены на микроконтроллере, который, измеряя представленную на вход АЦП напряжение, делает вывод, как следует включить обмотки трансформатора, чтобы на выходе было около 220.
    6. Различные программаторы и другие устройства, выступают преобразователями интерфейса от ПК к другим устройствам. Например, K-Line адаптер для диагностики инжекторных двигателей.

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

    Для микроконтроллеров AVR семейства Tiny характерно наличие одного или двух таймеров. Сказываются они Timer0 и Timer1. Обычно один из таймеров имеет упрощенный набор функций (Timer0), а второй — расширенный (Timer1). Если в МК только один таймер, то он в большинстве случаев имеет расширенный набор функций. Этот таймер оснащен расширенным набором функций. В микроконтроллере ATtiny 26 он 8-ми разрядный, как и Timer0. Список функций, которые может выполнять данный узел:

    1. Отсчет временных интервалов
    2. Генерация прерывания по переполнению счетчика.
    3. Аппаратная генерация Сигнал с широтно-импульсной модуляцией (ШИМ) (2 канала).
    4. Выполнение сравнения значения счетчика с предварительно заданными значениями регистров OCR1A, OCR1B и генерация соответствующих прерываний при совпадении.
    5. Возможность тактирования как от системного тактового генератора (fc) (синхронный режим), так и от внутренней схемы ФАПЧ с частотой 64 МГц (fpck). (Асинхронный режим). Конструктивно процессор выполняется в виде одной микросхемы (иногда — нескольких). Микросхема состоит из пластикового или керамического корпуса, внутри которого содержится миниатюрная полупроводниковая подложка (рис. 1). На этой подложке лазером «начертаны» все электронные схемы микропроцессора. Входы и выходы схемы на подложке соединены с металлическими выводами, расположенных по бокам или снизу корпуса микросхемы.

    Рассмотрим самый простой метод — счетчик считает в обычном режиме — циклически из-за переполнения. Задействовано также прерывания по сравнению, допустим с регистром OCR1A. В прерывании по переполнению мы будем включать выход OUT, подавая на него лог.1. В прерывании сравнения Timer1CompA будем выключать выход, подавая на него лог.0.

    Итак, мы получим последовательность импульсов, которые идут с одинаковым периодом (равным периоду переполнения счетчика, который можно вычислить как 256 / fт), где fт — частота тактирования таймера. Длина импульса будет пропорциональна значение в регистре OCR1A, чем больше значение, тем позже выключится выход, тем длиннее будет импульс и меньше пауза.

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

    Для включения аппаратного ШИМ модулятора существует соответствующий флаг в управляющих регистрах. При переходе в ШИМ режиме работа таймера несколько отличается от стандартного режима. Здесь по умолчанию таймер считает не до переполнения, а до значения, что записано в регистре OCR1С. При достижении равенства значений TCNT1 и OCR1C счетчик сбрасывается в 0. Это позволяет точно устанавливать частоту импульсов, она здесь зависит не только от частоты тактирования, а и от значения OCR1C.

    Наличие двух регистров сравнения OCR1A и OCR1B позволяет получить два канала ШИМ модулятора (но с одинаковой частотой). То есть можно легко управлять двумя однотипными нагрузками, например, независимо изменять яркость двух светодиодных ламп.

    Следует заметить, что значение регистров OCR1A и OCR1B могут лежать в диапазоне от 0 до значения OCR1C. Конечно, никто не запрещает записать туда значение которых превышает регистр OCR1C, но в таком случае мы будем иметь на выходе сигнал с постоянным уровнем а не импульсную последовательность, так как значение TCNT1 никогда не достигнет условия равенства с регистром сравнения, согласно сигнал на выходе не будет меняться.

    ШИМ модулятор в МК ATTiny 26 имеет как прямые выходы OC1A, OC1B так и инверсные OC1A, OC1B. При том уровне на инверсных выходах в ШИМ режиме изменяются не одновременно с изменением уровней прямых выходов. Переход из 0 в 1 инверсного импульса происходит на один период тактовой частоты таймера позже, чем переход из 1 в 0 на прямом выходе, а обратный переход из 1 в 0 на инверсном выходе происходит наоборот раньше на период чем переход из 0 в 1 на прямом. Включение прямых и инверсных выходов, а также порядок изменения сигнала на них можно изменять с помощью управляющих регистров. Стандартное формирования ШИМ сигнала таймером ATTiny 26 показано на рисунке: Следует отметить, что значение в регистрах OCR1A и OCR1B меняются в момент обнуления счетчика. Это реализовано аппаратно с помощью так называемых буферных регистров, то есть программа может изменить значение в любой момент времени, но запись его в регистры сравнения произойдет в момент перехода счетчика через 0, до этого момента они хранятся в буфере.

    Выводы

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

    Опубликовано: 2020-06-30 Обновлено: 2021-08-30

    Автор: Магазин Electronoff

    ПОДХОДЯЩИЕ ТОВАРЫ

    • Микроконтроллер STM8L051F3P6, корпус TSSOP-20 1 отзыв

      Купить

      165 грн

      Код 15094

      в наличии

    • Микроконтроллер AT49LV8011-90TC, корпус TSOP-48 2 отзыва

      Купить

      96 грн

      Код 15092

      в наличии

    • Микроконтроллер с прошивкой для модуля MasterKit NM8036 0 отзывов

      648 грн

      Код 5364

      отсутствует

    • Микроконтроллер с прошивкой MasterKit для модуля MP707 0 отзывов

      402 грн

      Код 5385

      отсутствует

    • Микроконтроллер с прошивкой для модуля MasterKit NT801D 0 отзывов

      306 грн

      Код 5502

      отсутствует

    Поделиться в соцсетях

    Комментарии к статье «Что такое микроконтроллеры — назначение и устройство»

    • Оставьте свой комментарий к статье…

    Оставьте свой комментарий

    Ошибка

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

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

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

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

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

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

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

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

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

    WWW

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

    Вторым плюсом можно указать встроенные независимые (от тактового генератора) счетчики. Благодаря этому факту семейство зарекомендовало себя в качестве «мозгов» для частотомеров. Пара таких контроллеров лежит у меня в мастерской на черный день. Из минусов можно выделить только высокую стоимость оригинальных программаторов, которые зовутся PICkit.

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

    Продолжение доступно только участникам

    Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

    Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

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

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

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

    • 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. И необязательно иметь профильное высшее образование. Сейчас на просторах интернета много доступной информации, изучая которую можно разобраться в устройстве микроконтроллеров и научиться их программировать.

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

    Данный раздел посвящен такой современной теме, как микроконтроллеры. В настоящее время без микроконтроллеров, не обходится практически ни одно современное устройство. Если у вас возникли какие-либо вопросы по теме микроконтроллеров, их программированию и т.п., то вы можете посетить форумы: МК для начинающих, AVR-форум, PIC-форум, Arduino и Raspberry Pi, STM32/ARM-форум, программаторы, периферия, ПЛИС, где на ваши вопросы постараются ответить грамотные специалисты и участники форума.

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

    • Микроконтроллеры AVR для начинающих. Часть 1 — знакомство с семейством AVR
    • Микроконтроллеры AVR для начинающих. Часть 2 — программаторы и прошивка. Работа с PonyProg
    • Микроконтроллеры AVR для начинающих. Часть 3 — работа с CodeVision AVR
    • Книга по программированию микроконтроллеров AVR
    • Видеокурс (8 уроков, плюс задачи) по AVR с авторской темой поддержки на форуме
    • Обучающее видео по микроконтроллерам для начинающих
    • AVR на C — просто?
    • AVR на C — просто? Часть 2
    • AVR на C — просто? Часть 3
    • AVR на C — просто? Часть 4
    • Фьюзы микроконтроллеров AVR – как и с чем их едят
    • Учимся создавать устройства на микроконтроллерах: «светофор»
    • Учимся создавать устройства на микроконтроллерах: «индикатор заряда аккумулятора»
    • Идеальная программа на С для МК, попробуем написать
    • Идеальная программа на С для МК — продолжение
    • Написание программ на С в Code Vision AVR для контроллеров не имеющих ОЗУ
    • Timer/Counter for AVR для начинающих
    • ШИМ на микроконтроллере Attiny13
    • ШИМ контроллер на МК Attiny2313 (управление вентилятором)
    • ШИМ-регулятор на микроконтроллере ATmega8515
    • Регулятор яркости (ШИМ) для светодиодного драйвера или велофары
    • PWM или ШИМ (широтно импульсная модуляция) на AVR для новичков. Часть 1
    • PWM или ШИМ на AVR для новичков. Часть 2 — программный ШИМ
    • Программный ШИМ на STM8L
    • Работы MCP3421 АЦП 18 бит с микроконтроллером ATmega32
    • Отладочная плата на AT89S52 или изучаем МК с нуля
    • Счётчик с памятью на Attiny2313
    • Управление 595 сдвиговыми регистрами при помощи AVR по SPI
    • Включение и выключение приборов одной кнопкой
    • Включение и выключение устройств одной кнопкой
    • Подключение светодиодов к AVR
    • mikroPascal for AVR. Урок 1. Введение
    • mikroPascal for AVR. Урок 2. АЦП, UART и отображение
    • mikroPascal for AVR. Урок 3. Еще раз UART а также немного о прерываниях
    • mikroPascal for AVR. Урок 4. Прерывания, прерывания и еще раз прерывания. Таймеры
    • mikroPascal for AVR. Урок 5. Использование OneWire. Встроенная библиотека
    • mikroPascal for AVR. Урок 6. Снова работа с OneWire. Расширенная библиотека
    • mikroPascal for AVR. Урок 7. Аппаратный ШИМ
    • mikroPascal for AVR. Урок 8. Программный ШИМ
    • Урок по PWM (ШИМ) для mikroPascal for AVR
    • Урок по mikropascal for AVR.I2C
    • AvrStudio 4. Библиотека для AVR. Модуль для I2C или TWI
    • Algorithm Builder. Урок 1 — Введение
    • Algorithm Builder. Урок 2 — О создании первой программы
    • Использование интерфейса USI для подключения периферии I2C к Attiny2313
    • Работа с I2C и SPI на примере часов реального времени PCA2129T
    • Несколько полезных утилит для микроконтроллеров
    • Библиотека для управления несколькими 1Wire устройствами при топологии точка-точка
    • Расширение количества портов микроконтролера PIC18 через SPI-интерфейс
    • AvrStudio 4. CMSIS для AVR. Структура для GPIO
    • PSoC. Глава 0. Введение. Первый пример
    • PSoC. Глава 1. ADC
    • PSoC. Глава 2. UART
    • PSoC. Глава 3. DAC и UART RX линия
    • PSoC. Глава 4. Таймеры и глобальные прерывания
    • Начинаем работать с FPGA или ПЛИС это просто. Часть 1
    • Начинаем работать с FPGA или ПЛИС это просто. Часть 2
    • Xilinx шаблон модуля на VHDL и TestBench для тестирования
    • Внутреннее устройство ПЛИС (FPGA)
    • FPGA. Просто о сложном — Философия написания конфигураций для ПЛИС
    • FPGA. Просто о сложном — Создание проекта в Quartus II. Сравнение VHDL и Verilog
    • QuickLogic QuickFeather Development Kits
    • Начинаем работать с микроконтроллерами MSP430 от фирмы Texas Instruments
    • Проект виртуального СОМ порта для отладочной платы STM32H107
    • SYS/BIOS: операционная система реального времени для микроконтроллеров MSP430

    Уроки по STM32, ARM:

    • IAR и STM32 CORTEX M0. Часть 0x00 (пустой треп и отмазки)
    • IAR и STM32 CORTEX M0. Часть 0x01. Подготовка платформы IAR
    • IAR и STM32 CORTEX M0. Часть 0x02, Начинаем пайку!
    • IAR и STM32 CORTEX M0. Часть 0x03, Программируем без программатора
    • IAR и STM32 CORTEX M0. Часть 0x04 Автоматизация прошивки IAR
    • IAR и STM32 CORTEX M0. Часть 0x05, GPIO — входит и выходит…
    • IAR и STM32 CORTEX M0. Часть 0x06, Таймеры, ШИМ, прерывания
    • ARM – это просто (часть 1)
    • ARM – это просто (часть 2)
    • ARM – это просто (часть 3)
    • STM8. Урок 1. Настройки среды ST Visual Develop
    • STM8. Урок 2. Тактирование контроллера
    • STM8. Урок 3. Описание GPIO и библиотека SPL
    • STM8. Урок 4. Настройка таймера 4. Прерывания таймера
    • STM8. Урок 5. Быстрая настройка среды STVD для STM8S и STM8L
    • STM8. Урок 6. Структура проекта для STM8L и STM8S
    • STM8. Урок 7. Выбор и настройка модели памяти
    • STM8. Урок 8. Ассемблерный вставки в Cosmic. Сдвиги в Си
    • STM8. Cosmic ошибка компилятора «FlexLM No such feature exists»
    • STM32 старт с CMSIS
    • STM32 простой и быстрый старт с CooCox CoIDE
    • ARM. STM32 быстрый старт
    • STM32. Урок 1. Выбор отладочной платы
    • STM32. Урок 2. Порты ввода/вывода
    • STM32. Урок 3. UART
    • STM32. Урок 4. Basic timers
    • STM32. Урок 5. Подключение LCD дисплея WH1602
    • STM32F4. Урок 1 — управление светодиодами
    • STM32F4. Урок 2 — нажатие кнопки
    • STM32F4. Урок 3 — цифровые выходы
    • STM32F4. Урок 4 — цифровые входы
    • STM32F4. Урок 5 — работа с АЦП
    • STM32F4. Урок 6 — работа с дисплеем ST7783
    • STM32F4. Урок 7 — Графическая библиотека для дисплея ST7783
    • STM32F4. Урок 8 — Библиотека шрифтов для дисплея ST7783
    • STM32F4. Урок 9 — Тачскрин ADS7843
    • STM32F4. Урок 10 — Программные таймер и счетчик
    • STM32F4. Урок 11 — Генератор случайных чисел
    • STM32F4. Урок 12 — UART
    • STM32F4. Урок 13 — Работа с SD-картой
    • STM32F4. Урок 14 — АЦП с использованием DMA
    • STM32F4. Урок 15 — Низкоуровневый SPI
    • STM32F4. Урок 16 — Работа с ЦАП MAX5250 по SPI
    • STM32F4. Урок 17 — Управление LIS302DL через SPI
    • STM32F4. Урок 18 — Низкоуровневый I2C
    • STM32F4. Урок 19 — Работа с EEprom M24C02 по I2C
    • STM32F4. Урок 20 — Отображение изображения с SD-карты
    • STM32F4. Урок 21 — АЦП в групповом режиме
    • STM32F4. Урок 22 — Системная проверка
    • STM32F4. Урок 23 — Работа с ЦАП
    • STM32F4. Урок 24 — Работа с ЦАП через DMA
    • STM32F4. Урок 25 — Работа с ШИМ
    • STM32F4. Урок 26 — Передача данных АЦП на ПК
    • STM32F4. Урок 27 — Подключение камеры OV9655
    • STM32F4. Урок 28 — Работа с внешними прерываниями
    • STM32F4. Урок 29 — Работа с PS2-клавиатурой
    • STM32F4. Урок 30 — Работа с PS2-мышкой
    • STM32F4. Урок 31 — Использование USB-OTG как виртуальный COM-порт
    • STM32F4. Урок 32 — Использование USB-OTG в режиме MSC_HOST
    • STM32F4. Урок 33 — Работа с дисплеем SSD1289
    • STM32F4. Урок 34 — Подключение символьного LCD-дисплея 16х2 (HD44780)
    • USB FLASH. Введение и часть 1 — Работа с AT45DB161D
    • USB FLASH. Часть 2 — Периферия USB в STM32F0
    • USB FLASH. Часть 3 — Заключительная. Протокол SCSI
    • FAT32 на STM32
    • Управление текстовыми командами (USART на STM32)
    • Обработка нажатия пользовательской кнопки, используя внешние прерывания
    • Вариант использования упакованного формата времени в STM32
    • Подключение матричной клавиатуры к STM32F4Discovery
    • Библиотека матричной клавиатуры для STM32F4 Discovery
    • Подключение дисплея HD44780 к STM32 в CubeIDE (HAL)
    • Библиотека HD44780 4 строки по 20 символов для STM32
    • Зажигаем на TLC5940
    • IAR EWARM. STM32F030F4P6. Микроконтроллер отсутствует в списке…
    • STM32F030. Не блокирующая реализация I2C
    • Универсальная плата на STM32F405
    • Nucleo-F411RE USB-ADC
    • Работаем с LabVIEW на примере STM32

    Уроки по AVR (BASCOM-AVR):

    • Урок 1. Что такое AVR микроконтроллер?
    • Урок 2. Программатор AVR микроконтроллеров
    • Урок 3. Отладочная плата для AVR микроконтроллера Attiy13
    • Урок 4. Порты вывода в микроконтроллере Attiy13
    • Урок 5. Программирование AVR микроконтроллеров
    • Урок 6. Первая конструкция на микроконтроллере AVR
    • Урок 7. Работа с ЖК индикатором на контроллере HD44780 и его аналогах
    • Урок 8. Ввод информации в МК. Подключение кнопки к МК BASCOM-AVR
    • Урок 9. Работа с АЦП на примере ATtiny13 в BASCOM-AVR
    • Урок 10. Работа с UART интерфейсом
    • Урок 11. Работаем с DS1307 микросхемой часов реального времени
    • Урок 12. Работа с компьютерной PS/2 клавиатурой в BASCOM-AVR
    • Урок 13. Аппаратная ШИМ на микроконтроллере
    • Урок 14. Программный UART в BASCOM-AVR
    • Урок 15. Работа с датчиком температуры DS18B20 в BASCOM-AVR
    • Урок 16. Работа с энкодером в BASCOM-AVR
    • Урок 17. Использование бутлоадера в BASCOM-AVR
    • Урок 18. Работа с дисплеем от Nokia 3310
    • Урок 19. Работа с ультразвуковым датчиком расстояния HC-SR04 в BASCOM-AVR
    • Урок 20. Подключение семисегментного индикатора по трём проводам (74HC595)
    • Урок 21. BASCOM-AVR и Arduino

    Схемы и устройства на микроконтроллерах:

    • Мини цифровая паяльная станция
    • Цифровая паяльная станция своими руками DSS-1
    • Цифровая паяльная станция 4 в 1 (DSS-2.1)
    • Станция для монтажа и демонтажа BGA и других SMD радио компонентов
    • Зарядное устройство-анализатор NiMh/NiCd аккумуляторов
    • Интеллектуальное зарядное устройство NiMh/NiCd аккумуляторов
    • Тестер АА аккумуляторов
    • Индикатор состояния заряда 12В аккумулятора
    • Два микроконтроллерных регулятора мощности
    • Автосвет — управление внешними световыми приборами авто
    • Бортовой тахометр на PIC16C84
    • Велокомпьютер на PIC16F628A и 4-разрядном LED индикаторе
    • Велокомпьютер своими руками
    • Timelapse выращивания микрозелени на Onion Omega 2+
    • Wi-Fi модули ESP8266 и AVR микроконтроллер
    • Связь МК при помощи RF модулей
    • Радиосвязь между двумя микроконтроллерами с применением RF-модулей
    • Радиореле на модуле NRF24L01
    • Интерфейс связи между GSM модулем SIM300 и микроконтроллером AVR ATmega32
    • Отправка и получение SMS, используя GSM модуль SIM300
    • Как связать микроконтроллер и компьютер по каналу RS-232
    • Радиоуправление тремя нагрузками на «RF модулях» с применением микроконтроллеров
    • Устройство радиоуправления на 12 команд
    • Устройство радиоуправления (радиоключ) на 3 команды
    • Устройство ДУ на 12 команд повышенной мощности
    • Электронные весы на базе HX711
    • Ультразвуковой контроль уровня воды на микроконтроллере 8051
    • Ультразвуковой дальномер
    • Мини радар, измеритель скорости
    • Связь по Bluetooth между STM32 и Android
    • GPS приемник своими руками на модуле EB-500 и AVR
    • Портативный GPS Data Logger
    • Акселерометр ADXL345
    • Акселерометр и гироскоп MPU6050
    • Тестер концентрации алкогольных паров на AVR
    • Простой электронный компас
    • Простейший ландромат
    • Интеллектуальный ландромат
    • Один купюроприемник и четыре аттракциона
    • Простой торговый автомат своими руками
    • Практическая реализация многоканального фазового регулятора на Attiny2313
    • Сопряжение с компьютером цифрового мультиметра серии 830
    • Электронный кодовый замок на ATmega8
    • Кодовый замок на PIC16F628A
    • Индикация места ключа (Часть1)
    • Индикация места ключа (Часть 2)
    • Кодовый замок
    • Переговорное устройство и хаб
    • RFID считыватель транспондеров TIRIS от Texas Instruments
    • Считыватель электронных ключей iButton (DS1990) на МК ATtiny2313
    • Электронный замок с ключами iButton
    • Охранное устройство с ключами iButton и датчиком удара
    • Датчик движения на PIC-микроконтроллере с применением PIR-сенсора
    • Охранное устройство с оповещением по телефонной линии
    • Охранное устройство «Лазерная растяжка»
    • Устройство многокомандного дистанционного управления для проведения пиротехнических шоу
    • Модуль автономного сброса
    • 4-х канальный контроллер нагрузок с управлением по UART
    • Контроллер 8 нагрузок на ATtiny13 с управлением по UART
    • USB устройство ввода-вывода на PIC18F4550 с 16 цифровыми I/O и 8 аналоговыми входами
    • Дата-логгер (регистратор аналоговых данных)
    • Устройство ввода вывода
    • USB Device
    • COM-терминал
    • Подключение и запуск мотора от FDD (JCM5044)
    • Простой тестер униполярных шаговых двигателей на ATtiny2313 и ULN2004
    • Микрошаговый драйвер из старого принтера на микроконтроллере ATmega32
    • Управление двумя шаговыми двигателями по UART
    • Датчик оборотов двигателя для контроллера
    • Отладочная плата для устройств на МК Atmega8/48/88/168/328
    • Отладочная плата для микроконтроллеров ATtiny13/15
    • Универсальная основа для контроллера с графическим интерфейсом на ATmega8 c OLED дисплеем
    • Простая отладочная плата на ATTINY2313
    • Отладочная плата AT90USB162
    • PIC16F877A — Отладочная плата
    • Набор для разработки на основе микроконтроллера PIC18F4520
    • Универсальная отладочная плата для AVR
    • Контроль 15-ти контактов одним входом PIC-микроконтроллера
    • Дисплейно-клавиатурный драйвер TM1638
    • Подключаем PS/2 клавиатуру к PIC
    • Подключение PS/2, AT клавиатуры к микроконтроллеру Attiny2313
    • Интерфейсная плата для связи клавиатуры PS2 с LCD-дисплеем на МК PICAXE
    • Клавиатурный датчик кода Морзе (PS/2 и PIC16F628A)
    • ABCom — компьютер на ATmega1284P
    • Электронные аксессуары для игры S.T.A.L.K.E.R.
    • Ну, погоди! — игра 80-ых
    • Электронная игра «Светодиодные наперстки»
    • Экономичные игральные кости на PIC12F629
    • Электронная игральная кость на ATtiny 2313
    • Игровая консоль на STM32 и LCD Nokia 5110
    • Игровая видеоконсоль на AVR AVGA
    • Контроллер кнопок для игры Brein Ring v2.0
    • USB шутка
    • USB шутка 2
    • Игра «разминируй бомбу»
    • Руль, джойстик и геймпад с обратной связью (Force Feedback)
    • Микроконтроллерный вирус и антивирус
    • USB Password Keeper
    • Почему одни микроконтроллеры надежнее других
    • Переходник ATmega8 TQFP в DIP
    • Вспомогательные модули для отладочных плат
    • Разгон ATmega328 (30 МГц)

    Освещение, LED, ЖКИ и LCD:

    • Устройство мультимедиа (Multimedia device)
    • Простой тачскрин (touch screen) интерфейс на PIC
    • Сенсорный модуль на AVR
    • Простой тач-сенсор на AVR
    • Работаем с ЖКИ. Часть 1
    • Работаем с ЖКИ. Часть 2
    • LCD WH1602B компании Winstar
    • Обзор IPS дисплея 80х160 точек с контроллером ST7735
    • Обзор дисплея 128х160 точек с контроллером ST7735
    • Подключение и использование LCD Nokia 3310 (5110) к AVR-микроконтроллеру
    • Подключение дисплея от принтера HP LaserJet P2055 к микроконтроллеру
    • Подключение дисплея от кассового аппарата Меркурий 130К к микроконтроллеру
    • Подключение дисплея от кассового аппарата Элвес-Микро к микроконтроллеру
    • Генератор отрицательного напряжения для дисплея 1602 и подобных
    • Небольшой тест OLED дисплея Winstar WEH001602ALPP5N
    • Подключаем LCD от Siemens C75 и ME75 к STM32
    • Работа с дисплеем LPH8731-3C от телефонов Siemens
    • Особенности работы с дисплеем LPH9157-2
    • Библиотека для дисплея LPH9135
    • Библиотека для символьного дисплея на базе HD44780
    • TFT дисплей 3.2 с открытым исходным кодом
    • Подключаем дисплей Nokia1616 к BASCOM-AVR
    • Подключение графического ЖК-дисплея 128х64 KS0108 к AT89C52
    • Переходник ЖКИ HD44780 в UART
    • Устройство отображения информации на LCD-дисплее 16×2 с контролером HD44780
    • Электронная метка с ЖКИ на микроконтроллере
    • Подключение LCD-дисплея ST7565 к микроконтроллеру MSP430
    • Подключение монохромного дисплея на ST7565 к STM32
    • SSD1331 RGB OLED дисплей
    • Волоконно-оптическая светодиодная лампа на ESP
    • Программная реализация интерфейса управления TM1640 на ATmega
    • Советчик в кармане
    • Нет ЖКИ-драйвера – есть калькулятор!
    • Электронная читалка своими руками на микроконтроллере ATmega32
    • Подключение семисегментного индикатора по UART на ATtiny13
    • Динамическая индикация на светодиодных 7-сегментных индикаторах с программной регулировкой яркости
    • Еще раз о динамической индикации на LED-индикаторах
    • Подключение 4-разрядного LED индикатора всего к 4 портам микроконтроллера
    • Управление RGB-прожекторами
    • Простая мигалка на RGB светодиоде с использованием МК ATtiny2313 (ATtiny13)
    • Управление светодиодами WS2813 с адресацией с помощью ATtiny
    • Управление RGB светодиодом
    • RGB подсветка для чайника
    • Бегущая строка на PIC16F877 на 20 матрицах 8х8 или 160х8 пикселей
    • Бегущая строка 8×80 LED на PIC16F628
    • Бегущая строка 8×80 с набором текста на клавиатуре (PIC16F628)
    • Бегущая строка на PIC контроллере
    • Бегущая строка на ATmega168
    • Контроллер светодиодной ленты на ATtiny13a
    • Светодиодная гирлянда на микроконтроллере
    • Простая светодиодная гирлянда на МК Attiny13
    • POV — Светодиодная подсветка велосипедных колес на MSP430
    • Бегущая строка с механической разверткой
    • DMX512 Контроллер на 40 каналов
    • PixelPOI
    • Светодиодная матрица – МОДЖЕТ
    • Эффект Fade Out для LED при помощи ШИМ (PIC)
    • 3-х канальный ШИМ регулятор на Attiny2313
    • Многоканальный фазовый регулятор на ATtiny2313
    • ШИМ-регулятор на AVR
    • Регулятор яркости подсветки на датчике BH1750
    • Светофор своими руками
    • Устройство имитации работы светофора на микроконтроллере PIC16F84A
    • Светофор на PIC12F629 с «неправильной» программой
    • Светофор на ATtiny13
    • Имитация светофора
    • Управление светодиодом на МК Attiny13
    • Эффект горящей свечи на ATTiny
    • АЦП на TINY13 и 16 светодиодов
    • Новогодняя лампа-ночник из RGB-светодиодов на плате LaunchPad MSP-EXP430, управляемая ИК-пультом
    • Ночник на микроконтроллере
    • ИК пульт на MSP430 Lanchpad
    • Доработка китайского налобного фонарика
    • LED светильник с ШИМ и таймером
    • Контроллер люстры с 6 лампами
    • Адаптер двухканального светового шнура
    • Контроллер двухцветного светового шнура Flexilight
    • Прокачай свой монитор. Собери интерактивную фоновую подсветку

    Аудио:

    • Анализатор свиста на Cortex-M4 или включение нагрузки по свистку
    • Передача звука по радиоканалу с использованием кодека Speex
    • Визуализация аудио сигнала на Nokia 3310 LCD
    • Аудио анализатор спектра на Atmega32
    • Простой SD аудио-плеер
    • MMC/SD WAV стерео плеер на ATmega32 с пультом управления от ТВ
    • SD WAV плеер с управлением по UART
    • Воспроизведение видео на цветном ЖК-дисплее Nokia с помощью 8 битного AVR микроконтроллера Atmega32
    • Вторая жизнь Creative Sound Blaster
    • MP3 плеер своими руками
    • Воспроизведение нот на PIC
    • Воспроизведение звука на PIC
    • Пианино на микроконтроллере PIC18F4550
    • Эффект эхо (echo) на микроконтроллере Atmega32
    • MMC/SD диктофон на PIC16F877A
    • Музыкальный звонок с тайной кнопкой
    • Музыкальный звонок на МК Attiny13
    • Музыкальный звонок с возможностью замены мелодий без использования программатора
    • Музыкальный звонок, который умеет всё (Z80)
    • Дверной звонок

    Часы и таймеры:

    • Говорилка mp3. Ламповые часы
    • Часы на газоразрядных индикаторах
    • Часы на газоразрядных индикаторах V2.0
    • Nixie Clock «King Size»
    • Электронные часы-будильник на газоразрядных индикаторах и МК
    • ИВ-11 — часики с эффектами
    • Часы на газоразрядных индикаторах с ATmega8
    • Часы в стиле стимпанк на газоразрядных индикаторах
    • Часы на ВЛИ индикаторе ИВ-18
    • Часы на индикаторе ИВ-18
    • Правильные часы на ИВ-18
    • Радио, о радио! А так же ИН-18
    • ИВ-9. Часы, эффекты, боль и кое что еще
    • Делаем светодиодные часы CxemWatch-v1 на ATmega328p
    • Наручные часы на ГРИ (по проекту Bars)
    • Многофункциональные часы-термостат с дистанционным управлением
    • Музыкальные часы с термометрами на PIC16F873A
    • Шахматные часы — сувенир
    • Многофункциональные наручные LED часы
    • Говорящие часы
    • Часы/календарь на МК ATTiny2313 и RTC DS1305
    • Часы ATtiny 2313, DS1302, TM1637 на ассемблере
    • Часы на DS3231 и AVR-микроконтроллере
    • Часы на PCA21125 и AVR-микроконтроллере
    • Часы – суточный таймер с коррекцией хода
    • Часы на кварцевом резонаторе 4МГц
    • Часы на PIC16F877A
    • Часы на PIC16F628A и FYQ3641A
    • Компактные часы со светодиодными индикаторами
    • Часы на PIC-микроконтроллере
    • Часы с автоматической регулировкой яркости, сенсорными кнопками и т.д.
    • Часы на Attiny2313
    • LED часы на Attiny2313 и DS1307
    • Часы на ATtiny2313, DS1307 и ЖКИ индикаторе 8*2
    • Часы с несколькими функциями на AVR
    • Будильник радио
    • Часы-будильник с термометром
    • Часы — календарь
    • Говорящие часы — термометр с календарем
    • Цифровые часы на RTC DS12C887 и 8051
    • RTC на STM8L-Discovery
    • Библиотека для работы с шиной I2C и с часами реального времени PCF8583
    • Часы на PCF8523 и AVR-микроконтроллере
    • Часы Detonator Clock
    • Двоичные часики на ATmega8
    • Простые бинарные часы
    • USB счетчик посещений на микроконтроллере AVR ATtiny25
    • Система автоматической подачи звонков на AVR
    • Реле времени
    • Таймер 0…9999 секунд для засветки фоторезиста на ATtiny13
    • Бытовой таймер на PIC-микроконтроллере
    • Простой таймер на PIC16F84A
    • Таймер на PIC
    • Таймер обратного отсчёта на МК Attiny2313
    • Таймер обратного отсчета на МК ATmega8 + ЖКИ 8х2 или 16х1
    • Таймер обратного отсчета на 0-9999 секунд на PIC12F683
    • Многофункциональный циклический таймер
    • Устанавливаем в корпус многофункциональный циклический таймер

    Измерение температуры, термостаты и терморегуляторы на микроконтроллерах:

    • Метеостанция на STM32
    • Комнатная метеостанция
    • WiFi ESP8266 — новый шаг в проектировании домашних устройств с беспроводным интерфейсом
    • Обмен данными датчика BME280 c ПК
    • Беспроводной измеритель температуры и влажности с USB-интерфейсом
    • Измеритель влажности и температуры
    • Датчик температуры и относительной влажности с адаптивной регулировкой яркости индикатора
    • Простой измеритель температуры
    • LCD-термометр
    • USB термометр
    • Bluetooth термометр
    • Bluetooth термометр на AVR (Arduino)
    • Термометр на PIC
    • Термометр на датчике SE97B и AVR-микроконтроллере
    • Цифровой термометр на датчике LM75AD
    • Подключение датчика температуры окружающей среды DS18B20 к микроконтроллеру
    • Термометр на DS18B20
    • Термореле с цифровым датчиком температуры
    • Сдвоенный цифровой термометр на ATmega8 и DS18B20
    • Простой термометр для дома с двумя датчиками DS18B20
    • Термометр на МК Attiny13 и датчике DS18B20
    • Необычный термометр на ATtiny13 и DS18B20
    • Декоративный термометр на микроконтроллере
    • Термометр на AT89C2051 и DS18B20
    • Универсальный двухканальный термометр на AVR
    • Многоточечный термометр
    • Термометр на STM8L-Discovery
    • XControl
    • LAN Control — система удаленного управления через локальную сеть, интернет и ПДУ
    • Электронный термостат и сигнализатор температуры на PIC16C84
    • Термостат на PIC16F877A и LCD NOKIA 3310
    • Простой терморегулятор
    • Терморегулятор с предварительной установкой 4-х температур контроля для термометра помещения
    • Терморегулятор на PIC
    • Программируемый термостабилизатор
    • Барометр на AVR
    • Часы, термометр, термостат, будильник, система удалённого управления
    • Часы + термометр на PIC16F628A и LED индикаторах

    Измерения, генераторы:

    • 30В вольтметр на MSP430
    • Многоканальный дистанционный вольтметр
    • Малогабаритный частотомер-цифровая шкала до 200 МГц с ЖКИ дисплеем
    • Частотомер до 16 МГц на микроконтроллере
    • Самодельный осциллограф на микроконтроллере AVR
    • Осциллографический пробник на ATmega8
    • Цифровой LCD-осциллограф
    • USB-осциллограф
    • Генератор сигналов на МК ATtiny2313
    • Функциональный DDS-генератор
    • DDS генератор
    • Определитель цвета
    • Цифровой дозиметр Гамма_1

    Программаторы, восстановление МК, прошивка:

    • Клон AVR JTAG ICE
    • Китайский JTAG ICE для AVR и установка драйверов
    • Клон PICkit 2
    • PURPIC, переносной клон PICkit2
    • Простой USB программатор PIC
    • Простейший программатор для PIC
    • Простой программатор PIC-контроллеров с использованием PicPgm
    • Программатор для PIC-контроллеров
    • Сохранение калибровочной константы для контроллеров PIC 12F629 и 12F675
    • Как сделать простой программатор для PIC-ов и AVR-ов
    • Программатор для микроконтроллеров AT89C51/52/55
    • Простой программатор
    • USBasp — USB программатор для микроконтроллеров Atmel AVR
    • Доработка программатора USBasp
    • VUSBTiny программатор
    • USB программатор параллельных Flash и EEPROM микросхем памяти
    • USB программатор параллельных Flash и EEPROM микросхем памяти. Продолжение
    • Универсальный USB программатор для МК AVR, I2C EEPROM и SPI Flash 25ХХ
    • Универсальный USB-программатор
    • Адаптер ZIF SOIC для программатора
    • Универсальный адаптер-программатор
    • Универсальный адаптер для Atmel STK500
    • Компактный программатор USBTiny-MkII SLIM (клон AVRISP-MKII)
    • Программатор ATtiny84 USBtiny AVR ISP
    • AVR-программатор ULTI-SP
    • USB программатор микроконтроллеров AVR и AT89S, совместимый с AVR910
    • Программатор Громова для ATmega8A-PU
    • AVR-программатор на PIC
    • Универсальный программатор
    • Исправление фузов AVR
    • Устройство оживления микроконтроллеров Atmel
    • SinaProg + ATmega328P исправляем прошивку фьюзов
    • Программатор для КР573РФ5
    • Модуль оптронной изоляции для внутрисхемной отладки и SPI-программаторов
    • Внутрисхемное программирование и отладка микроконтроллеров Microchip
    • Программирование микроконтроллеров AVR в Ubuntu
    • Программирование микроконтроллеров AVR в Ubuntu-2 (GUI)
    • STM32F4DISCOVERY: Работа с ARM Cortex M4
    Рейтинг
    ( 1 оценка, среднее 4 из 5 )
    Понравилась статья? Поделиться с друзьями:
    Для любых предложений по сайту: [email protected]