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

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

Многообразие применений

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

Что это такое?

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

ЦПУ

Тип используемого в микроконтроллере процессора зависит от конкретного приложения. Доступны варианты от простых 4-, 8- или 16-разрядных до более сложных 32- или 64-битных. Что касается памяти, то могут использоваться ОЗУ, флэш-память, EPROM или EEPROM. Как правило, микроконтроллеры рассчитаны на использование без дополнительных вычислительных компонентов, поскольку они спроектированы с достаточным объемом встроенной памяти, а также имеют контакты для общих операций ввода-вывода, чтобы напрямую взаимодействовать с датчиками и другими компонентами.

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

Программирование

Процессоры микроконтроллеров могут базироваться на расширенном (CISC) или сокращенном наборе команд (RISC). CISC обычно включает около 80 инструкций (RISC - около 30), а также большее число режимов адресации - 12-24 по сравнению с 3-5 у RISC. Хотя расширенный набор команд проще реализовать и он эффективнее использует память, его производительность ниже из-за большего количества тактовых циклов, необходимых для их выполнения. RISC-процессоры уделяют больше внимания программному обеспечению и более производительны.

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

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

Определяющие характеристики

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

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

  • Микроконтроллеры - это маломощные чипы. Их мощность при питании от батареи составляет около 50 мВт. Настольный компьютер почти всегда подключен к розетке и потребляет 50 Вт и больше.
  • Микроконтроллер отличается наличием специального блока ввода и часто (но не всегда) небольшого светодиода или ЖК-дисплея для вывода. Принимает входные данные от устройства, которым он управляет, посылая сигналы различным его компонентам. Например, микроконтроллер телевизора получает сигналы с ПДУ и отображает вывод на экране телевизора. Он управляет селектором каналов, динамиками и некоторыми настройками изображения, такими как контраст и яркость. Контроллер автомобильного двигателя принимает входные сигналы от датчиков кислорода и детонации, регулирует создание топливной смеси и синхронизирует работу свечей зажигания. В микроволновой печи он принимает ввод с клавиатуры, отображает вывод на ЖК-дисплее и управляет реле включения и отключения СВЧ-генератора.
  • Микроконтроллеры - это зачастую небольшие и недорогие устройства. Компоненты выбираются таким образом, чтобы минимизировать размеры и максимально удешевить производство.
  • Часто, но не всегда, работа микроконтроллера осуществляется в неблагоприятных условиях. Например, устройство управления двигателем автомобиля должно работать в экстремальных температурах, при которых обычный компьютер вообще не может функционировать. На севере микроконтроллер автомобиля должен функционировать при температуре -34 °C, а на юге - при 49 °C. В моторном отсеке температура может достигать 65-80 °C. С другой стороны, микроконтроллер, встроенный в проигрыватель Blu-ray, вообще не должен быть особо прочным.

Требования к ЦПУ

Процессоры, используемые в микроконтроллерах, могут сильно различаться. Например, в сотовых телефонах применялся 8-разрядный микропроцессор Z-80, разработанный в 1970-х годах и первоначально использовавшийся в домашних компьютерах. GPS-навигатор Garmin оборудовался маломощной версией Intel 80386, которую также первоначально устанавливали в настольных ПК.

Большая часть бытовой техники, такой как микроволновые печи, нетребовательна к процессорам, но их цена является важным фактором. В этих случаях производители обращаются к специализированным микроконтроллерам, разработанным из недорогих, небольших и маломощных ЦПУ. Motorola 6811 и Intel 8051 являются хорошими примерами таких чипов. Также выпускается серия популярных компании Microchip. По сегодняшним меркам эти процессоры невероятно минималистичны, но они чрезвычайно дешевы и часто могут полностью удовлетворить потребности конструктора.

Экономичность

Типичный микроконтроллер - это чип с 1000 байтов ПЗУ, 20-ю байтами ОЗУ и 8-ю контактами ввода-вывода. При выпуске большими партиями их стоимость невысока. Конечно, запустить Microsoft Word на таком чипе невозможно - для этого потребуется не менее 30 МБ ОЗУ и процессор, выполняющий миллионы операций в секунду. Но для управления микроволновой печью этого и не нужно. Микроконтроллер выполняет одну конкретную задачу, а низкая стоимость и энергопотребление являются его главными преимуществами.

Как работает?

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

  • При отключенном питании устройство никак себя не проявляет.
  • Подключение микроконтроллера к источнику энергии запускает блок логики системы управления, который отключает все другие схемы, кроме кварцевого кристалла.
  • Когда напряжение достигает своего максимума, частота генератора стабилизируется. Регистры заполняются битами, отражающими состояние всех схем микроконтроллера. Все контакты конфигурируются как входы. Электроника начинает работать согласно ритмической последовательности тактовых импульсов.
  • Счетчик команд обнуляется. Инструкция по этому адресу отправляется в декодер команд, который ее распознает, после чего она немедленно выполняется.
  • Значение счетчика команд увеличивается на 1, и весь процесс повторяется со скоростью миллион операций в секунду.

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

Для чего нужен микроконтроллер?

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

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

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

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

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

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

  1. Арифметико-логическое устройство служит для производства логических и арифметических операций, выполняет работу процессора совместно с регистрами общего назначения.
  2. Оперативно запоминающее устройство служит для временного хранения информации во время функционирования микроконтроллера.
  3. Память программ является одним из основных структурных элементов. Она основана на постоянном запоминающем устройстве с возможностью перепрограммирования, и служит для сохранения микропрограммы управления работой микроконтроллером. Она называется прошивкой. Ее пишет сам разработчик устройства. Изначально в памяти программ завод изготовитель ничего не закладывает, и там нет никаких данных. Прошивку с помощью программатора разработчик устройства записывает внутрь.
  4. Память данных используется в некоторых моделях микроконтроллеров для записи различных постоянных величин, табличных данных и т.д. Эта память имеется не во всех микроконтроллерах.
  5. Для связи с внешними устройствами существуют порты ввода-вывода. Их также используют для подключения внешней памяти, различных датчиков, исполнительных устройств, светодиодов, индикаторов. Интерфейсы портов ввода-вывода разнообразны: параллельные, последовательные, оборудованные USB выходами, WI FI. Это расширяет возможности применения микроконтроллеров для различных сфер управления.
  6. Аналого-цифровой преобразователь требуется для введения аналогового сигнала на вход микроконтроллера. Его задачей является преобразование сигнала из аналогового вида в цифровой.
  7. Аналоговый компаратор служит для выполнения сравнения двух сигналов аналогового вида на входах.
  8. Таймеры используются для выполнения установки диапазонов и задержки времени в функционировании микроконтроллера.
  9. Цифро-аналоговый преобразователь исполняет обратную работу по преобразованию из цифрового сигнала в аналоговый.
  10. Действие микроконтроллера синхронизируется с генератором тактовыми импульсами при помощью блока синхронизации, который работает совместно с микропрограммой. Генератор тактовых импульсов может быть как внутренним, так и внешним, то есть, тактовые импульсы могут подаваться с постороннего устройства.

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

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

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

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

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

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

Основными факторами подбора микроконтроллера являются:

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

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

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

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

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

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

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

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

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

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

DIP корпус

К первому виду относится DIP корпус. Сокращенно от английского D ual I n L ine P ackage – корпус с двумя рядами выводов. Расстояние между выводами составляет 0,1 дюйма, что равно 2,54 мм. Также подобные корпуса еще обозначают PDIP . Первая буква “Р” обозначает, что корпус пластиковый P lastic . Микроконтроллеры в таком корпусе будем использовать и мы, поскольку такие МК легко устанавливаются на макетную плату, что значительно облегчает выполнять отладку.

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

SOIC корпус

Следующим, в порядке снижения габаритов, будет SOIC корпус. Его аббревиатура расшифровывается так: S mall O utline I ntegrated C ircuit . Он используется при пайке поверхностным монтажом, т. е. выводы микросхемы припаиваются к контактным площадкам, расположенным на поверхности платы, а не вставляются в отверстия, как DIP корпус. Расстояние между у SOIC корпусов выводами в два раза меньше, чем в DIP и составляет 1,27 мм.

Рис. 2 – Микроконтроллер AT 89 C 2051 в SOIC корпусе

QFP и TQFP корпуса

Еще меньшие габариты имеет тип корпуса QFP (Q uad F lat P ackage ) или TQFP (T hin Q uad F lat P ackage ) (рис. 3 ). Отличительной особенностью его является расположение выводов по всем четырем сторонам, а сам корпус имеет форму квадрата. Как и SOIC, TQFP предназначен для поверхностного монтажа. Расстояние между выводами в 3 раза меньше, чем в DIP корпусах.

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

QFN корпус

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Программы мы будем писать на языке С в среде программирования Keil-C компании ARM. Сразу оговоримся, среда разработки Keil-C платная, но для выполнения всех наших работ достаточно демонстрационной версии этого продукта, demo версию можно скачать либо с официального сайта компании ARM www.keil.com , либо у нас в разделе . В своих примерах я буду использовать версию v812.

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

Рисунок 1 - Внешний вид микрокнтроллера ADuC842 в различных корпусах

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

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

Для обмена информацией с внешним миром в контроллере предусмотрены порты ввода и вывода информации. Часто порт ввода объединяется с портом вывода, и образуют порт ввода-вывода информации.

С внешним миром микроконтроллер обменивается информацией в цифровом виде. Основой логики работы микропроцессора служит двоичная система счисления, состоящая всего из двух цифр – единицы "1" и нуля "0". Эти две цифры двоичной системы позволяют записывать практически любые числа. Для электрических сигналов, несущих эту цифровую информацию, двоичная система счисления соответствует двум состояниям, или двум "логическим" уровням: высокому и низкому. Как правило, напряжение высокого логического уровня близко к напряжению питания микросхемы, например, 5 В или 3 В. Напряжение низкого логического уровня – логического ноля "0" - может составлять несколько десятых вольта, например, 0,3 В, и в идеальном случае равняется 0 В. С помощью загруженной в него программы микроконтроллер может установить на любой ножке порта вывода требуемый уровень напряжения. Также микроконтроллер может программно определять состояние сигнала на своих ножках, высокое ли напряжение на ней или низкое (ноль или единица).

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

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


Рисунок 2 - Структурная схема микроконтроллера

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

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

Всю память можно разделить две большие группы: это ПЗУ - постоянно запоминающее устройство, и ОЗУ - оперативно запоминающее устройство, или просто - оперативная память. В персональном компьютере роль ПЗУ выполняют жесткие диски, оптические диски, карты памяти и флешки. Особенность этого типа памяти заключается в том, что после отключения питания устройства записанная информация сохраняется на носителе, и после возобновления подачи питания снова может быть считана. В оперативной же памяти информация сохраняется только пока подано питание. Но быстродействие ОЗУ может превосходить быстродействие ПЗУ в десятки и даже сотни раз. Поэтому удобно исполняемую программу держать в ПЗУ, а все переменные, к которым требуется быстрый доступ - в ОЗУ. Если в ПК объем памяти измеряется в ГБ (приставка Гига – 10 9), то в микроконтроллерах все гораздо скромнее. Так, в микроконтроллере ADuC842, который мы будем использовать в практической части урока, имеется всего 62 кБ (килобайта) ПЗУ и 256 байт ОЗУ.

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

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


Рисунок 3 - Порядок выполнения команд

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

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

Но, если сильно все упростить, то основной функцией микроконтроллера является «дрыганье ножками». Т.е. у него есть несколько выводов (от 6 до нескольких десятков в зависимости от модели) и на этих выводах он может выставить либо 1 (высокий уровень напряжения, например +5вольт), либо 0 (низкий уровень напряжения, около 0.1 вольта) в зависимости от программного алгоритма зашитого в его память. Также микроконтроллер может определять состояние сигнала на своих ножках (для этого они должны быть настроены на вход) — высокое там напряжение или низкое (ноль или единица). Современные микроконтроллеры также почти поголовно имеют на борту Аналогово Цифровой Преобразователь — это штука подобная вольтметру, позволяет не просто отследить 0 или 1 на входе, а полноценно замерить напряжение от 0 до опорного (обычно опорное равно напряжению питания) и представить его в виде числа от 0 до 1024 (или 255, в зависимости от разрядности АЦП)

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

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

MSC-51
Самое обширное и развитое это MSC-51 , старейшее из всех, идущее от intel 8051 и ныне выпускаемое массой фирм. Иногда кратко зовется С51 . Это 8-ми разрядная архитектура, отличается от большинства других восьмиразрядников тем, что это CISC архитектура. Т.е. одной командой порой можно совершить довольно сложное действие, но команды выполняются за большое число тактов (обычно за 12 или 24 такта, в зависимости от типа команды), имеют разную длину и их много, на все случаи жизни. Среди контроллеров архитектуры MSC-51 встречаются как динозавры вроде AT89C51 , имеющие минимум периферии, крошечную память и неважнецкое быстродействие, так и монстры вроде продукции Silicon Laboratories имеющие на борту весьма мясистый фарш из разнокалиберной периферии, огромные закрома оперативной и постоянной памяти, мощные интерфейсы от простого UART ‘a до USB и CAN , а также зверски быстрое ядро , выдающее до 100 миллионов операций в секунду. Что касается лично меня, то я обожаю архитектуру С51 за ее чертовски приятный ассемблер на котором просто кайфово писать. Под эту архитектуру уже написаны гигабайты кода, созданы все мыслимые и немыслимые алгоритмы.

Atmel AVR
Вторым моим любимым семейством является AVR от компании Atmel . Вообще Atmel производит и MSC-51 контроллеры, но все же основной упор они делают на AVR . Эти контроллеры уже имеют 8-ми разрядную RISC архитектуру и выполняют одну команду за один такт, но в отличии от классического RISC ядра имеют весьма развесистую систему команд, впрочем не такую удобную как у С51, за что я их недолюбливаю. Но зато AVR всегда снаряжены как на войну и просто напичканы разной периферией, особенно контроллеры подсемейства ATMega . А еще их очень легко прошивать, для этого не нужны ни специализированные программаторы, ни какое либо другое сложное обрудование. Достаточно лишь пяти проводков и компьютера с LPT портом. Простота освоения позволила этому контроллеру прочно запасть в сердца многих и многих радиолюбителей по всему миру.

Microchip PIC .
Еще один 8-ми разрядный RISC микроконтроллер, отличается весьма извратской системой команд, состоящей всего из пары десятков команд. Каждая команда выполняется за четыре такта. есть ряд достоинств, в первую очередь это низкое энергопотребление, и быстрый старт. В среднем PIC контроллере нет такого количества периферии как в AVR, но зато самих модификаций PIC контроллеров существует такое количество, что всегда можно подобрать себе кристалл с периферией подходящей точно под задачу, не больше не меньше. На PIC ‘ax традиционно построены бортовые компьютеры автомобилей, а также многочисленные бытовые сигнализации.

Какое же семейство выбрать? О, это сложный вопрос. На многочисленных форумах и конференциях по сей день идут ожесточенные бои на тему какое семейство лучше, фанаты AVR грызутся с приверженцами MSC-51 , попутно не забывая пинать по почкам PIC ‘овцев, на что те отвечают тем же.

Ситуация тут как в Starcraft:) Кто круче? Люди? Зерги? Протоссы? Все дело в применении, масштабах задач и массе других параметров. У каждого семейства есть свои достоинства и недостатки. Но лично я бы выбрал AVR и вот по каким причинам:

  • 1. Доступность в России. Эти контроллеры заслуженно популярны и любимы народом, а значит наши торговцы их охотно возят. Впрочем, как и PIC. С MSC-51 ситуация хуже. Морально устаревшие AT89C51 достать не проблема, но кому они нужны? А вот современные силабы это уже эксклюзив.
  • 2. Низкая цена. Вообще низкой ценой в мире славится PIC, но вот ирония — халявы начинаются только если брать его вагонами. На деле же, на реальном прилавке, AVR будет процентов на 30-40 дешевле чем PIC при несколько большем функционале. С MSC-51 ситуация ясна еще по первому пункту. Эксклюзив это не только редко, но и дорого.
  • 3. Очень много периферии сразу. Для серийного устройства это скорей недостаток. Куда лучше иметь только то, что надо в текущей задаче, а остальное чтобы не мешалось и не кушало зря энергию. Этим славится PIC со своим развесистым модельным рядом, где можно найти контроллер в котором будет нужное и не будет ненужного. Но мы то собираемся изучать и делать для себя! Так что нам лучше чтобы все, сразу и про запас. И вот тут AVR на голову выше чем PIC, выкатывая раз за разом все более фаршированные контроллеры. Купил себе какую-нибудь AtMega16A и все, можешь все семейство изучить.
  • 4. Единое ядро. Дело в том, что у всех современных AVR одинаковое ядро с единой системой команд. Есть лишь некоторые различия на уровне периферии (и те незначительные). Т.е. код из какой нибудь крошечной ATTiny13 легко копипастом перетаскивается в ATMega64 и работает почти без переделок. И почти без ограничений наоборот. Правда у старых моделей AVR (всякие AT90S1200) совместимость сверху вниз ограниченная — у них чуть меньше система команд. Но вот вверх на ура. У Микрочипа же существует целая куча семейств. PIC12/16/18 с разной системой команд. 12е семейство это обычно мелочь малоногая (вроде Tiny в AVR), а 18 это уже более серьезные контроллеры (аналог Mega AVR) И если код с 12го можно перетащить на 18, то обратно фиг.
  • 5. Обширная система команд контроллеров AVR. У AVR около 130 команд, а у Microchip PIC всего 35. Казалось бы PIC в выйгрыше — меньше команд, проще изучить. Ну да, именно так и звучит микрочиповский слоган, что то вроде «Всего 35 команд!». Только это на самом деле фигня. Ведь что такое команда процессора? Это инструмент! Вот представь себе два калькулятора — обычный, бухгалтерский и инженерный. Бухгалтерский куда проще изучить чем инженерный. Но вот попробуй посчитать на нем синус? Или логарифм? Нет, можно, не спорю, но сколько нажатий кнопок и промежуточных вычислений это займет? То то же! Куда удобней работать когда у тебя под рукой куча разных действий. Поэтому, чем больше система команд тем лучше.
  • 6. Наличие бесплатных кроссплатформенных компиляторов Си. Конечно, кряк всегда найти можно. Где где, а в нашей стране это проблемой никогда не было. Но зачем что то воровать если есть халявное? ;)
  • 7. Ну и последний аргумент, обычно самый весомый. Наличие того, кто бы научил и подсказал. Помог советом и направил на путь истинный. Я выбрал для себя AVR и на этом сайте (по крайней мере пока) досконально будет разбираться именно это семейство, а значит выбора у тебя особого нет:))))))

Ой, но этих же AVR целая прорва. Какой взять???
Интересный вопрос. Вообще МК лучше выбирать под задачу. Но для изучения лучше хапнуть что то фаршированное.

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

ATmega16А — 16PI

  • AT — сделано в Atmel
  • Mega — вид семейства. Существует еще Tiny и Xmega (новая — фаршу жуть, полный вертолет). Вообще задумывалось, что Тини это, вроде как, малобюджетное с малым количеством фарша и вообще ущербная, а Мега наоборот — все и сразу. В реальности, разница между семействами Тини и Мега по фаршу сейчас минимальная, но в Тини меньше памяти и корпуса у нее бывают с числом выводов от 6 до 20.
  • 16 — количество памяти флеша в килобайтах. Вообще тут не все так просто. Числом памяти является степень двойки. Так что Mega162 это не контроллер со 162КБ флеша, а своеобразная Мега16 модификации2 с памятью 16кб. Или вот Мега88 — не 88кб, а 8кб флеша, а вторая 8 это вроде как намек на то, что это дальнейшее развитие Мега8. Аналогично и Мега48 или Мега168. Тоже самое и семейством Тини. Например, Тини2313 — 2килобайта флеша. А что такое 313? А хрен знает что они имели ввиду:) Или Тини12 — 1кб Флеша. В общем, фишку просек.
  • А — префикс энергопотребления (обычно). Этой буквы может и не быть, но в новых сериях она присутствует почти везде. Например, V и L серии — низковольтные, могут работать от 2,7 вольт. Правда за низковольтность приходится платить меньше частотой. Но оверклокинг возможен и тут, ничто человеческое нам не чуждо:) A и P имеют новые серии AVR с технологией PicoPower т.е. ультраэкономичные. Разницы по фаршу и внутренней структуре с их безиндексовыми моделями нет, тут все различие в работе всяких спящих режимов и энергопотреблении. Т.е. Mega16A легко меняется на Mega16 без А. И ничего больше менять не нужно.
  • 16 — Предельная тактовая частота в мегагерцах. В реальности можно разогнать и до 20 ;)
  • P — тип корпуса. Важная особенность. Дело в том, что далеко не всякий корпус можно запаять в домашних условиях без геморроя. Рекомендую пока обратить внимание на P — DIP корпус. Это громоздкий монстр, но его легко запаять, а, главное, он легко втыкается в специальную панельку и вынимается из нее обратно. Корпуса вида SOIC (индекс S) или TQFP (индекс A) пока лучше отложи в сторонку. Без хорошего опыта пайки и умения вытравить качественную печатную плату к ним лучше не соваться.
  • I — Тип лужения выводов. I — свинцовый припой. U — безсцвиновый. Для тебя никакой совершенно разницы. Бери тот что дешевле.

Рекоменую следующие модели:

  • ATMega16A-16PU — недорогой (около 100-150р), много выводов, много периферии. Доступен в разных корпусах. Прост, под него заточен мой учебный курс и все дальнейшие примеры.
  • ATTiny2313-20SU — идеальный вариант для изготовления всяких часов/будильников и прочей мелкой домашней автоматики. Дешев (рублей 40), компактен. Из минусов — нет АЦП.
  • ATmega48/88/168 любой из этих контроллеров. Компактен (в корпусе tqfp является самым тонким и мелким из AVR), дешев (рублей 100-150), фарширован донельзя.
  • ATmega128 для искушенных. Большой, мощный, дофига памяти. Дорогой (около 400р)