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

Классификация и выбор микроконтроллеров

 

Все микроконтроллеры можно условно разделить на 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), в которых все не так наглядно, но зато найти ошибки в программе гораздо проще. Эти возможности комбинируются в разных средствах разработки.
Отладчики можно разделить на

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

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

Назад

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

Источник: https://prog-cpp.ru/select-micro/

Что такое микроконтроллер. Применение микроконтроллеров – Основы электроники

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

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

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

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

Так выглядят современные микроконтроллеры.

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

Мы сказали, что микроконтроллер это своего рода микрокомпьютер (старое название однокристальные микроЭВМ). Представим его в виде черного ящика. Внутри этого ящика расположены основные структурные элементы микроконтроллера.

Арифметико-логическое устройство (АЛУ) – предназначено для выполнения арифметических и логических операций, на самом деле в совокупности с регистрами общего назначения АЛУ выполняет функции процессора.

Оперативно – запоминающее устройство (ОЗУ) – предназначено для временного хранения данных при работе микроконтроллера.

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

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

Микроконтроллер в своем составе может иметь и другие вспомогательные элементы.

Аналоговый компаратор – предназначен для сравнения двух аналоговых сигналов на его входах

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

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

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

Работа микроконтроллера синхронизируется тактовыми импульсами с генератора и управляется устройством управления микроконтроллера.

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

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

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

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

Видеокурс “Программирование микроконтроллеров для начинающих” более 70 часов качественного видео.

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

Источник: http://www.sxemotehnika.ru/zhurnal/chto-takoe-mikrokontroller.html

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

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

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

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

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

Общий вид микроконтроллера

Впервые такое устройство как микроконтроллер, которое тогда называлось еще однокристальной микро-ЭВМ, было разработано в 1971 году сотрудниками компании Texas Instruments, инженерами М. Кочрену и Г. Буну, которые и предложили интегрировать изобретенный незадолго до этого микропроцессор на один кристалл со всеми необходимыми компонентами.

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

Микроконтроллеры выпускаются очень большим количеством разнообразных компаний, для перечисления которых не хватило бы даже целой статьи, так что я расскажу о микроконтроллерах, которые производит корпорация Атмел (Atmel), основанная в далеком 1984 году. Семейство этих микроконтроллеров зовётся AVR — это восьмибитные микроконтроллеры, разработанные в 1996 году. Фирма Atmel выпускает несколько семейств микроконтроллеров:

  • 4-разрядные
  • 8-разрядные: MCS-51, AVR
  • 32-разрядные: ARM, AVR32

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

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

Большее распространение среди радиолюбителей получили микроконтроллеры семейства Mega по причине того, что они имеют больше возможностей и функций, конкретнее – ATmega8, который имеет тактовую частоту 16 МГц и объём памяти в 8 Кбайт.

Возможности и особенности микроконтроллеров

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

Во многом возможности микроконтроллеров ограничены только вашим воображением и умениями работать с ними.

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

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

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

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

Коротко перечислим некоторые из них.

Микроконтроллеры можно «научить» считывать сигнал с таходатчика (датчика скорости вращения) вентилятора или помпы и выводить значения на LCD или индикаторный дисплей. Таким же образом микроконтроллер может послужить для вычисления основных электрических величин: сопротивления, напряжения и силы тока. Всё это так же можно вывести на LCD дисплей.

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

Термометр на основе светодиодных индикаторов

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

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

Индикатор, собранный на основе микроконтроллеров

Использование микроконтроллеров

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

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

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

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

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

От себя — очень советую!

Собирать устройство на основе микроконтроллера можно как на протравленной плате, так и на макетной или даже методом навесного монтажа, в зависимости от того, как вам удобней и сложности предполагаемого устройства.

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

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

Из плюсов микроконтроллеров я бы выделил:

  • широкий спектр применения
  • минимум материальной базы для изготовления устройств
  • нет трудностей с приобретением

Ну, куда без минусов:

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

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

Источник: http://mozgochiny.ru/electronics-2/chto-takoe-mikrokontroller/

Микроконтроллеры: что это такое и зачем нужны

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

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

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

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

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

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

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

Нижеописанная схема является упрощенным вариантом подключения микроконтроллера AVR. AVR — это семейство восьмибитных микроконтроллеров фирмы Atmel. Год разработки — 1996.

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

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

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

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

На вывод AREF рекомендуется подключить конденсатор, который позволит увеличить качество напряжения АЦП и, тем самым, позволит провести правильные измерения АЦП.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для того, чтобы новичок мог заниматься микроконтроллерами, рекомендуется изучать базовые материалы. К таким материалам можно отнести следующие книги: “Применение микроконтроллеров AVR: схемы, программы и алгоритмы” Баранов В.Н., 2006 год, “Микроконтроллеры AVR: вводный курс”, Дж. Мортон, 2008 год, “Программирование микроконтроллеров ATMEL на языке С” Прокопенко В.С, 2012 год.

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

Источник: https://ArduinoPlus.ru/mikrokontrollery-chto-eto-takoe/

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

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

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

Миросхемы изобрели практически одновременно Джек Килби (Тексас Инструментс) и Роберт Нойс (Файрчайлд Семикондакторс) примерно в 1958 году. Производить промышленно начали только в начале 70-х годов. Первый процессор (8080) был выпущен в 1974 году. Придуман он был под названием Intel 4040, ещё в 1969 году, но в коммерческое производство пошел только в 1974.

С появлением однокристальных микро-ЭВМ связывают начало эры массового применения компьютерной автоматизации в области управления. Скорее всего, это обстоятельство и определило термин «контроллер» (англ. controller — регулятор, управляющее устройство).

В связи с резким спадом отечественного производства и увеличением импорта техники, в том числе вычислительной, термин «микроконтроллер» (МК) вытеснил из употребления термин «однокристальная микро-ЭВМ».

Первый патент на однокристальную микро-ЭВМ был выдан в 1971 году инженерам Майклу Кочрену и Гари Буну, сотрудникам американской Texas Instruments. Именно они родоночальники идеи размещения на одном кристалле не только процессор, но и память с устройствами ввода-вывода.

В 1976 году американская фирма Intel выпускает микроконтроллер i8048. Через 4 года, в 1980 году, Intel выпускает следующий микроконтроллер: i8051. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке.

С точки зрения технологии микроконтроллер i8051 являлся для своего времени крайне сложным изделием — в кристалле было использовано 128 тысяч транзисторов, что в 4 раза превышало количество транзисторов в 16-разрядном микропроцессоре i8086.

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

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

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

Встраиваемые в приборы и аппаратуру микроконтроллеры запрограммированы на реализацию узкоспецилизированных задач.

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

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

встраиваемые (embedded) 8-разрядные МК,

16- и 32-разрядные МК,

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

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

DIP(Dual Inline Package) – корпус с двумя рядами контактов. Количество ножек в корпусе от 8 до 56.

SOIC(Small Outline Integrated Circuit) – планарная микросхема – ножки припаиваются с той же стороны, где находится корпус. При этом, микросхема лежит корпусом на плате. Количество ножек и их нумерация – такие же, как у DIP.

PLCC(Plastic Leader Chip Carrier) – квадратный корпус. Ножки расположены по всем четырем сторонам, и имеют J – образную форму.

TQFP(Thin Profile Quad Flat Package) – среднее между SOIC и PLCC. Квадратный корпус толщиной около 1 мм, выводы расположены по всем сторонам. Количество ножек – от 32 до 144.

Перечислим основные составные части любого микроконтроллера:

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

Конечно, встроенный в небольшой кристалл вычислительно-логический модуль далеко не столь мощный, как его настольный собрат, но ему и не нужны все эти лошадиные силы.

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

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

Порты ввода-вывода -> позволяют микроконтроллеру связываться с окружающим миром. 

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

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

К наиболее распространенным встроенным устройствам относятся устройства памяти и порты ввода/вывода (I/O), интерфейсы связи, таймеры, системные часы.

Устройства памяти включают оперативную память (RAM), постоянные запоминающие устройства (ROM), перепрограммируемую ROM (EPROM), электрически перепрограммируемую ROM (EEPROM). Таймеры включают и часы реального времени, и таймеры прерываний.

Средства I/O включают последовательные порты связи, параллельные порты (I/O линии), аналого-цифровые преобразователи (A/D), цифроаналоговые преобразователи (D/A), драйверы жидкокристаллического дисплея (LCD) или драйверы вакуумного флуоресцентного дисплея (VFD). Встроенные устройства обладают повышенной надежностью, поскольку они не требуют никаких внешних электрических цепей. 

АЛУ производит операции над числами и возвращает результат операции в виде числа. Данные числа помещаются в регистры общего назначения – своеобразную временную память. У каждого микроконтроллера количество регистров может быть разным.

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

Регистры общего назначения содержат данные, с которыми АЛУ работает в данный момент, а ОЗУ – остальные. Команды, а точнее последовательность команд, которые выполняет АЛУ, хранятся в постоянно-запоминающем устройстве (ПЗУ). Обычно это Flash-память.

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

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

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

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

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

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

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

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

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

На самом деле всё довольно просто и, при желании, достаточно легко осваивается! 

Собирать устройство на основе микроконтроллера можно как на собственной плате, так и на макетной или даже методом навесного монтажа, в зависимости от того, как вам удобней и от сложности предполагаемого устройства.

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

Источник: http://robots4life.ru/mikrokontroller

Микроконтроллеры в системах промышленной автоматизации

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

Также мы обсудим необходимость интеграции в микроконтроллеры высокопроизводительных ядер, таких как ARM Cortex-M3, с прецизионной и специализированной периферией, которой снабжены микроконтроллеры серии ADuCM360 компании Analog Devices и семейства EFM32 компании Energy Micro (Silicon Labs). Также не останется без внимания относительно новый протокол обмена данными, который ориентирован на эту область приложений, с конкретной ссылкой на бюджетные микроконтроллеры семейства XC800/XC16x (Infineon) и MSP430F2274 (Texas Instruments), и на специализированные приемопередатчики, включая MAX14821 (Maxim).

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

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

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

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

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

Прецизионная работа

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

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

Поэтому неудивительно, что то, что начиналось с 4-разрядных устройств, теперь превратилось в очень сложные и мощные 32-разрядные процессорные ядра, а ядро ARM Cortex-M стало выбором многих производителей.

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

Одной из компаний, имеющей огромнейший опыт в этой области, является Analog Devices. Разработанное компанией семейство полностью интегрированных систем сбора данных ADuCM предназначено для непосредственного взаимодействия с прецизионными аналоговыми датчиками.

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

Преобразователь, интегрированный, например, в систему ADuCM360 с ядром ARM Cortex-M3, представляет собой 24-разрядный сигма-дельта АЦП, являющийся частью аналоговой подсистемы.

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

Работа с датчиками в режиме «глубокого сна»

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

Разработаны даже такие входные аналоговые схемы, которые могут работать автономно, например, интерфейс LESENSE (Low Energy Sensor) в микроконтроллерах с ультранизким энергопотреблением компании Energy Micro (Рисунок 1).

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

Рисунок 1. Технология LESENSE, интегрированная в микроконтроллеры EFM32, подразумевает автономную работу интерфейса датчиков  в системах промышленного контроля и автоматизации.

Контроллер интерфейса LESENSE работает от источника тактовой частоты 32 кГц и управляет его активностью, в то время как выходы компаратора могут быть сконфигурированы как источники прерываний для «пробуждения» процессора, а ЦАП может быть выбран в качестве источника опорного сигнала компаратора. Технология LESENSE также включает в себя программируемый декодер, который можно настроить на генерирование сигнала прерывания только при выполнении условий нескольких датчиков в одно время. Компания Digi-Key предлагает стартовый набор EFM32 Tiny Gecko Starter Kit, в состав которого входит демонстрационный проект LESENSE. Микроконтроллеры семейства Tiny Gecko выполнены на ядре ARM Cortex-M3 с рабочей частотой до 32 МГц и нацелены на применение в системах промышленной автоматизации, где требуется измерение температуры, вибрации, давления и регистрация движений.

Рисунок 2. Стартовый набор EFM32 Tiny Gecko Starter Kit позволит полностью оценить возможности микроконтроллеров семейства Tiny Gecko.

Протокол IO-Link

Внедрение нового мощного интерфейса датчиков и исполнительных механизмов помогает многим производителям продлить жизненный цикл своих 8- и 16-разрядных микроконтроллеров на арене промышленных систем автоматизации. Этот протокол интерфейса передачи данных получил название IO-Link и уже поддерживается лидерами в секторе промышленной автоматизации и, в частности, производителями микроконтроллеров.

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

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

Протокол (также известный как SDCI – Single-drop Digital Communication Interface, регламентирован по спецификации IEC 61131-9) является сетевым коммуникационным протоколом связи типа «точка-точка», с помощью которого связываются датчики и исполнительные механизмы с контроллерами.

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

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

Консорциум производителей, использующих IO-Link, считает, что можно значительно снизить сложность систем, а также ввести дополнительные полезные функции, например, диагностику в реальном времени посредством параметрического мониторинга (Рисунок 3).

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

Датчики и исполнительные механизмы можно настроить удаленно, отчасти потому, что датчики по спецификации IO-Link знают о себе намного больше, чем «обычные» датчики.

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

Но, что более важно, IO-Link позволяет датчикам (и исполнительным механизмам) предоставлять контроллеру данные непрерывно в реальном времени. Фактически, протокол подразумевает обмен тремя типами данных: данные о процессе, сервисные данные и данные о событиях.

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

Рисунок 3. Интерфейс IO-Link предлагает для микроконтроллеров более простой способ обмена данными с интеллектуальными датчиками и исполнительными механизмами, а для разработчиков – возможность создавать интеллектуальные системы автоматизации.

Некоторые производители микроконтроллеров присоединились к консорциуму IO-Link, который недавно стал Техническим Комитетом (TC6) в составе международного сообщества PI (PROFIBUS & PROFINET International).

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

Список производителей IO-Link-совместимых устройств постоянно растет, как и всесторонняя аппаратно-программная поддержка производителей микроконтроллеров.

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

В списке ее партнеров достаточно крупные и известные компании: Infineon, STMicroelectronics, Atmel и Texas Instruments.

Infineon, например, портировала программный стек от Mesco на свои 8-разрядные микроконтроллеры серии XC800, а также оказывает поддержку разработки ведущего устройства IO-Link на базе своих 16-разрядных микроконтроллеров.

Стек, разработанный Mesco, также был портирован на 16-разрядные микроконтроллеры Texas Instruments серии MSP430, в частности, для MSP430F2274.

Производители также уделяют свое внимание разработке дискретных приемопередатчиков интерфейса IO-Link.

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

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

Рисунок 4. Микросхема приемопередатчика MAX14821 предоставляет физический уровень интерфейса IO-Link для микроконтроллера, реализующего канальный уровень интерфейса.

Вполне вероятно, что благодаря простоте реализации и внедрения интерфейса IO-Link, все больше производителей будут интегрировать этот физический уровень с другой специализированной периферией, присутствующей в микроконтроллерах, с целью применения в промышленных системах автоматизации. Компания Renesas уже представила ассортимент специализированных контроллеров IO-Link Master/Slave на основе своих 16-разрядных микроконтроллеров семейства 78К.

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

С введением интерфейса IO-Link датчики и исполнительные механизмы,  разрабатываемые в настоящее время, способны все же взаимодействовать с микроконтроллером в более изощренной форме.

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

digikey.com

Источник: https://www.rlocman.ru/review/article.html?di=148761

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}