Схемы на микроконтроллерах, самодельные устройства и программаторы
Светофор на RGB-светодиодной ленте, управляемый ARDUINO UNO
В некоторых случаях требуется «светофор местного значения», например, чтобы регулировать проезд автомобилей на автостоянку или на территорию гаражного кооператива, если въезд по различным причинам слишком узок для одновременного проезда двух машин. Здесь предлагается описание простого …
1 88 0
Схема цифровой шкалы на Arduino UNO для связного КВ-приемникаЗдесь приводится описание цифровой шкалы для коротковолнового связного приемника, работающего в диапазонах 160м, 80м, 40м, 20м, 10м или любом из них. Шкала работает с двухстрочным ЖК-дисплеем. В его верхней строке показывает значение частоты в кГц,а в нижней длину волны в метрах. Внося …
1 1177 0
Самодельный велоспидометр на ARDUINO UNO (ATMEGA328)Здесь описывается цифровой прибор на микроконтроллере, измеряющий скорость движения велосипеда.
1 764 0
Девятиразрядный мультиметр на АЦП AD7705 и AVR микроконтроллереОсновой предлагаемого мультиметра является микросхема 16-битного двухканального дельта-сигма аналого-цифрового преобразователя (АЦП) AD7705. Широко распространенные мультиметры на основе АЦП двойного интегрирования ICL7106 [2] обеспечивают отображение результата преобразования числом, не превышающим 1999, что соответствует, без учета знака, 11-битному АЦП, за вычетом 48 единиц счёта…
1 2040 0
Реле времени на микроконтроллере AVR ATtiny2313 с индикатором фирмы Data VisionСхема и описание самодельного реле времени на AVR микроконтроллере ATtiny2313 с индикатором фирмы Data Vision. Реле времени (таймеры), пожалуй, одна из самых массовых разработок конструкторов электронных техники.
Автор предлагает вариант 4-х канального реле времени, разработанного на базе микроконтроллера семейства AVR и жидкокристаллического индикатора фирмы Data Vision. Принципиальная схема реле времени …1 686 0
Макет светофора на ARDUINO UNO, схема и описаниеЭтот макет светофорного управления движения на перекрестке можно использовать в различных играх по изучению правил дорожного движения. Он может быть сделан как в миниатюрном, настольном варианте для передвижения по нему игрушечных моделей машин и кукол-пешеходов, так и в варианте для детского …
1 380 0
Самодельный кодовый замок на микроконтроллере (PIC16F628A)Схема самодельного кодового замка, построенного на микроконтроллере PIC16F628A и транзисторах, имеет цифровое табло. Этот замок можно использовать для ограничения доступа в помещение, гараж, дом, сейф, шкаф. Его исполнительным устройством может служить механизм запирания двери автомобиля …
1 1169 0
Часы с календарем на индикаторах ИН-12Предлагаемые часы показывают текущее время и дату, обладают функциями будильника. Их особенность — использование газоразрядных цифровых индикаторов ИН-12. Подобные индикаторы широко применялись в электронных часах и цифровых измерительных приборах в семидесятые годы прошлого века. Индикаторы …
1 1183 0
Автоматическое управления вентиляцией помещения, схема на МК ATtiny2313AСхема самодельного устройства, автоматически включающего и выключающего принудительную вентиляцию помещения. Работа устройства осуществляется в зависимости от относительной влажности воздуха в помещении и скорости её изменения. Оно не содержит дефицитных деталей и может быть помещено в стандартный …
0 1325 0
Двоичные часы на микроконтроллере PIC16F628AСхема самодельных двоичных часов на микроконтроллере PIC16F628A и светодиодах. Эти необычные карманные часы могут стать оригинальным подарком. Индикатор времени в них построен всего на шести единичных светодиодах. Секрет в том, что число часов и число минут текущего времени отображаются ими …
1 730 0
1 2 3 4 5 … 10Радиодетали, электронные блоки и игрушки из китая:
Электроника,схемы на микроконтроллере. Схемы и устройства на микроконтроллерах
Принцип закрывания дверцы клетки весьма прост. Дверка клетки подпирается специальным упором, сделанным из медной проволоки. К упору крепится капроновая нить нужной длины. Если потянуть за нить, то упор соскальзывает, и дверка клетки под собственным весом закрывается. Но это в ручном режиме, а я хотел реализовать автоматический процесс без участия кого-либо.
Для управления механизмом закрывания дверцы клетки был применен сервопривод. Но в процессе работы он создавал шум. Шум мог спугнуть птицу. Поэтому сервопривод я заменил на коллекторный двигатель, взятый из радиоуправляемой машинки. Он работал тихо и идеально подходил, тем более что управлять коллекторным двигателем не составляло сложностей.
Для определения, находится ли уже птица в клетке, я использовал недорогой датчик движения. Сам датчик движения уже является законченным девайсом, и паять ничего не нужно. Но у данного датчика угол срабатывания весьма большой, а мне нужно, чтобы он реагировал только во внутренней области клетки. Для ограничения угла срабатывания я поместил датчик в цоколь, когда-то служившей эконом-лампы. Из картона вырезал своего рода заглушку с отверстием посередине для датчика. Пошаманив с расстоянием данной заглушки относительно датчика, настроил оптимальный угол для срабатывания датчика.
В качестве зазывалы для птиц я решил применить звуковой модуль WTV020M01 с записанным на микроSD карте памяти пением чижа и щегла. Именно их я и собирался ловить. Поскольку я использовал один звуковой файл, то и управлять звуковым модулем я решил простим способом, без использования протокола обмена между звуковым модулем и микроконтроллером.
При подаче на девятую ножку звукового модуля низкого сигнала, модуль начинал воспроизводить. Как только звук воспроизводился на пятнадцатой ноге звукового модуля, устанавливается низкий уровень. Благодаря этому микроконтроллер отслеживал воспроизведение звука.
Поскольку я реализовал паузу между циклами воспроизведения звука, то для остановки воспроизведения звука программа подает низкий уровень на первую ножку звукового модуля (reset). Звуковой модуль является законченным устройством со своим усилителем для звука, и, по большому счету, в дополнительном усилителе звука он не нуждается. Но мне данного усиления звука показалось мало, и в качестве усилителя звука я применил микросхему TDA2822M. В режиме воспроизведения звука потребляет 120 миллиампер. Учитывая, что поимка птицы займет какое-то время, в качестве автономной батареи питания я применил не совсем новый аккумулятор от бесперебойника (всё равно валялся без дела).
Принцип электронного птицелова прост, и схема состоит в основном из готовых модулей.
Программа и схема —
Бывает идешь мимо припаркованных машин, и замечаешь краем глаза, что кто то уже давно, судя по тусклому свечению ламп, забыл свет выключить. Кто то и сам так попадал. Хорошо когда есть штатный сигнализатор не выключенного света, а когда нету поможет вот такая поделка: Незабывайка умеет пищать, когда не выключен свет и умеет пропикивать втыкание задней передачи.
Схема цифрового индикатора уровня топлива обладает высокой степенью повторяемости, даже если опыт работы с микроконтроллерами незначителен, поэтому разобраться в тонкостях процесса сборки и настройки не вызывает проблем. Программатор Громова – это простейший программатор, который необходим для программирования avr микроконтроллера. Программатор Горомова хорошо подходит как для внутрисхемного, так и для стандартного схемного программирования. Ниже приведена схема контроля индикатора топлива.
Плавное включение и выключение светодиодов в любом режиме (дверь открыта, и плафон включен). Так же авто выключение через пять минут. И минимальное потребление тока в режиме ожидания.
Вариант 1 — Коммутация по минусу. (с применением N-канальных транзисторов) 1) «коммутация по минусу», т.е такой вариант при котором один питающий провод лампы соединен с +12В аккумулятора (источника питания), а второй провод коммутирует ток через лампу тем самым включает ее. В данном варианте будет подаваться минус. Для таких схем нужно применять N-канальные полевые транзисторы в качестве выходных ключей.
Сам модем небольшого размера, недорог, работает без проблем, четко и быстро и вообще нареканий нет к нему. Единственный минус для меня был, это необходимость его включать и выключать кнопкой. Если его не выключать, то модем работал от встроенного аккумулятора, который в итоге садился и модем снова было нужно включать.
Принцип работы прост: привращении крутилки регулируется громкость, при нажатии — выключение-включение звука. Нужно для кар писи на винде или андройде
Изначально в Lifan Smily (да и не только) режим работы заднего дворника — единственный, и называется он «всегда махать». Особенно негативно воспринимается такой режим в наступивший сезон дождей, когда на заднем стекле собираются капли, но в недостаточном для одного прохода дворника количестве. Так, приходится либо слушать скрип резины по стеклу, либо изображать робота и периодически включать-выключать дворник.
Немного доработал схему реле времени задержки включения освещения салона для автомобиля Форд (схема разрабатывалась для вполне конкретного автомобиля, как замена штатного реле Ford 85GG-13C718-AA, но была успешно установлена в отечественную «классику»).
Уже не первый раз проскакивают такие поделки. Но почему-то люди жмуться на прошивки. Хотя в большинстве своём они основаны на проекте elmchan «Simple SD Audio Player with an 8-pin IC». Исходниник не открывают аргументируя, что пришлось исправлять проект, что в у меня качество лучше… и т.д. Короче взяли open source проект, собрали, и выдаёте за своё.
Итак. Микроконтроллер Attiny 13- так сказать сердце данного устройства. С его прошивкой долго мучился, никак не мог прошить.Ни 5ю проводками через LPT, ни прогромматором Громова. Компьютер просто не видит контроллер и все.
В связи с нововведениями в ПДД, народ стал думать о реализации дневных ходовых огней. Один из возможных путей это включение ламп дальнего света на часть мощности, об этом и есть данная статья.
Это устройство позволит ближнему свету автоматически включиться при начале движения и регулирует напряжение на лампах, ближнего света, в зависимости от скорости с которой вы едите. Так же, это послужит более безопасному движению и продлит срок службы ламп.
Поделки с микроконтроллерами – вопрос, как никогда актуальный и интересный. Ведь мы живем в 21 веке, эпохе новых технологий, роботов и машин. На сегодняшний день каждый второй, начиная с малого возраста, умеет пользоваться интернетом и различного рода гаджетами, без которых порою и вовсе сложно обойтись в повседневной жизни.
Поэтому в этой статье мы будем затрагивать, в частности, вопросы пользования микроконтроллерами, а также непосредственного применения их с целью облегчения миссий, каждодневно возникающих перед всеми нами. Давайте разберемся, в чем ценность этого прибора, и как просто использовать его на практике.
Микроконтроллер − это чип, целью которого является управление электрическими приборами. Классический контроллер совмещает в одном кристалле, как работу процессора, так и удаленных приборов, и включает в себя оперативное запоминающее устройство. В целом, это монокристальный персональный компьютер, который может осуществлять сравнительно обыкновенные задания.
Разница между микропроцессором и микроконтроллером заключается в наличии встроенных в микросхему процессора приборов «пуск-завершение», таймеров и иных удаленных конструкций. Применение в нынешнем контроллере довольно сильного вычисляющего аппарата с обширными способностями, выстроенного на моносхеме, взамен единого комплекта, существенно уменьшает масштабы, потребление и цену созданных на его основе приборов.
Из этого следует, что применить такое устройство можно в технике для вычисления, такой, как калькулятор, материнка, контроллеры компакт-дисков. Используют их также в электробытовых аппаратах – это и микроволновки, и стиральные машины, и множество других. Также микроконроллеры широко применяются в индустриальной механике, начиная от микрореле и заканчивая методиками регулирования станков.
Микроконроллеры AVR
Ознакомимся с более распространенным и основательно устоявшимся в современном мире техники контроллером, таким как AVR. В его состав входят высокоскоростной RISC-микропроцессор, 2 вида затратной по энергии памяти (Flash-кэш проектов и кэш сведений EEPROM), эксплуатационная кэш по типу RAM, порты ввода/вывода и разнообразные удаленные сопряженные структуры.
- рабочая температура составляет от -55 до +125 градусов Цельсия;
- температура хранения составляет от -60 до +150 градусов;
- наибольшая напряженность на выводе RESET, в соответствии GND: максимально 13 В;
- максимальное напряжение питания: 6.0 В;
- наибольший электроток линии ввода/вывода: 40 мА;
- максимальный ток по линии питания VCC и GND: 200 мА.
Возможности микроконтроллера AVR
Абсолютно все без исключения микроконтроллеры рода Mega обладают свойством самостоятельного кодирования, способностью менять составляющие своей памяти драйвера без посторонней помощи. Данная отличительная черта дает возможность формировать с их помощью весьма пластичные концепции, и их метод деятельности меняется лично микроконтроллером в связи с той либо иной картиной, обусловленной мероприятиями извне или изнутри.
Обещанное количество оборотов переписи кэша у микроконтроллеров AVR второго поколения равен 11 тысячам оборотов, когда стандартное количество оборотов равно 100 тысячам.
Конфигурация черт строения вводных и выводных портов у AVR заключается в следующем: целью физиологического выхода имеется три бита регулирования, а никак не два, как у известных разрядных контроллеров (Intel, Microchip, Motorola и т. д.). Это свойство позволяет исключить потребность обладать дубликатом компонентов порта в памяти с целью защиты, а также ускоряет энергоэффективность микроконтроллера в комплексе с наружными приборами, а именно, при сопутствующих электрических неполадках снаружи.
Всем микроконтроллерам AVR свойственна многоярусная техника пресечения. Она как бы обрывает стандартное течение русификатора для достижения цели, находящейся в приоритете и обусловленной определенными событиями. Существует подпрограмма преобразования запрашивания на приостановление для определенного случая, и расположена она в памяти проекта.
Когда возникает проблема, запускающая остановку, микроконтроллер производит сохранение составных счетчика регулировок, останавливает осуществление генеральным процессором данной программы и приступает к совершению подпрограммы обрабатывания остановки. По окончании совершения, под шефствующей программы приостановления, происходит возобновление заранее сохраненного счетчика команд, и процессор продолжает совершать незаконченный проект.
Поделки на базе микроконтроллера AVR
Поделки своими руками на микроконтроллерах AVR становятся популярнее за счет своей простоты и низких энергетических затрат. Что они собой представляют и как, пользуясь своими руками и умом, сделать такие, смотрим ниже.
«Направлятор»
Такое приспособление проектировалось, как небольшой ассистент в качестве помощника тем, кто предпочитает гулять по лесу, а также натуралистам. Несмотря на то, что у большинства телефонных аппаратов есть навигатор, для их работы необходимо интернет-подключение, а в местах, оторванных от города, это проблема, и проблема с подзарядкой в лесу также не решена. В таком случае иметь при себе такое устройство будет вполне целесообразно. Сущность аппарата состоит в том, что он определяет, в какую сторону следует идти, и дистанцию до нужного местоположения.
Построение схемы осуществляется на основе микроконтроллера AVR с тактированием от наружного кварцевого резонатора на 11,0598 МГц. За работу с GPS отвечает NEO-6M от U-blox. Это, хоть и устаревший, но широко известный и бюджетный модуль с довольно четкой способностью к установлению местонахождения. Сведения фокусируются на экране от Nokia 5670. Также в модели присутствуют измеритель магнитных волн HMC5883L и акселерометр ADXL335.
Беспроводная система оповещения с датчиком движения
Полезное устройство, включающее в себя прибор перемещения и способность отдавать, согласно радиоканалу, знак о его срабатывании. Конструкция является подвижной и заряжается с помощью аккумулятора или батареек. Для его изготовления необходимо иметь несколько радиомодулей HC-12, а также датчик движения hc-SR501.
Прибор перемещения HC-SR501 функционирует при напряжении питания от 4,5 до 20 вольт. И для оптимальной работы от LI-Ion аккумулятора следует обогнуть предохранительный светодиод на входе питания и сомкнуть доступ и вывод линейного стабилизатора 7133 (2-я и 3-я ножки). По окончанию проведения этих процедур прибор приступает к постоянной работе при напряжении от 3 до 6 вольт.
Внимание: при работе в комплексе с радиомодулем HC-12 датчик временами ложно срабатывал. Во избежание этого необходимо снизить мощность передатчика в 2 раза (команда AT+P4). Датчик работает на масле, и одного заряженного аккумулятора, емкостью 700мА/ч, хватит свыше, чем на год.
Минитерминал
Приспособление проявило себя замечательным ассистентом. Плата с микроконтроллером AVR нужна, как фундамент для изготовления аппарата. Из-за того, что экран объединён с контроллером непосредственно, то питание должно быть не более 3,3 вольт, так как при более высоких числах могут возникнуть неполадки в устройстве.
Вам следует взять модуль преобразователя на LM2577, а основой может стать Li-Ion батарея емкостью 2500мА/ч. Выйдет дельная комплектация, отдающая постоянно 3,3 вольта во всём трудовом интервале напряжений. С целью зарядки применяйте модуль на микросхеме TP4056, который считается бюджетным и достаточно качественным. Для того чтобы иметь возможность подсоединить минитерминал к 5-ти вольтовым механизмам без опаски сжечь экран, необходимо использовать порты UART.
Основные аспекты программирования микроконтроллера AVR
Кодирование микроконтоллеров зачастую производят в стиле ассемблера или СИ, однако, можно пользоваться и другими языками Форта или Бейсика. Таким образом, чтобы по факту начать исследование по программированию контроллера, следует быть оснащенным следующим материальным набором, включающим в себя: микроконтроллер, в количестве три штуки — к высоковостребованным и эффективным относят — ATmega8A-PU, ATtiny2313A-PU и ATtiny13A- PU.
Чтобы провести программу в микроконтроллер, нужен программатор: лучшим считают программатор USBASP, который дает напряжение в 5 Вольт, используемое в будущем. С целью зрительной оценки и заключений итогов деятельности проекта нужны ресурсы отражения данных − это светодиоды, светодиодный индуктор и экран.
Чтобы исследовать процедуры коммуникации микроконтроллера с иными приборами, нужно числовое приспособление температуры DS18B20 и, показывающие правильное время, часы DS1307. Также важно иметь транзисторы, резисторы, кварцевые резонаторы, конденсаторы, кнопки.
С целью установки систем потребуется образцовая плата для монтажа. Чтобы соорудить конструкцию на микроконтроллере, следует воспользоваться макетной платой для сборки без пайки и комплектом перемычек к ней: образцовая плата МВ102 и соединительные перемычки к макетной плате нескольких видов — эластичные и жесткие, а также П-образной формы. Кодируют микроконтроллеры, применяя программатор USBASP.
Простейшее устройство на базе микроконтроллера AVR. Пример
Итак, ознакомившись с тем, что собой представляют микроконтроллеры AVR, и с системой их программирования, рассмотрим простейшее устройство, базисом для которого служит данный контроллер. Приведем такой пример, как драйвер низковольтных электродвигателей. Это приспособление дает возможность в одно и то же время распоряжаться двумя слабыми электрическими двигателями непрерывного тока.
Предельно возможный электроток, коим возможно загрузить программу, равен 2 А на канал, а наибольшая мощность моторов составляет 20 Вт. На плате заметна пара двухклеммных колодок с целью подсоединения электромоторов и трехклеммная колодка для подачи усиленного напряжения.
Устройство выглядит, как печатная плата размером 43 х 43 мм, а на ней сооружена минисхемка радиатора, высота которого 24 миллиметра, а масса – 25 грамм. С целью манипулирования нагрузкой, плата драйвера содержит около шести входов.
Заключение
В заключение можно сказать, что микроконтроллер AVR является полезным и ценным средством, особенно, если дело касается любителей мастерить. И, правильно использовав их, придерживаясь правил и рекомендаций по программированию, можно с легкостью обзавестись полезной вещью не только в быту, но и в профессиональной деятельности и просто в повседневной жизни.
Схемы на микроконтроллере, статьи и описания с прошивками и фотографиями для автомобиля.
Простой тахометр на микроконтроллере ATmega8
Тахометр применяется в автомобилях для измерения частоты вращения всяких деталей которые способны вращаться. Есть много вариантов таких устройств, я предложу вариант на AVR микроконтроллере ATmega8. Для моего варианта, вам также…
Читать полностьюЦветомузыка на микроконтроллере Attiny45 в авто
Эта цветомузыка, имея малый размер и питание 12В, как вариант может использоваться в авто при каких-либо мероприятиях. Первоисточник этой схемы Радио №5, 2013г А. ЛАПТЕВ, г. Зыряновск, Казахстан. Схема…
Читать полностьюКонтроллер обогрева зеркал и заднего стекла
Позволяет управлять одной кнопкой раздельно обогревом заднего стекла и зеркал, плюс настраиваемый таймер отключения до полутора часов для каждого канала. Схема построена на микроконтроллере ATtiny13A. Описание работы:
Читать полностьюДиммер для плафона автомобиля
Почти во всех автомобилях есть управление салонным светом, которое осуществляется с помощью бортового компьютера или отдельной бортовой системой. Свет включается плавно, и гаснет также с некой задержкой (для…
Читать полностьюGSM сигнализация с оповещением на мобильник
Представляю очень популярную схему автомобильной сигнализации на базе микроконтроллера ATmega8. Такая сигнализация дает оповещение на мобильник админа в виде звонков или смс. Устройства интегрируется с мобильником с помощью…
Читать полностьюМоргающий стопак на микроконтроллере
Сделал новую версию моргающего стопака. Отличается алгоритм работы и схема управления, размер и подключение такое же. Возможно регулировать частоту моргания, длительность до перехода в постоянное свечение и скважность…
Читать полностьюДХО плюс стробоскопы
Эта поделка позволяет стробоскопить светодиодными ДХО. Поделка имеет малый размер, управление всего одной кнопкой, широкие возможности настройки. Размер платы 30 на 19 миллиметров. С обратной стороны расположен клемник…
Читать полностьюДелаем и подключаем доводчик к сигнализации
Количества автомобилей с автоматическим стеклоподъемниками постоянно растет, и даже если в машине нет такого, многие делают его своими руками. Моей целю было собрать такое устройства и подключить его к…
Читать полностьюСветодиоды включаются от скорости
Получился «побочный продукт»: нужно было оттестить режим работы датчика скорости для проекта отображения передач на матрице 5х7, для этого собрал небольшую схемку. Схемка умеет включать светодиоды в зависимости…
Читать полностьюЦифровой тахометр на AVR микроконтроллере (ATtiny2313)
Тахометр измеряет частоту вращения деталей, механизмов и других агрегатах автомобиля. Тахометр состоит из 2-х основных частей — из датчика, который измеряет скорость вращения и из дисплея, где будет…
Читать полностьюПростой цифровой спидометр на микроконтроллере ATmega8
Спидометр это измерительное устройства, для определения скорости автомобиля. По способу измерения, есть несколько видов спидометра центробежные, хронометрические, вибрационные, индукционные, электромагнитные, электронные и напоследок спидометры по системе GPS.
Читать полностьюПлавный розжиг приборки на микроконтроллере
Эта версия немного отличается схемой: добавлена вторая кнопка настройки и убран потенциометр скорости розжига. Возможности: Два отдельных независимых канала. Для каждого канала три группы настраиваемых параметра: время задержки до начала…
В данной статье предлагается схема цифрового термометра на микроконтроллере AVR ATtiny2313, датчике температуры DS1820 (или DS18b20), подключенному к микроконтроллеру по протоколу 1-wire, и ЖК-дисплее 16×2 на контроллере HD44780. Описываемое устройство может найти широкое применение среди радиолюбителей.
Программа для микроконтроллера написана на ассемблере в среде AVR Studio. Монтаж выполнен на макетной плате, кварцевый резонатор на 4МГц, микроконтроллер ATtiny2313 можно заменить на AT90S2313, предварительно перекомпилировав исходный код программы. Погрешность датчика DS1820 около 0,5 С. В архиве также находится прошивка для случая если используется датчик DS18B20. Опрос датчика производится каждую секунду.
WAV-плеер собран на микроконтроллере AVR ATtiny85 (можно использовать ATtiny25/45/85 серии). У микроконтроллеров этой серии всего восемь ножек и два ШИМ (Fast PWM) с несущей 250kHz. Для управления картой памяти достаточно всего 6 проводов: два для питания и четыре сигнальные. Восемь ножек микроконтроллера вполне достаточно для работой с картой памяти, вывода звука и кнопки управления. В любом случае данный плеер очень прост.
С помощью данного измерителя ёмкости можно легко измерить любую ёмкость от единиц пФ до сотен мкФ. Существует несколько методов измерения емкости. В данном проекте используется интеграционный метод.
Главное преимущество использования этого метода в том, что измерение основано на измерении времени, что может быть выполнено на МК довольно точно. Этот метод очень подходит для самодельного измерителя ёмкости, к тому же он легко реализуем на микроконтроллере.
Данный проект был сделан по просьбе друга для установки на дверь в складское помещение. В дальнейшем было изготовлено ещё несколько по просьбе друзей и знакомых. Конструкция оказалась простой и надёжной. Работает данное устройство так: пропускает только те RFID-карты, которые были заранее занесены в память устройства.
Самое простое устройство на микроконтроллере
Микроконтроллеры / Создание устройств /
Разработка устройств на микроконтроллерах
Возможно, вы уже научились чему-то в теме программирования микроконтроллеров. Возможно, вы уже можете написать программу для простого устройства типа бегущих огней новогодней гирлянды. Однако аппетит приходит во время еды. И наверняка вам хочется чего-то большего. Наверняка вам хочется шагнуть на уровень профессионала. Ну хотя бы на первую ступеньку… Подробнее… |
До сих пор я выдавал вам общие сведения о микроконтроллерах, отрывки из документации, иногда немного говорил о программировании. Но ещё ни разу не приводил примеров устройств на микроконтроллерах. А ведь именно в этом весь смысл обучения — в создании собственных устройств.
Так что с этой статьи я начинаю исправлять положение дел, и буду рассказывать именно о создании устройств с примерами схем, программ и т.п. Рассказы будут для начинающих. Как всегда буду стараться, чтобы понятно было даже людям, далёким от электроники и программирования. И первый пример будет настолько простым, насколько это вообще возможно…
Пример устройства на микроконтроллере
Итак, наше первое устройство на микроконтроллере будет не простым, а очень простым. И хотя сделать какой-то полезный прибор с наипростейшей схемой и наипростейшей программой крайне сложно, я всё-таки постараюсь. Конечно, эта полезность будет весьма сомнительной, но всё-таки применить это устройство можно будет не только для обучения, но и на практике (конечно, скорее как игрушку, но всё же).
Для опытов возьмём один из самых дешёвых микроконтроллеров — ATtiny13A, о котором я уже немало поведал на этом сайте.
Самая простая схема на микроконтроллере
Наше первое устройство, можно сказать, почти не будет делать ничего полезного. Но зато оно очень простое и новичкам будет проще разобраться как со схемотехникой, так и с программой микроконтроллера.
Итак, наше устройство — это простейшая сигнализация. Если вход микроконтроллера замкнут, то на выходе ноль. Если вход разомкнуть, то на выходе, к которому подключен светодиод, появится сигнал. Светодиод включится, и это будет означать, что сигнализация сработала.
Конечно, это всё достаточно примитивно. Однако в давние времена, когда я занимался (в том числе) и обслуживанием систем сигнализации, мы использовали такие самодельные “датчики”. Например, обматывали решётку на окне тонким проводом и подключали его в шлейф прибора сигнализации. Если злодей выдернет решётку — провод порвётся и сигнализация сработает.
Ну а теперь к схеме.
Микроконтроллер ATtiny13A по умолчанию использует внутренний генератор на 9,6 МГц (это следует из документации, и я писал об этом здесь). И если нас такое решение устраивает (а нас оно устраивает), то это означает, что никаких внешних цепей для задания тактовой частоты нам не потребуется.
Микроконтроллер ATtiny13A выпускается в нескольких корпусах. Будем считать, что у нас корпус 8PDIP/SOIC (подробнее об этом здесь). Тогда схема будет такой:
Наверно вы знаете, что у этих МК есть встроенные подтягивающие резисторы. Но эти резисторы очень маломощные и могут перегореть, если их использовать с нагрузкой. Поэтому последовательно со светодиодом лучше ставить внешний резистор.
На схеме SA1 может быть либо охранным датчиком, либо просто тонким проводом, обмотанным, например, вокруг какого-то охраняемого предмета. При обрыве провода (или размыкании контакта) сигнализация “срабатывает” и светодиод загорается.
Конечно, это слишком несовершенная система. Но мы же только учимся. И в начале пути создания устройств на микроконтроллерах это лучшее решение, потому что оно самое простое.
Простая программа микроконтроллера
Ну а теперь можно перейти к программированию. Я буду использовать ассемблер и среду разработки AVRStudio 4. Почему я использую именно эту среду, хотя есть более новые версии, я рассказал здесь.
Итак, пройдём путь от создания проекта до написания программы.
Запускаем среду разработки AVRStudio 4 и видим окно:
Нажимаем кнопку NEW PROJECT. Откроется окно:
Здесь можно выбрать вид проекта — на ассемблере или на Си, задать имя проекта и выбрать каталог для файлов проекта.
ВНИМАНИЕ!
В пути к файлу не должно быть русских букв. То есть если вы сохраните проект в папку МОИ_ПРОГРАММЫ
, то программа не скомпилируется, так как AVR Studio 4 может не понять путь с русскими буквами.
Мы будем писать программу на ассемблере. Проект назовём myprog
.
Теперь можно нажать кнопку ДАЛЕЕ (NEXT).
В следующем окне надо выбрать отладочную платформу и тип микроконтроллера:
Выберем AVR Simulator
. Ну и поскольку у нас микроконтроллер ATtiny13A, то выберем ATtiny13
. Затем нажимаем FINISH.
Ну вот. Проект создан. Редактор исходного кода открыт. Теперь можно приступить к написанию программы. Она может быть примерно такой:
; Сообщить ассемблеру модель микроконтроллера .device ATtiny13A .nolist ; Подключить файл с объявлениями для ATtiny13A .include "tn13def.inc" .list ; Инициализация Init: ; PB0 - вход, остальные - выходы LDI R16, 0b11111110 OUT DDRB, R16 ; Включить подтяжку для PB0 LDI R16, 0b00000001 OUT PortB, R16 ; Начало программы Start: SBIS PinB, 0 ; Проверить датчик SBI PortB, 1 ; Если обрыв, то включить светодиод SBIC PinB, 0 ; Проверить датчик CBI PortB, 1 ; Если замкнут, то погасить светодиод RJMP Start ; Возвращаемся к началу программы
При инициализации мы определяем, какие выводы будут входами, а какие — выходами. Если в бит регистра DDRB
записать 0, то соответствующий вывод порта В
будет входом, если 1 — выходом.
У нас к выводу РВ0 подключен датчик, следовательно, РВ0 будет входом. К выводу РВ1 подключен светодиод, значит, РВ1 будет выходом. Неиспользуемые выводы лучше всегда делать выходами (хотя здесь у каждого свои предпочтения).
С помощью команды LDI
мы записываем число в регистр R16
,
который используем как временную переменную. Это необходимо, потому что команда
OUT
не может записать в регистр DDRB
непосредственное значение.
Далее мы включаем подтягивающий резистор для вывода РВ0. Для этого в регистр PortB
надо в соответствующий бит записать 1.
Ну а далее начинается программа.
Сначала выполняем команду SBIS
. Эта команда проверяет указанный вход. И если на этом входе 1, то следующая команда НЕ БУДЕТ выполнена. То есть в этом коде:
SBIS PinB, 0 SBI PortB, 1 SBIC ...
мы проверяем РВ0. Если там единица, то мы переходим к команде SBIC
.
Если же ноль (датчик разомкнут — сигнализация сработала), то выполняем команду SBI
, которая устанавливает указанный выход (то есть в нашем случае зажигает светодиод, подавая напряжение на вывод РВ1).
Затем выполняем команду SBIC
. Эта команда также проверяет указанный вход. Но если на этом входе 0,
то следующая команда не будет выполнена. Если же 1 (контакты датчика замкнуты), то будет выполнена команда CBI
, которая обнуляет указанный вывод. То есть на РВ1 будет подан 0, и светодиод погаснет.
Таким образам исполняется наш простой алгоритм: если датчик “не сработал” (контакт замкнут), то светодиод не горит. Если контакты разомкнулись, то светодиод светится.
На этом пока всё. Если что-то осталось непонятно — посмотрите видео в начале статьи.
Микроконтроллеры для ЧАЙНИКОВ
Бесплатная рассылка о микроконтроллерах. Рассылка содержит как бесплатную информацию для начинающих, так и ссылки на платные продукты (книги, видеокурсы и др.) для тех, кто захочет вникнуть в тему более глубоко. Подробнее… |
Разработка электроники. О микроконтроллерах на пальцах / Хабр
Задумывая технологический стартап, вы совсем не обязаны быть асом в электронике, гораздо больше шансов на хорошую идею имеет узкий специалист со знанием основ маркетинга, но, даже заказывая кому-то разработку, ориентироваться в возможностях современной элементной базы и представлять цену решения необходимо обязательно. Иначе можно потребовать невозможного, либо получить устройство с завышенной себестоимостью на устаревшей элементной базе.
Под катом попытка кратко и просто рассказать о возможностях современных микроконтроллеров людям от них далёким. Для тех, у кого есть идея нового электронного устройства, но отсутствует представление о том, что такое микроконтроллер. Те, кто хочет сделать первый шаг от занимательных экспериментов с платформой ардуино к проектированию собственных устройств, также могут найти в ней простые, но полезные советы. Я старался, не останавливаясь на технических подробностях, для этого и книги не достаточно изложить суть и дать несколько простейших, но полезных советов по схемотехнике, чтобы предостеречь от элементарных ошибок начинающих.
Краткое содержание статьи:
Как микроконтроллеры завоевали мир
Архитектура ARM — сегодняшний лидер рынка микроконтроллеров
Конкуренция с младшими братьями
Об укладке асфальта, пользе сна и его разновидностях
Совсем коротко о технологии изготовления и о том, как появляются серии микроконтроллеров
Периферия простейшего ARM микроконтроллера за пол бакса
Самый дешёвый способ получить дополнительные функции
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?
Cortex-M7 — когда хочется большего…
Защита кода, возможность его обновления и многообразие помогли микроконтроллерам завоевать мир
Любой умный прибор требует управления. В большинстве случаев сегодня этим занимаются микроконтроллеры — чипы, которые совмещают в себе микропроцессорное ядро, память и периферийные модули, отвечающие за связь с остальными компонентами устройства и внешним миром.
Микроконтроллеры — мастера на все руки. Один микроконтроллер способен заменить десятки специализированных микросхем, которые были бы необходимы для выполнения требуемых функций в случае, если бы роль вычислителя занимал микропроцессор.
Одно из неоспоримых преимуществ микроконтроллера — программа, под управлением которой он работает, скрыта внутри его корпуса (в секции под названием “память программ”) и очень хорошо защищена от взлома, конечно, в случае, если разработчик микрокода об этом позаботился, активизировав встроенные механизмы защиты. Таким образом, вы получаете защиту интеллектуальной собственности настолько большую, насколько это возможно в наши дни.
Что нельзя взломать — то можно скопировать. Зачем пытаться считать код, встроенной в микроконтроллер программы, с помощью дорогостоящих хитроумных приспособлений, если проще и дешевле найти профессионала, который может написать его заново? Возможно результат будет даже лучше, а функционал богаче чем у прототипа. Да это стоит денег, но содержание FLASH памяти сегодняшних микроконтроллеров настолько хорошо защищено, что попытки грубого “взлома” обойдутся ещё дороже. Кроме того, решается проблема интеллектуальной собственности, а вы, вместе с исходными кодами программы, получаете возможность развивать и совершенствовать своё устройство.
Память программ, в современных универсальных микроконтроллерах, является перезаписываемой, причём процесс перезаписи можно повторять не один десяток тысяч раз. Напрашивается использование этого факта для обновления программного обеспечения с целью устранения найденных в нём ошибок или расширения функций уже работающего устройства. Это достаточно просто реализовать — добавив в программу специальный участок кода под названием “бутлоадер”, вы получаете возможность обновлять программное обеспечение вашего прибора различными способами: в пункте сервисного обслуживания (если устройство имеет специальный, скрытый внутри корпуса от посторонних глаз, разъём), подключив к компьютеру по USB, через сетевой или даже беспроводной интерфейс. Главное, предусмотреть в приборе необходимую для этого периферию. Предоставляя возможность обновления ПО, всегда следует думать о безопасности, если этот процесс недостаточно защищён, мало того, что злоумышленники могут похитить ваш код, они могут модифицировать его и использовать в своих не исключено, что коварных целях. Например, взять под контроль вещи вашего “умного дома” или шпионить с помощью, установленной вами же у себя дома, WEB камеры.
Архитектура ARM — сегодняшний лидер рынка микроконтроллеров
Со времён Царя Гороха микроконтроллеры принято разделять по разрядности данных, над которыми они проводят операции. В подавляющем большинстве случаев, сегодня, в новых разработках, стоит останавливать свой выбор на 32 битных микроконтроллерах с ядром АRM. Существует огромное количество их модификаций и всегда можно подобрать экземпляр, наилучшим образом подходящий для решения вашей задачи. В зависимости от набора функций и производительности, цена чипа может составлять от десятков центов до десятков долларов.
Микроконтроллеры(MCU), в зависимости от архитектуры вычислительного ядра, принято разделять на крупные семейства. На сегодняшний день, для разработок устройств малой и средней сложности, наиболее популярны микроконтроллеры c ядрами от Cortex-M0 до Cortex-M7. Чем больше цифра, тем больше вычислительные (и не только) возможности, цена и максимальное энергопотребление. Не последнюю роль в популярности ARM сыграла преемственность архитектуры. Разработчик может с минимальными издержками модифицировать программный код своих предыдущих наработок, переходя от микроконтроллеров одного производителя к чипам другого и мигрируя между ядрами с разной производительностью.
Конкуренция с младшими братьями
Однако ARMы «рулили» не всегда. Я хорошо помню времена, когда абсолютными лидерами рынка были 8 битные микроконтроллеры и, с занятых позиций, их безуспешно пытались оттеснить 16 битные коллеги, но, по иронии судьбы, удалось сделать это только 32 битным старшим братьям. Так сложилось, что к моменту их появления, технологии изготовления чипов сильно удешевили интеграцию в них больших объёмов FLASH памяти. Воспользовавшись удобным случаем, программисты стали переходить с ассемблера на язык более высокого уровня — Си, структура которого отлично ложилась на 32 битную архитектуру. В результате 32 битные микроконтроллеры выполняли вычисления гораздо быстрее своих 8 и 16 битных коллег, но была одна проблема — у них был выше ток потребления.
Поэтому, поначалу, они использовались в случаях, когда требовалась большая вычислительная производительность.
Известно, что средний ток потребления вычислительного ядра микроконтроллера существенно увеличивается с поднятием его тактовой частоты. Поначалу 8 битные модели микроконтроллеров отличались заметно меньшим потреблением при сходной частоте и, кроме того, были способны работать от низкой тактовой частоты, вплоть до 32 кГц.
Энергопотребление микроконтроллеров сильно зависит от тактовой частоты ядра и периферии, чтобы её регулировать, для генерации стали использовать, широко применявшийся в радиопередающих устройствах, узел формирования тактовой частоты на основе ФАПЧ. Это позволило в широких пределах изменять тактовую частоту, не меняя задающий кварцевый резонатор. Периферийным модулям совсем не обязательно иметь такую же тактовую частоту, что и вычислительному ядру. Чтобы снизить их энергопотребление, частоту на них стали подавать через делители с программно-регулируемым коэффициентом деления. Ввели возможность отключать неиспользуемые модули. Эти меры сильно уменьшили энергопотребление, но оно по прежнему оставалось существенно больше, чем у 8 битных.
На короткое время сложился паритет — 32 битные MCU захватили нишу топовых приложений, а 8 битные уверенно удерживали позиции в устройствах, для которых было важно низкое энергопотребление. Он сохранялся до тех пор, пока 32 битные MCU не освоили в совершенстве «импульсный» режим работы.
8-битники, к тому времени, тоже научились это делать, но, из-за низкой производительности, бодрствовать им приходилось гораздо больше и, как результат, они начали проигрывать по энергопотреблению, особенно в задачах, требующих расчётов, что иллюстрирует картинка ниже.
Об укладке асфальта, пользе сна и его разновидностях
Итак, микроконтроллеры настолько хорошо научились считать, что стали выполнять свою работу очень быстро и большинство времени были вынуждены “бить баклуши”, пожирая энергию для выполнения холостых циклов. В устройствах с автономным питанием это сильно сокращает ресурс батарей или время работы от одной зарядки аккумуляторов.
Понаблюдайте за строительными рабочими которые кладут асфальт. Они резко активизируют свою работу, когда пришёл грузовик с новой порцией асфальта, а после его укладки снижают темп. Так и микроконтроллеры умеют повышать и снижать частоту тактирования ядра. Однако, им это даётся не так просто, как рабочим — одновременно изменится и частота работы всей внутренней периферии, поэтому, чувствительные к этому её части придётся перенастраивать.
Не проще ли, выполнив быстро всю работу, немного поспать. Зачастую, да. Причём виды сна микроконтроллеров отличаются ещё более драматично, чем у человека.
Можно просто вздремнуть. В этом случае наш чип всегда наготове и как только зазвенел будильник таймера или его потревожило внешнее прерывание, он просыпается практически мгновенно. Как человек во время дремоты может снять напряжение, но не выспаться толком, когда тебя постоянно дёргают, так и микроконтроллер может снизить своё энергопотребление в этом режиме “всего” раз в 10, называют этот режим SLEEP.
Лучший способ хорошо выспаться — раздеться, лечь в постель, задёрнуть шторы на окне и включить будильник. Однако, после такого сна, уже моментально в работу не включишься. Придётся, как минимум, предварительно ополоснуться холодной водой и одеться. Есть такой режим и у микроконтроллера, когда он ограничивает количество внешних раздражителей и выключает основной тактовый генератор. Это режим STOP. В нём можно уменьшить потребление в 1000 раз, но и на выход из него уже потребуется существенное время.
Теперь, представьте себе, что вы перед сном выпили изрядную дозу снотворного, отключили будильник и телефон, закрыли все окна и двери. Это будет режим STAND BY. Вывести из такого режима микроконтроллер можно только с помощью особых выводов и большая часть памяти о том, чем он занимался перед таким сном будет потеряна навсегда, придётся начинать работу заново. Зато находясь в таком режиме MCU потребляет ещё в два раза меньше.
Последний, весьма экзотический режим, напоминает уже кому, из которой нельзя выйти без специального оборудования. В этом случае работает только специальный генератор тем не менее, являющийся частью микроконтроллера на отдельном часовом кварце, который может функционировать от собственного источника питания и иметь буквально несколько байт оперативной памяти, предназначение которой напомнить микроконтроллеру о том, из какого состояния он в эту кому впал. Если остальные части микроконтроллера, при этом, отключить от питания, то энергопотребление может составить уже одну десятитысячную часть от активного режима.
Выбирая режим экономии энергопотребления необходимо помнить о последствиях применения:
- чем глубже сон, тем дольше пробуждение
- чем глубже сон, тем меньше способов вывести из него микроконтроллер
- чем глубже сон, тем меньше остаётся информации о предыдущем состоянии микроконтроллера
- для достижения минимальных заявленных значений, во многих режимах необходимо принимать дополнительные меры, например — отключения периферии
- для минимизации энергопотребления устройства в целом необходимо грамотно спроектировать схемотехнику всего устройства
- для минимизации энергопотребления устройства в целом, нужно позаботиться о том, чтобы остальные компоненты и цепи также имели микропотребление в неактивном режиме. Глупо предпринимать огромные усилия для того, чтобы опустить потребление микроконтроллера ниже одного микроампера и, при этом, применять в устройстве дешёвый стабилизатор с током собственного потребления в 100 микроампер
но встречается такое сплошь и рядом - для успешного использования режимов глубокого сна не только программа, но и схемотехника, должны быть тщательно продуманы, иначе, вместо экономии, можно получить весьма серьёзные проблемы — редко случающееся, зато “мёртвое” зависание устройства по необъяснимой причине, либо слишком частое пробуждение и, как результат, потребление на порядки выше ожидаемого
Если ваши программист со схемотехником не первый день винят друг друга в криворукости и, вместе, производителя в публикации нереальных цифр в даташитах на микроконтроллер, а ваше устройство сажает батарейки на порядок быстрее, чем вы рассчитывали, это повод, по крайней мере, обратиться к независимым высококвалифицированным экспертам.
Совсем коротко о технологии изготовления и о том, как появляются серии микроконтроллеров
Физически активная часть микроконтроллера, как и подавляющее количество других микросхем, обычно сформирована на пластине монокремния (назовём его, в данном контексте, ЧИП). Чипы занимают очень маленькую площадь, технологически же выгодно производить пластины большого диаметра, поэтому, обычно большое количество чипов, как соты, размещают на одной большой пластине и формируют, в ходе одного технологического процесса. В последствии пластины нарезают на кусочки, получая уже отдельные чипы, которые и помещают в корпуса.
Разработка топологии и отладка технологических процессов нового чипа стоит очень дорого, а занимаемое на пластине одним чипом место, как правило, не велико. Производителям выгодно выпускать чипы крупными партиями, но пользователям требуются микроконтроллеры в разных корпусах — кому то важно получить корпус поменьше и подешевле, другому наоборот требуется побольше выводов, чтобы управлять LCD или внешней памятью с параллельным интерфейсом. Производителям выгодно перекрывать все ниши, чтобы клиенты не перебегали к конкурентам, не найдя оптимальной для себя модели.
Очень часто бывает выгодней выпустить крупной партией один универсальный чип и помещать его в разные корпуса, чем запускать десяток различных. У чипов, помещённых в корпуса с малым количеством выводов, часть портов (в данном контексте, под портами будем понимать контактные площадки на поверхности чипа, служащие для общения с внешним миром) просто останутся неподсоединёнными. Часто производители идут дальше — чтобы поднять спрос и цену на микроконтроллеры с большим количеством ножек, они искусственно обрезают функциональность тех, у которых их меньше — отключают некоторые функции, ограничивают объём доступной памяти и т. п.
Так на основе одного чипа формируют серии микроконтроллеров, существенно отличающиеся по объёму памяти и набору периферийных модулей, иной раз и в разы по цене. При этом чипы, в них установленные, могут нарезаться из одних и тех же пластин. Поскольку площадь, на которой размещается один чип, невелика, вклад её в себестоимость конечного изделия также мал и им можно пожертвовать. Становится выгодным отключение дополнительной памяти и других функций, например, на этапе тестирования — либо с помощью однократно программируемых битов конфигурации, либо пережиганием перемычек лазером. Лишь для наиболее массовых изделий имеет смысл для этого создавать слегка изменённый фотошаблон. Причём, совсем не обязательно там будет физически отсутствовать неиспользуемая память, её, опять же, можно просто отключить, удалив перемычки в шаблоне.
Так из одного стандартного дизайна чипа формируется целая серия микросхем.
Периферия простейшего ARM микроконтроллера за пол бакса
Процессорное ядро — это мозг, но, чтобы он не был подобен “сферическому коню в вакууме”, требуются аналоги органов чувств и конечностей.
В микроконтроллере их роль играют выводы на корпусе, к которым внутри корпуса могут подключаются порты(контактные площадки) чипа. В свою очередь, через внутренние коммутаторы, к одному и тому же порту могут подключаться различные периферийные модули.
Для начала рассмотрим периферию одной из простейших серий от ST на основе ядра Cortex-M0 — stm32F03.
Для этой серии имеем следующий набор базовых функций:
Часы реального времени (Real Time Clock или RTC), которые могут запитываться с помощью отдельного вывода и работают от отдельного низкочастотного резонатора. Этот модуль потребляет крайне мало энергии, в случае пропадания основного питания он может часами работать от заряженного конденсатора, или годами от маленькой встроенной в прибор батарейки. Кроме этого, он может служить в качестве будильника, выводя микроконтроллер из состояния даже самого глубокого сна в заранее заданное время.
WatchDog — сторожевая собака мешающая микроконтроллеру заснуть навсегда, например, свалившись в бесконечный цикл или перейдя по несуществующему адресу. Его принцип работы прост. Программист настраивает таймер защиты от “зависания” на определённый период времени, допустим на секунду, и запускает его. Затем он расставляет, в выбранных им местах программы, короткие участки кода, которые перезапускают таймер с нулевого значения. Если за секунду не произошло ни одного сброса таймера, WatchDog считает, что с программой что-то не так и устраивает микроконтроллеру перезапуск. Программа начинает работать с начала, причём существует возможность определить являлся ли инициатором ресета WatchDog и учесть этот факт при запуске.
Универсальные цифровые входы-выходы (General Purpose Input-Output GPIO) — это самая распространённая функция, которую поддерживают большинство выводов микроконтроллера. Они могут конфигурироваться либо как входы, либо как выходы.
Рассмотрим работу в качестве входа. Если напряжение на входе микроконтроллера меньше некоего порога (как правило близкого к половине питания), то оно воспринимается как логический ноль, в противном случае как 1. Цифровые входы обычно имеют очень высокое входное сопротивление, поэтому, если их оставить не подключенными, их состояние может скакать из нуля в единицу и обратно, под действием наводок электромагнитных полей. Для того, чтобы этого не происходило, существуют специальные режимы, когда внутри чипа вход соединяется через сопротивление 20 — 50 КОм с плюсом питания микроконтроллера (pull-up) или с минусом (pull-down).
Если выводы сконфигурированы цифровыми выходами, то их программно можно перевести в высокий уровень равный напряжению питания микроконтроллера, либо низкий. Существуют и более хитрые режимы, но не будем вдаваться в чрезмерные подробности.
Советы начинающим разработчикам Выводы микроконтроллера — мастера на все руки, но следует соблюдать простые правила, чтобы не вывести их из строя. Несмотря на все предосторожности, предпринимаемые производителями чипов, они боятся статики и перенапряжений, поэтому не стоит подсоединять их напрямую к разъёмам, выходящим за пределы платы. Необходимо, в этом случае, предпринять меры — либо воспользоваться специальными интегральными компонентами защиты, либо предусмотреть в схеме супрессор, стабилитрон или защитные диоды, плюс установить в разрыв между выводом разъёма и портом токоограничивающее сопротивление.На рисунке выше изображён участок схемы, спроектированного мной устройства (спутникового модема), с элементами простейшей защиты портов микроконтроллера. X4 — разъём для внешних коммуникаций. Нас интересуют контакты 5-7, к которым присоединяются тревожные кнопки. Сигналом тревоги служит замыкание на землю, поэтому, в нормальном состоянии, на портах должно присутствовать напряжение питания микроконтроллера, что и обеспечивают резисторы R24-R26, номиналом 1 КОм. Супрессоры VD4-VD6 ограничивают напряжение на уровне 5 вольт, это допустимо потому, что применяемый мной микроконтроллер, хотя и питается напряжением 3,3 вольта, но имеет порты толерантные к напряжению 5 вольт. Резисторы R29-R31 на 100 Ом.
Подобная защита спасёт порты вашего микроконтроллера от внешних перенапряжений. У некоторых микроконтроллеров отдельные порты не боятся напряжений, превышающих их напряжение питания. Так у многих микроконтроллеров STM32Fxx почти все порты будучи сконфигурированными как цифровые могут работать с 5 вольтовыми цепями, но если они работают в аналоговом режиме, например в качестве входа АЦП, теряют эту способность и это необходимо учитывать при разработке схемы.
Пожалуйста, соблюдайте технику безопасности. Не оставляйте, свободные, висящие в воздухе порты микроконтроллера сконфигурированными в виде входов, особенно в устройствах временами уходящих в глубокий сон — это как минимум может значительно усложнить процесс прохождение вашего устройства теста на ЭМС (электро-магнитную совместимость). Если оставляете их входами, лучше замкнуть их на землю или питание. Либо программно сконфигурировать выходами.
Существует ещё один лайфхак. Иногда их можно оставить входом и замкнуть на другую цепь. Это помогает в случае очень плотной трассировки провести проводник «сквозь» микроконтроллер, что особо актуально для двухслойных плат.
Используя порты микроконтроллеров в качестве выходов, также стоит свериться с даташитом. Отдельные порты могут иметь разное ограничение по максимальному току, который от них можно получить не опасаясь выхода их строя — нагрузочную способность. Кроме этого, сам чип имеет максимальную нагрузочную способность всех выходов в сумме, которую не следует превышать.
Последнее, о чём хочется упомянуть, выходные порты ARM микроконтроллеров не реагируют на программные инструкции мгновенно, как у 8-битных микроконтроллеров. Они управляются через шину, и их быстродействие зависит от частоты тактирования соответствующего узла, которую можно менять программно. Если вы хотите быстрой реакции, позаботьтесь об увеличении этой частоты, если важнее уменьшить энергопотребление, наоборот выберите менее скоростной режим.
Температурный сенсор
Микроконтроллер имеет свой собственный температурный сенсор, правда не слишком точный, тем не менее его можно, с определёнными допущениями, использовать для измерения температуры внутри корпуса прибора.
Уникальный серийный номер Каждый микроконтроллер имеет свой уникальный серийный номер, присвоенный ему на производстве. Очень удобная особенность, которую можно использовать при организации серийного производства ваших изделий.
Интерфейсы обмена данными Различные микроконтроллеры данной серии могут иметь по нескольку наиболее распространённых интерфейсов, сильно облегчающих общение с другими чипами и внешним миром:
- USART — асинхронный последовательный порт, часто использующийся для связи с компьютером
там он называется COM или RS232, модемами и другими устройствами - SPI — высокоскоростной интерфейс, который имеют очень многие чипы, например внешняя память
- I2C — двухпроводной интерфейс, разработанный для общения с датчиками и другой периферией на небольшом расстоянии и небольших скоростях обмена. Большой его плюс заключается в том, что одновременно к одной шине можно подключить десятки различных устройств
Все эти интерфейсы несложно реализовать программно с помощью обычных GPIO, но они будут работать гораздо медленнее и отнимать много ресурсов вычислительного ядра.
Аналого-цифровой преобразователь АЦП или ADС на котором придётся остановиться подробнее.
Чрезвычайно полезный модуль, который способен измерять напряжение аналоговых сигналов. Оценивает он их в долях от величины опорного источника сигнала, в нашем случае это напряжения питания аналогового модуля микроконтроллера, которое может быть равным или немного ниже основного напряжения питания чипа. Теоретическая точность работы АЦП зависит от его разрядности. В современных микроконтроллерах чаще всего применяется 12 разрядный АЦП последовательного приближения, реже 10 и как экзотика встречается 16.
При питании 3 вольта 12 разрядный АЦП микроконтроллера будет иметь разрешающую способность 3/4096=0.00073 Вольта — лучше одного милливольта.
Но на практике достичь этого идеала бывает не просто.
Подробности для начинающих разработчиковНа практике всё бывает далеко не так красиво и точность измерений может снижаться по многим причинам. Ниже перечисляю основные, хорошо известные любому опытному электронщику, а также простые но эффективные способы сведения их пагубного влияния до минимуманестабильность напряжения источника питания АЦП
- применять для питания MCU линейные стабилизаторы с хорошими параметрами
- применять для питания аналоговой части MCU высокостабильные источники опорного напряжения
импульсные помехи по питанию АЦП
- подключать аналоговое питание к цифровому через простейшие фильтры низкой частоты — подавать питание на аналоговую часть MCU через индуктивность и в непосредственной близости от входа микроконтроллера устанавливать керамический конденсатор с диэлектриком XR7 ёмкостью 100 нанофарад, а ещё лучше, параллельно ему включить танталовый конденсатор с ёмкостью в одну — две микрофарады.
импульсные помехи на входе АЦП
- пропускать входной сигнал хотя бы через простейший ФНЧ, состоящий из резистора и конденсатора. Для борьбы с помехами от передающих радиотрактов и короткими импульсными помехами иногда достаточно одиночного конденсатора с диэлектриком NP0 ёмкостью в несколько десятков пикофарад, установленного между входом и землёй, в непосредственной близости от входа АЦП
- не экономить на блокировочных конденсаторах, по крайней мере самого микроконтроллера, устанавливать их в непосредственной близости от каждого вывода питания и в других местах, рекомендованных производителем, рекомендованного им номинала
- тщательно выбирать месторасположение компонентов и соблюдать правила трассировки цепей питания и особенно “земли”, в идеале аналоговая и цифровая земли должны соединяться в одной точке — рядом с выводом аналоговой земли микроконтроллера
высокое выходное сопротивление источника сигнала
, опасно тем, что в момент старта измерения АЦП последовательного приближения, которое чаще всего используется в микроконтроллерах, его вход потребляет некоторый отличный от нуля ток и это может привести к уменьшению истинного значения напряжения, так как сигнал фактически подаётся через делитель напряжения.
- правильно выбирать параметры настройки АЦП, например во многих микроконтроллерах можно увеличить время зарядки входной цепи, правда тут приходится идти на компромисс, снижая быстродействие
- устанавливать на входе АЦП буферные усилители на основе ОУ (операционный усилитель), или повторители напряжения. Выбирать их по принципу самых дешёвых не стоит, можно не улучшить, а ухудшить ситуацию, причём значительно. Если не хватает собственного опыта, лучше поискать специально рекомендованные производителями для подобных приложений
Выше изображён участок реальной схемы для подачи питания на аналоговую часть микроконтроллера в устройстве с батарейным питанием. В данном случая я использовал АЦП для оцифровки сигнала с аналогового MEMS микрофона и поэтому имело смысл выделить в отдельную цепь не только аналоговое питание, но и аналоговую землю. В большинстве случаев это избыточно, для того чтобы от неё действительно был толк, нужна ещё и правильная трассировка.
От цепи VBUT питается вся цифровая часть микроконтроллера. На всякий случай привожу номиналы элементов: R5-10 Ом, С10 0.1 мкФ, без индуктивностей L1 и L2 BLM18PG471SN1D в большинстве случаев можно обойтись.
Ещё один любопытный пример из моей практики. В плате, на которой размещалось большое количество высокопотребляющих чипов ASIC, необходимо было измерять их температуру. Самый простой и дешёвый способ — использование высокоомных термисторов. В качестве фильтров я применил конденсаторы достаточно большой ёмкости, воспользовавшись тем фактом, что температура меняется сравнительно медленно. Для оцифровки звука такой фокус однозначно бы «не прокатил».
Осталось упомянуть ещё одну важную особенность АЦП, характерную для микроконтроллеров. Собственно, модулей АЦП в нём, как правило, один или два, а вот входов может быть много. В описываемой серии модуль 1, а входов может быть до 16. Как же так? Очень просто, входы подсоединены к нему через коммутатор. Если вы собираетесь измерять напряжение с 10 входов, то должны организовать цикл — последовательно переключить коммутатор к каждому из 10 входов и сделать измерение. Это необходимо учитывать, рассчитывая времена измерения. В данной серии АЦП, теоретически, способно сделать измерение за 1 микросекунду. Получается, что полный цикл 10 измерений у вас займёт точно больше 10 микросекунд!
Система прямого доступа в память ПДП или DMA
— ещё одна архиважная вещь. Этот модуль позволяет пересылать данные от периферии в память или наоборот.
Например, с его помощью вы можете выделить участок памяти для хранения данных, приходящих из АЦП и сделать из него кольцевой буфер. Далее запускается АЦП в режиме считывания данных через равные промежутки времени. Используя механизмы DMA, считанные данные будут, без участия ядра, самостоятельно, байт за байтом, помещаться в выделенный буфер. Когда буфер будет полностью заполнен, ядро получит сигнал и приступит к их программной обработке, а система DMA начнёт процесс загрузки сначала. Поскольку DMA имеет несколько каналов, то никто не мешает реализовать для нашего случая автоматический вывод на USART данных из буфера. В результате мы получим, работающий без использования ядра процесс передачи считанных с АЦП в USART, и не простая работа программиста по конфигурации DMA окупится сторицей.
Модуль широтно-импульсной модуляции ШИМ или PWM, в силу ограниченности статьи не будем останавливаться на нём подробно, отмечу только, что это крайне полезная и широко используемая функция, с помощью которой возможно управлять яркостью светодиодов, скоростью вращения двигателей, рулевыми машинками, конструировать интеллектуальные DC-DC преобразователи и даже звук синтезировать.
Что можно получить, добавив 30 центов?
Переход на Cortex-M0+. Самый дешёвый способ получить дополнительные функции
А какие дополнительные плюшки предлагает микроконтроллер новейшей серии с ядром чуть посовременнее Cortex-M0+, при стоимости на 20-50 центов дороже аналогов в рассмотренной выше серии по корпусу и количеству выводов?
Таблица отличий между сериями
- в два раза увеличилась максимальная тактовая частота
- с 2 до 1.7 вольт понизилось минимальное напряжение питания
- АЦП способно работать в два с половиной раза быстрее
- появились два канала 12 битного цифро-аналогового преобразователя. Это крайне полезная функция, с помощью которой возможно формировать на выводах сигнал заданного напряжения с точностью лучшей чем 1 мВ, например сигналы произвольной формы в звуковом диапазоне частот
- появились компараторы — устройства для сравнения величин двух аналоговых сигналов, это бывает полезным скажем для определения момента возникновения перегрузки по току
- добавлен USB интерфейс, посредством которого можно подключать устройства к компьютеру. Особый интерес вызывает наличие поддержки опций управления питанием для реализации USB type3-C совместимого интерфейса. О нём я рассказывал в одной из своих статей на Хабре
- появился ускоритель AES для процедур 256 битного шифрования/дешифрации
- UART получил возможность работы в режимах сна и аппаратную поддержку протоколов LIN (простая сеть, широко используется в автопроме), IRDA (протокол передачи данных посредством инфракрасных светодиодов, вспомните телевизионные пульты), SIMcard…
- расширены возможности таймеров и модуля PWM
- верхняя граница температурного диапазона работы поднялась до 125 градусов
- увеличена надёжность работы за счёт расширения режимов перезапуска при возникновении проблем с питанием
- добавлен “честный” аппаратный генератор случайных значений — полезная функция в криптографии
Ну что же, для многих применений незначительная добавка в цене себя вполне окупает, поскольку можно отказаться от перехода на более дорогостоящие микроконтроллеры старших модельных рядов.
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?
- Максимальная тактовая частота вырастает уже до 80 МГц
- Появился блок для ускорения вычислений с плавающей точкой
- Ясное дело, максимальная встроенная память увеличилась
- Модели с количеством ног 100 и более поддерживают работу с внешней статической памятью
- USB научился работать в режиме HOST
- Появился контроллер CAN интерфейса. Это очень перспективный интерфейс разработанный для высоконадёжных приложений. Своё победное шествие он начал с автомобильной промышленности и уже почти 20 лет ведёт затяжную войну с давно устаревшим RS-485 в крайне консервативной отрасли промышленной автоматизации.
- Появился интерфейс для подключения SDcard. Очень полезная функция — добавляете в своё устройство держатель за 50 центов и получаете съёмный носитель размером в десятки Гигабайт! С большинством карт удаётся работать и по обычному SPI, но намного медленнее
- Добавили встроенный Операционный Усилитель с большим разнообразием режимов работы. Именно благодаря этой и предыдущей функциям, для своего последнего проекта беспроводного стетоскопа, пришлось остановить выбор на M4 вместо M0+. В результате появилась возможность управлять усилением сигнала с MEMS микрофона и сохранять десятки часов аудиозаписей работы сердца на SD карте
- Криптомодуль научился аппаратно считать HASH функции.
- Контроллер сенсорных приложений усовершенствован и теперь поддерживает уже не только кнопки, но и элементы прокрутки
Cortex-M7 — когда хочется большего…
В подавляющем количестве проектов возможностей предоставляемых вышеописанными ядрами достаточно, но случаются и исключения. Лично со мной такое случалось всего пару раз, причём лишь один раз по действительно уважительной причине — требовалась высокая производительность для подготовки данных для ASIC, контроллер Ethernet и шина CAN-FD c повышенной скоростью обмена.
Если на уровне универсальных микроконтроллеров с ядрами Cortex 4 и ниже, на мой субъективный взгляд, по параметру цена/функциональность сейчас лидирует фирма ST, то в области более высокопроизводительных чипов она уступает лидерство ATMEL, вернее, теперь уже недавно поглотившему его MICROCHIP. Поэтому я остановил свой выбор на серии ATSAMV71, стоимостью от 6 долларов.
Помимо вышеописанного (контроллер Ethernet и шина CAN-FD), по большому счёту, мы получаем, существенно увеличивающее производительность ядро с ускорителем операций, работающее на тактовой частоте до 300 МГц, интерфейсы для подключения видеоматрицы и поддержку динамической памяти.
В заключении попрошу имеющих опыт общения с микроконтроллерами попрошу выбрать подходящий ответ на вопрос.
Микроконтроллеры. Устройство и особенности. Применение
Микроконтроллеры внешне похожи на маленькие микросхемы. На их кристалле выполнена сборка своеобразного микрокомпьютера. Это значит, что в устройство корпуса одной микросхемы вмонтировали память, процессор и периферийные устройства, которые взаимодействуют друг с другом, с внешними устройствами, и работают под руководством особой микропрограммы, хранящейся внутри корпуса.
Устройство и применение
Микроконтроллеры предназначены для управления разными электронными приборами и устройствами. Они используются не только в компьютерах, но и в различной бытовой технике, в роботах на производстве, в телевизорах, в оборонной промышленности. Микроконтроллер является универсальным инструментом, с помощью которого осуществляется управление различной электроникой. При этом алгоритм управляющих команд человек закладывает в них самостоятельно, и может менять его в любое время, в зависимости от ситуации.
Сегодня выпускается много разных видов форм и серий микроконтроллеров, но их сфера использования, назначение и принцип работы одинаков.
Внутри корпуса микроконтроллера находятся основные элементы всей его структуры. Существует три класса таких устройств: 8, 16 и 32-разрядные. Из них 8-разрядные модели имеют малую производительность. Она достаточна для решения простых задач управления объектами. 16-разрядные микроконтроллеры – модернизированные 8-разрядные. Они имеют расширенную систему команд. 32-разрядные устройства включают в себя высокоэффективный процессор общего назначения. Они используются для управления сложными объектами.
- Арифметико-логическое устройство служит для производства логических и арифметических операций, выполняет работу процессора совместно с регистрами общего назначения.
- Оперативно запоминающее устройство служит для временного хранения информации во время функционирования микроконтроллера.
- Память программ является одним из основных структурных элементов. Она основана на постоянном запоминающем устройстве с возможностью перепрограммирования, и служит для сохранения микропрограммы управления работой микроконтроллером. Она называется прошивкой. Ее пишет сам разработчик устройства. Изначально в памяти программ завод изготовитель ничего не закладывает, и там нет никаких данных. Прошивку с помощью программатора разработчик устройства записывает внутрь.
Память данных используется в некоторых моделях микроконтроллеров для записи различных постоянных величин, табличных данных и т.д. Эта память имеется не во всех микроконтроллерах.
- Для связи с внешними устройствами существуют порты ввода-вывода. Их также используют для подключения внешней памяти, различных датчиков, исполнительных устройств, светодиодов, индикаторов. Интерфейсы портов ввода-вывода разнообразны: параллельные, последовательные, оборудованные USB выходами, WI FI. Это расширяет возможности применения микроконтроллеров для различных сфер управления.
- Аналого-цифровой преобразователь требуется для введения аналогового сигнала на вход микроконтроллера. Его задачей является преобразование сигнала из аналогового вида в цифровой.
- Аналоговый компаратор служит для выполнения сравнения двух сигналов аналогового вида на входах.
- Таймеры используются для выполнения установки диапазонов и задержки времени в функционировании микроконтроллера.
- Цифро-аналоговый преобразователь исполняет обратную работу по преобразованию из цифрового сигнала в аналоговый.
- Действие микроконтроллера синхронизируется с генератором тактовыми импульсами при помощью блока синхронизации, который работает совместно с микропрограммой. Генератор тактовых импульсов может быть как внутренним, так и внешним, то есть, тактовые импульсы могут подаваться с постороннего устройства.
В результате микроконтроллеры можно назвать электронными конструкторами. На их основе можно создать любое управляющее устройство. С помощью программ можно подключать или отключать составные элементы, находящиеся внутри, задавать свой порядок действий этих элементов.
Микроконтроллеры и их применениеСфера их использования постоянно расширяется. Микроконтроллеры применяются в различных механизмах и устройствах. Основными областями их применения являются:
- Авиационная промышленность.
- Робототехника.
- Промышленное оборудование.
- Железнодорожный транспорт.
- Автомобили.
- Электронные детские игрушки.
- Автоматические шлагбаумы.
- Светофоры.
- Компьютерная техника.
- Автомагнитолы.
- Электронные музыкальные инструменты.
- Средства связи.
- Системы управления лифтами.
- Медицинское оборудование.
- Бытовая техника.
Примером можно рассмотреть использование микроконтроллеров в автомобильной электронике. В некоторых автомобилях Пежо встроено 27 различных микроконтроллеров. В элитных моделях БМВ применяется более 60 таких устройств. Они контролируют жесткость подвески, впрыск топлива, работу приборов освещения, стеклоочистителей, стеклоподъемников и других механизмов.
Советы по выборуПри разработке цифровой системы требуется сделать правильную модель микроконтроллера. Главной целью является подбор недорого контроллера для уменьшения общей стоимости всей системы. Однако, необходимо, чтобы он соответствовал специфике системы, требованиям надежности, производительности и условиям использования.
Основными факторами подбора микроконтроллера являются:
- Способность работы с прикладной системой. Возможность реализации этой системы на однокристальном микроконтроллере, или на специализированной микросхеме.
- Наличие в микроконтроллере необходимого количества портов, контактов, так как при их нехватке он не будет способен выполнить задачу, а если будут лишние порты, то стоимость будет завышена.
- Необходимые устройства периферии: различных преобразователей, интерфейсов связи.
- Наличие других вспомогательных устройств, ненужных для работы, из-за которых повышается стоимость.
- Сможет ли ядро контроллера обеспечить требуемую производительность: мощность вычислений, дающую возможность обработки запросов системы на определенном прикладном языке программирования.
- Имеется ли в проекте бюджета достаточно финансов, чтобы применять дорогостоящий микроконтроллер. Если он не подходит по цене, то остальные вопросы не имеют смысла, и разработчик должен искать другой микроконтроллер.
- Доступность. В этот фактор входят следующие пункты:
— Нужное количество.
— Выпускается ли в настоящее время.
— Наличие поддержки разработчика.
— Наличие языков программирования, внутрисхемных эмуляторов, средств отладки и компиляторов.
- Информационная поддержка, включающая в себя:
— Связь с профессиональными специалистами.
— Квалификация персонала, и их заинтересованность в помощи и решении проблем.
— Примеры текстов программ.
— Программы и бесплатные ассемблеры.
— Сообщения об ошибочных действиях.
— Примеры использования.
- Надежность завода изготовителя. В этот фактор входит:
— Период работы по этой теме.
— Качество изделий, надежность изготовления.
— Профессиональная компетентность, подтвержденная научными разработками.
Похожие темы:
Создаем устройства на микроконтроллерах (2007) А. В. Белов
Данная книга представляет собой практическое пособие по разработке электронных схем с применением микроконтроллеров и управляющих программ к ним. Основа книги — это ряд практических примеров, которые от простого к сложному раскрывают принципы построения схем и написания программ для микроконтроллеров. Специально разработанные примеры вводят читателя в мир программирования с самых азов, пройти по всем этапам усложнения задачи и заканчиваются описанием нескольких интересных конструкций имеющих определенную практическую ценность.
После урока по программированию и схемотехники читатель получает подробные сведения о том, как происходит написание трансляция и отладка программ, познакомится с программными средствами, облегчающими редактирование и отладку программ. В заключении вы познакомитесь с принципами построения программаторов для прошивки оттранслированных программ в микросхему микроконтроллера, рассмотрите конкретную схему программатора и научитесь работать с программой, управляющей этим программатором.
Книга рассчитана на широкий круг читателей. Она будет полезна разработчикам электронных устройств, радиолюбителям и студентам технических ВУЗов.
Глава 1. Написание программ для микроконтроллеров AVR1.1. Общие положения
1.2. Простейшая программа
Постановка задачи
Принципиальная электрическая схема
Алгоритм
Программа на Ассемблере
Директивы
Операторы
Описание программы (листинг 1.1)
Программа на языке СИ
Работа программы, написанной на языке Си Описание программы (листинг 1.2)
1.3. Переключающийся светодиод
Постановка задачи
Принципиальная схема
Алгоритм
Программа на Ассемблере
Описание программы (листинг 1.3)
Программа на языке СИ
Описание программы (листинг 1.4)
1.4. Боремся с дребезгом контактов Постановка задачи.
Схема
Алгоритм
Программа на Ассемблере
Описание программы (листинг 1.5)
Программа на языке СИ
1.5. Мигающий светодиод
Постановка задачи
Схема
Алгоритм программы
Программа на Ассемблере
Описание программы (листинг 1.7)
Программа на языке СИ
1.6. Бегущие огни
Постановка задачи
Схема
Алгоритм
Выполнение алгоритма сдвига
Программа на Ассемблере
Описание программы (листинг 1.9)
Программа на языке СИ
1.7. Использование таймера
Постановка задачи
Схема
Алгоритм
Программа на Ассемблере
Описание программы (листинг 1.11)
Программа на языке СИ
1.8. Использование прерываний по таймеру
Постановка задачи
Схема
Алгоритм
Программа на Ассемблере
Описание программы (листинг 1.13)
Программа на языке СИ
Описание программы (листинг 1.14)
1.9. Формирование звука
Постановка задачи
Схема
Алгоритм
Программа на Ассемблере
Описание программы (листинг 1.15)
Программа на языке СИ
Описание программы (листинг 1.16)
1.10. Музыкальная шкатулка
Постановка задачи
Схема
Алгоритм
Кодируем мелодии
Алгоритм работы музыкальной шкатулки
Программа на Ассемблере
Описание программы (листинг 1.17)
Процедура вычисления адреса
Текст программы «шаг за шагом»
Особенности программы
Подрограмма формирования задержки
Программа на языке СИ
Описание программы (листинг 1.18)
1.11. Кодовый замок
Постановка задачи
Алгоритм
Схема
Программа на Ассемблере
Описание программы (листинг 1.19)
Процедура записи ключевой комбинации в EEPROM
Процедура проверки кода
Процедура открывания замка
Программа на языке СИ
Описание программы (листинг 1.20)
1.12. Кодовый замок с музыкальным звонком
Постановка задачи
Алгоритм
Схема
Программа на Ассемблере
Программа на языке СИ
Глава 2 . Отладка и трансляция программ
2.1. Программная среда AVR Studio
2.1.1. Общие сведения
Отладка программы
Программный отладчик
Аппаратный отладчик
Полнофункциональные программные имитаторы электронных устройств
Внутренний отладчик микроконтроллеров AVR
Программная среда «AVR Studio»
2.1.2. Описание интерфейса
Главная панель программы «AVR Studio»
2.1.3. Создание проекта
2.1.4. Трансляция программы
Форматы файлов
Формат НЕХ-файла
Процедура трансляции
2.1.5. Отладка программы
Ошибки алгоритма и его реализации
Этапы процесса отладки
Применение точек останова
Просмотр и изменение содержимого введенных переменных
2.1.6. Исправление ошибок
2.1.7. Создание проектов на языке СИ
2.2. Система программирования Code Vision AVR
2.2.1. Общие сведения
2.2.2. Интерфейс системы Code Vision AVR
Окно номер 1
Окно номер 2
Окно номер 3
Создание проекта без использования мастера
Отладка программы
2.3. Программаторы
2.3.1. Общие сведения
2.3.2. Схема программатора
Универсальные и специализированные программаторы
Способ подключения программатора к компьютеру.
Внутрисхемное программирование
Питание программатора
2.3.3. Программа управления программатором
Знакомство с программой PonyProg
Алгоритм действий
Программирование микросхем
Режимы работы программатора
ПРИЛОЖЕНИЕ
Сводная таблица команд Ассемблера микроконтроллеров AVR
Группа команд логических операций
Группа команд арифметических операций
Группа команд операций с разрядами
Группа команд сравнения
Группа команд операций сдвига
Группа команд пересылки данных
Группа команд управления системой
Группа команд передачи управления (безусловная передача управления)
Группа команд передачи управления (пропуск команды по условию)
Группа команд передачи управления (передача управления по условию)
Список литературы
Список ссылок в Интернет
Название: Создаем устройства на микроконтроллерах
Автор: А. В. Белов
Год: 2007
Издательство: СПб-Наука и Техника
Страниц: 307 с ил.
Серия «Радиолюбитель»
Формат: PDF
Размер файла: 24,95 Мб
Скачать Создаем устройства на микроконтроллерах (2007) А. В. Белов
Устройство микроконтроллера: АЛУ и организация памяти
Процессорное ядро микроконтроллеров:
– арифметико-логическое устройство
– организация памяти
Доброго дня уважаемые радиолюбители!
Приветствую вас на сайте “Радиолюбитель“
Сегодня (точнее – в течении нескольких статей) мы с вами более подробно рассмотрим основу любого микроконтроллера – процессорное ядро.
Основные элементы:
1. Арифметико-логическое устройствоАЛУ – сердце (а может быть и ум, с честью и совестью) микроконтроллера.
Здесь мы не будем входить в роль “маньяка-расчленителя” и ковыряться во внутренностях этого устройства. Усвоим только, что благодаря АЛУ происходит вся работа микроконтроллера. Если у вас когда-нибудь появится желание более глубже узнать как работает “сердце” микроконтроллера (а будет неплохо, если оно появится), то в книгах замечательных авторов Белова, Рюмика, Евстифеева, Ревича, Баранова и многих других, вы всегда найдете подробный ответ.
Прежде чем рассматривать память микроконтроллера, немного поговорим о памяти вообще.
Человеческая память – с ней все понятно, – она бывает “твердой” (когда находишься в твердой памяти, а иногда еще и в здравом уме) и, как не прискорбно, – “дырявой”. А вся информация хранится в так называемых “нейронах” – маленьких ячейках памяти.
У микроконтроллеров почти все также. Только, если у человека самая маленькая ячейка для хранения информации называется “нейрон”, то для микроконтроллера самая маленькая ячейка памяти для хранения информации называется “бит“.
В одном бите может храниться или одна логическая единица, или один логический ноль.
Бит – минимальная единица измерения объема памяти в микропроцессорной технике.
Следующая основная, или самая распространенная, единица измерения памяти – байт.
Байт – это восемь бит информации. В одном байте может храниться только восемь нулей и единиц.
Максимальное число которое можно записать в байт – 255. Если в программе вы будете оперировать большими числами то следует знать (чтобы знать сколько байт потребуется для хранения числа), что максимальное число, которое можно записать в:
– один байт = 255
– два байта = 65 535
– три байта = 16 777 215
– четыре байта – число величиной более 4 миллиардов (если вы не входите хотя бы в сотню журнала “Форбс”, то четыре байта памяти для хранения чисел вам не понадобятся).
Запись в память и чтение из памяти происходит байтами (нельзя записать или считать один бит информации).
Следующая единица измерения – килобайт.
В килобайте помещается 1024 байт информации (именно 1024, а не 1000 байт).
Есть еще и большие величины измерения объема памяти (мегабайт, гигабайт), но в микроконтроллерах они пока не применяются.
Я надеюсь, что с единицами измерения электронной памяти нам все понятно:
Микросхемы AVR имеют три вида памяти:
– память программ, она же FLASH-память
– память данных, она же ОЗУ (оперативно-запоминающее устройство), она же SRAM
– энергонезависимая память, она же ЭСППЗУ, она же EEPROM
В микроконтроллере выделяется три адресных пространства в которых располагаются вышеперечисленные разновидности памяти. Память данных при этом (в смысле выделенного адресного пространства) оказалась немного обделенной – ей приходится делить свое адресное пространство с ячейками памяти в которых хранятся регистры общего назначения и регистры ввода/вывода (о них вы подробно узнаете в следующей статье). Эти регистры физически не относятся к памяти данных, но находятся в том же адресном пространстве. Если начальные адреса памяти программ и энергонезависимой памяти начинаются с нулевого адреса, то начальный адрес памяти данных не начинается с нулевого адреса – с нулевого адреса занимают места регистры общего назначения и регистры ввода/вывода, и только за ними следуют адреса ячеек памяти программ.
В некоторых видах МК ATiny память данных отсутствует.
Память программ предназначена для хранения в ней наших программ, а также любых нужных нам данных, которые не меняются в ходе выполнения программы (константы). При выключении питания микроконтроллера, все данные в памяти программ сохраняются.
Память программ, естественно, имеют все микроконтроллеры. Размер памяти программ, в зависимости от типа МК, варьируется от 1 килобайта до 256 килобайт.
Доступ к памяти программ имеет только программист при программировании МК, у самого МК доступ к памяти программ тоже имеется, но только для чтения данных из памяти, записать туда он ничего не может (мало ли что, вдруг захочет испортить нашу программу). Правда, у МК семейства Mega есть возможность (с разрешения программиста) вносить изменения в памяти программ, но это отдельная история.
Для памяти программ есть еще два вида измерения объема памяти – “слово” и “страница“.
Дело в том, что память программ состоит из ячеек состоящих из двух байт. Такая ячейка называется “словом”. А сделано это так потому, что почти все команды МК состоят из двух байт, и, соответственно, для их записи нужно два байта в памяти программ. Каждая команда МК – это одно “слово”. Есть несколько команд, для записи которых требуется 4 байта в памяти – два слова, но такие команды встречаются в МК у которых память программ больше 8 килобайт.
Таким образом, в одну ячейку памяти программ можно записать:
– любую команду, состоящую из двух байт
– половину команды, состоящей из 4 байт
– две константы, каждая из которых умещается в один байт, или одну шестнадцатиразрядную константу. При этом, если вы записываете в память три однобайтовых константы, они все равно займут в памяти четыре байта (два слова).
Кроме того, запись в память программ осуществляется не только “словами”, но еще и “страницами”. Размер “страницы” составляет от 64 до 256 байт (чем больше объем памяти программ, тем больше объем “страницы”). Что это значит. Если вы создали маленькую программку, объем которой составляет 11 слов (22 байта), в памяти программ она все равно займет место в одну страницу, т.е. как минимум 64 байта. “Лишние” 42 байта при этом будут заполнены или нулями, или единицами. Вот такие вот, пироги.
Но и это еще не все.
Память программ может иметь три состояния (если можно так выразиться):
1. Вся память находится в распоряжение программиста
В этом случае мы можем забить всю память полностью своей программой и данными. А программа будет стартовать с нулевого адреса памяти.
2. Часть памяти забирает МК
В случае, если при работе МК используются прерывания (а я надеюсь – вы помните, что это такое), часть памяти МК забирает для нужд обработки прерываний и хранит в ней “векторы прерываний“.
Что это такое.
Когда мы разрешаем МК обрабатывать прерывания, он, начиная с нулевого адреса памяти, забирает часть ячеек для хранения в них адресов, по которым надо перейти МК для выполнения подпрограммы прерывания. Для каждого прерывания МК выделяет два байта памяти (одно слово) в которых хранятся адреса подпрограмм обработки прерываний. Вот эти адреса, которые указывают где находится в памяти подпрограмма обработки того, или иного прерывания, называются “векторами прерываний“. А вся область памяти, в которой хранятся “векторы прерываний”, называется таблицей векторов прерываний. Количество занятых ячеек памяти под прерывания зависит напрямую от количества возможных прерываний данного микроконтроллера (от нескольких штук, до нескольких десятков). Все прерывания располагаются в начале памяти программ, с нулевого адреса, и имеют четкую последовательность. По нулевому адресу всегда располагается вектор прерывания по “сбросу” (Reset). Когда мы включаем устройство, или производим сброс кнопкой, срабатывает прерывание по сбросу. МК считывает с нулевого адреса (с ячейки) адрес, который указывает где в памяти находится начало нашей программы, и перейдя по этому адресу начинает выполнять программу. Сама программа в этом случае будет располагаться в памяти программ сразу за таблицей прерываний.
3. МК забирает еще одну часть памяти программ (точнее не забирает, а выделяет область в конце памяти, в которой программист размещает специальную программу – “загрузчик”).
Такое возможно в МК семейства “MEGA”, у которых есть возможность разрешить МК вносить изменения в памяти программ. Что это значит.
Некоторые МК имеют возможность самопрограммироваться. В практике любителей такая возможность МК используется крайне редко. Возможность перепрограммироваться (самопрограммироваться) нужна, в основном, в случаях промышленного производства какого-то устройства на микроконтроллере, для которого потом может выпускаться обновление программного обеспечения. Мы эту возможность рассматривать не будем, по крайней мере пока. Нам достаточно только знать, что в МК, которые поддерживают самопрограммирование, память программ разделяется на две части:
— верхняя – секция прикладной программы, где располагается наша программа и векторы прерываний
— нижняя – секция загрузчика (Boot Loader Section – по английски), где программист располагает свою программу-загрузчик. Размер секции загрузчика зависит от общего размера памяти программ МК, и может составлять от 128 байт до 4096 байт. Если возможность самопрограммирования МК мы не используем, то эта секция отдается для нашей программы и данных.
Ну а FLASH-памятью память программ называют потому, что она делается по так называемой Flash-технологии (как и всем нам привычные компьютерные “флешки”)
Память программ допускает 10 тысяч циклов перепрограммирования.
Оперативно-запоминающее устройство, оно же память данных типа SRAM, предназначена для хранения в ней различных данных, получаемых в результате работы программы.
При выключении питания микроконтроллера, все данные хранящиеся в ней теряются.
Память данных есть почти во всех микроконтроллерах (отсутствует у простейших МК семейства Tiny).
Во всех МК семейства Mega (и части МК семейства Tiny) объем встроенной памяти данных колеблется от 128 байт до 8 килобайт, и почти вся она отдана в наше полное распоряжение. Только немножко забирает себе МК для организации стека (что это такое узнаем позднее). В некоторых МК предусмотрено подключение внешней памяти (она может быть любого типа – FLASH, SRAM, EEPROM) объемом до 64 килобайт. В случае подключения внешней памяти в таких МК, она становится как-бы продолжением памяти данных.
Запись в память данных и чтение из нее происходит побайтно, и в отличии от памяти программ в ней нет деления на страницы и слова.
Энергонезависимая память также относится к памяти данных, но в отличие от последней имеет несколько особенностей. Предназначена она для хранения данных и констант, которые должны сохраняться при отсутствии питания.
EEPROM имеют все микроконтроллеры.
При выключении питания микроконтроллера все данные, хранящиеся в энергонезависимой памяти сохраняются (поэтому она и называется энергонезависимой).
Объем энергонезависимой памяти, в зависимости от типа МК, колеблется от 64 байт до 4 килобайт.
Запись и чтение информации в память производится побайтно. Однако в старших моделях семейства MEGA, энергонезависимая память, так же как и память программ, имеет страничную запись. Объем страницы небольшой, составляет всего 4 байта. На практике эта особенность не имеет значения – и запись, и чтение осуществляется все равно побайтно.
Число циклов записи и стирания памяти достигает 100 000.
Главная особенность EEPROM заключается в том, что при записи в нее данных она становится очень “медленной” – запись одного байта может продолжаться от 2 до 4 миллисекунд (это очень низкая скорость), и может случиться, к примеру, что во время записи сработает какое-либо прерывание и в этом случае процесс записи данных будет загублен.
Кроме того, не рекомендуется записывать данные в энергонезависимую память с нулевого адреса (не помню источника этих сведений, но точно помню, что где-то читал) – возможно повреждение данных в ходе работы МК. Иногда программисты отступают на несколько байт от начала памяти, и только в следующих ячейках начинают запись данных.
Предыдущие статьи:
♦ Микроконтроллер и как его победить
♦ Микроконтроллер и системы счисления
♦ Микроконтроллер и логические операции
♦ Общее устройство микроконтроллера
Следующие статьи:
♦ Регистры общего назначения, регистры ввода/вывода, стек, счетчик команд
♦ Регистр состояния SREG
♦ Порты ввода/вывода микроконтроллера
микроконтроллеров повсюду
микроконтроллеры повсюдуМикроконтроллеры везде ….. подробнее здесь
Используется во всем, от простейшего контроллера полива газона до очень сложные спутниковые системы, микроконтроллер стал вездесущий и невидимый. В среднем в домохозяйстве США около 60 встроенных микроконтроллеры. 1 BMW 7-й серии 1999 года выпуска имеет 65 микроконтроллеров. 2 Ежегодно сюда добавляется более 5 миллиардов микроконтроллеров.Хотя микроконтроллеры в ПК наиболее заметны, они составляют всего 6% от рынок микроконтроллеров. 3
Где используются микроконтроллеры
В офисе микроконтроллеры используются в компьютерных клавиатурах, мониторы, принтеры, копировальные аппараты, факсы и телефонные системы и многие другие. В вашем доме микроконтроллеры используются в микроволновых печах, стиральных и сушильных машинах, системы безопасности, контроллеры станций полива газонов, музыка / видео развлекательные компоненты.
Что такое микроконтроллеры?
Микроконтроллеры — это законченные компьютерные системы на микросхеме, обычно объединяет арифметико-логический блок (ALU), память, таймер / счетчики, последовательный порт, порты ввода / вывода (I / O) и тактовый генератор.
Микроконтроллеры используются в приложениях, требующих повторяющихся такие операции, как включение светофора на перекрестке. В этом приложения, единственная функция микроконтроллера — включать и выключать свет в заранее определенное время.
Другой пример — микроволновая печь. Давайте посмотрим, как микроконтроллер функционирует при приготовлении пакета попкорна в микроволновой печи.
Вы открываете дверь и кладете внутрь пакет с попкорном. Ты близко дверь и нажмите кнопку с надписью «Попкорн». Через несколько минут прозвучал тон объявляет, что попкорн готов. Что произошло за кулисами?
Когда вы открыли дверь, микроконтроллер обнаружил дверь выключатель, включил свет и отключил магнетрон.Микроконтроллер постоянно сканирует клавиатуру. Когда вы нажали кнопку «Попкорн», микроконтроллер подтвердил, что дверь закрыта и начал отсчет времени импульсов, запустил мотор для поворотного стола, установил уровень мощности магнетрон и управлял дисплеем. Когда таймер достиг нуля, микроконтроллер выключил магнетрон, остановил поворотный стол и подал сигнал ты.
Это простой пример приложения микроконтроллера.Доступны микроконтроллеры с дополнительными функциями, такими как аналого-цифровой. преобразователи (АЦП), широтно-импульсная модуляция (ШИМ), сторожевые таймеры, контроллер вычислительная сеть (CAN) и функции безопасности.
типов и применения микроконтроллеров — EIT | Инженерный технологический институт: EIT
Введение в микроконтроллер:
Микроконтроллер (μC или uC) — это микрокомпьютер на одной микросхеме, изготовленный на базе СБИС. Микроконтроллер также известен как встроенный контроллер.Сегодня на рынке доступны различные типы микроконтроллеров с разной длиной слова, такие как 4-битные, 8-битные, 64-битные и 128-битные микроконтроллеры. Микроконтроллер — это сжатый микрокомпьютер, предназначенный для управления функциями встроенных систем в офисных машинах, роботах, бытовой технике, автомобилях и ряде других устройств. Микроконтроллер состоит из таких компонентов, как память, периферийные устройства и, самое главное, процессор. Микроконтроллеры в основном используются в устройствах, которым требуется определенная степень контроля со стороны пользователя устройства.
Основы микроконтроллера:
Любое электрическое устройство, которое хранит, измеряет, отображает или вычисляет информацию, состоит из микросхемы микроконтроллера
внутри себя. Базовая структура микроконтроллера состоит из: —
1. ЦП — Мозг микроконтроллера называется ЦП. ЦП — это устройство, которое используется для получения данных, их декодирования и успешного завершения поставленной задачи. С помощью центрального процессора все компоненты микроконтроллера объединены в единую систему.Выборка
инструкций, редактируемая программируемой памятью, декодируется ЦП.
2. Память — В микроконтроллере микросхема памяти работает так же, как микропроцессор. Чип памяти хранит все программы и данные. Микроконтроллеры построены с определенным объемом ПЗУ или ОЗУ (EPROM, EEPROM и т. Д.) Или флэш-памятью для хранения исходных кодов программ.
3. Порты ввода / вывода — порты ввода / вывода в основном используются для взаимодействия или управления различными устройствами, такими как принтеры, ЖК-дисплеи, светодиоды и т. Д.
4.Последовательные порты — эти порты предоставляют последовательные интерфейсы между микроконтроллером и различными другими периферийными устройствами, такими как параллельный порт.
5. Таймеры — микроконтроллер может быть встроен с одним или несколькими таймерами или счетчиками. Таймеры и счетчики контролируют все операции подсчета и синхронизации в микроконтроллере. Таймеры используются для подсчета внешних импульсов. Основными операциями, выполняемыми таймерами, являются генерация импульсов, функции часов, измерение частоты, модуляция, создание колебаний и т. Д.
6.ADC (Аналого-цифровой преобразователь) –ADC используется для преобразования аналоговых сигналов в цифровые. Входные сигналы должны быть аналоговыми для АЦП. Производство цифровых сигналов можно использовать в различных цифровых приложениях (например, в измерительных устройствах).
7. ЦАП (цифро-аналоговый преобразователь) — этот преобразователь выполняет функции, противоположные АЦП. Это устройство обычно используется для контроля аналоговых устройств, таких как двигатели постоянного тока и т. Д.
8. Интерпретирующее управление. Этот контроллер используется для обеспечения отложенного управления рабочей программой.Интерпретация может быть внутренней или внешней.
9. Специальный функциональный блок — Некоторые специальные микроконтроллеры, изготовленные для специальных устройств, таких как космические системы, роботы и т. Д., Содержат этот специальный функциональный блок. Этот специальный блок имеет дополнительные порты для выполнения некоторых специальных операций.
Типы микроконтроллеров:
Микроконтроллеры делятся на категории в соответствии с их памятью, архитектурой, битами и наборами команд
.Итак, давайте обсудим типы микроконтроллеров:
бит:
8-битный микроконтроллер выполняет логические и арифметические операции. Примером 8-битного микроконтроллера является Intel 8031/8051. Микроконтроллер
16 бит работает с большей точностью и производительностью в отличие от 8-битного.
Примером 16-разрядного микроконтроллера является Intel 8096.
32-разрядный микроконтроллер используется в основном в устройствах с автоматическим управлением, таких как офисные машины, имплантируемые медицинские приборы и т. Д.Для выполнения любых логических или арифметических функций требуются 32 — битные инструкции.
Память:
- Микроконтроллер внешней памяти — когда встроенная структура построена с микроконтроллером, который не включает все функционирующие блоки, существующие на микросхеме, она называется микроконтроллером внешней памяти. Для иллюстрации — микроконтроллер 8031 не имеет памяти программ на микросхеме.
- Микроконтроллер со встроенной памятью — когда встроенная структура построена с микроконтроллером, который состоит из всех функциональных блоков, существующих на микросхеме, он называется микроконтроллером встроенной памяти.Для иллюстрации — микроконтроллер 8051 имеет всю память программ и данных, счетчики и таймеры, прерывания, порты ввода / вывода и, следовательно, свой микроконтроллер встроенной памяти.
Набор команд:
CISC-CISC означает компьютер со сложным набором команд, он позволяет пользователю применять 1 инструкцию как
в качестве альтернативы многим простым инструкциям.
RISC-RISC означает компьютеры с сокращенным набором команд. RISC сокращает время работы на
, сокращая тактовый цикл на инструкцию.
Архитектура памяти:
- Гарвардская архитектура памяти Микроконтроллер
- Принстонская архитектура памяти Микроконтроллер
8051 микроконтроллер:
Наиболее широко используемый набор микроконтроллеров относится к семейству 8051. Микроконтроллеры 8051 по-прежнему остаются идеальным выбором для огромной группы любителей и экспертов. В течение 8051 года человечество стало свидетелем самого революционного набора микроконтроллеров. Первоначально микроконтроллер 8051 был изобретен Intel.Двумя другими членами этого семейства 8051 являются:
- 8052. Этот микроконтроллер имеет 3 таймера и 256 байтов ОЗУ. Кроме того, он имеет все функции традиционного микроконтроллера 8051. Микроконтроллер 8051 является частью микроконтроллера 8052.
- 8031 - Этот микроконтроллер меньше ПЗУ, за исключением того, что он имеет все функции традиционного микроконтроллера 8051. Для выполнения в его микросхему можно добавить внешнее ПЗУ размером 64 Кбайт.
8051 микроконтроллер задействует 2 различных типа памяти, таких как — NV-RAM, UV — EPROM и Flash.
8051 Архитектура микроконтроллера:
Микроконтроллер 8051 — это восьмиразрядный микроконтроллер, выпущенный в 1981 году корпорацией Intel. Он доступен в 40-контактном DIP-корпусе (двухрядный корпус). Он имеет 4 КБ ПЗУ (программируемое пространство на кристалле) и 128 байтов встроенного ОЗУ, при желании 64 КБ внешней памяти могут быть связаны с микроконтроллером. Есть четыре параллельных 8-битных порта, которые легко программируются, а также адресуются. Встроенный кварцевый генератор интегрирован в микроконтроллер с тактовой частотой 12 МГц.В микроконтроллере есть последовательный порт ввода / вывода, который имеет 2 контакта. В него также встроены два таймера по 16 бит; эти таймеры могут использоваться как таймеры для внутреннего функционирования, а также как счетчики для внешнего функционирования. Микроконтроллер состоит из 5 источников прерываний, а именно: прерывание последовательного порта
, прерывание от таймера 1, внешнее прерывание 0, прерывание от таймера 0, внешнее прерывание 1. Режим программирования этого контроллера micro-
включает в себя GPR (регистры общего назначения), SFR (специальные регистры). регистры функций) и SPR (регистры специального назначения).
PIC Микроконтроллер:
Контроллер периферийного интерфейса (PIC), предоставленный Micro-chip Technology для классификации своих микроконтроллеров с одиночным чипом. Эти устройства оказались чрезвычайно успешными в 8-битных микроконтроллерах. Основная причина этого заключается в том, что Micro-Chip Technology постоянно модернизирует архитектуру устройства и включает в микроконтроллер столь необходимые периферийные устройства, чтобы удовлетворить потребности клиентов. Микроконтроллеры PIC очень популярны среди любителей и промышленников; это единственная причина широкой доступности, низкой стоимости, большой базы пользователей и возможности последовательного программирования.
Архитектура микроконтроллера PIC:
Архитектура 8-битных микроконтроллеров PIC может быть классифицирована следующим образом:
1. Архитектура базовой линии — В базовую архитектуру включены микроконтроллеры PIC семейства PIC10F, за исключением части PIC12 и PIC16. семьи также включены. Эти устройства используют 12-битную архитектуру программного слова с альтернативами от шести до двадцати восьми выводов.
Кратко определенный набор атрибутов базовой архитектуры позволяет получать наиболее прибыльные продуктовые решения.Эта архитектура идеально подходит для гаджетов с батарейным питанием. Серия PIC10F200 — еще один недорогой 8-битный микроконтроллер флэш-памяти с 6-контактным корпусом.
2. Архитектура среднего диапазона — в эту среднюю линию добавлены семейства PIC12 и PIC16, которые атрибутируют 14-битную архитектуру программного слова. Гаджеты среднего уровня PIC16 предлагают широкий спектр альтернативных пакетов (от 8 до 64 пакетов) с низким и высоким уровнем встраивания периферийных устройств
. Это устройство PIC16 поддерживает множество аналоговых, цифровых и последовательных периферийных устройств, таких как SPI, USART, I2C, USB, ЖК-дисплеи и аналого-цифровые преобразователи.Микроконтроллеры PIC16 среднего уровня обладают функцией приостановки управления с восьмиуровневой аппаратной нагрузкой.
3. Высокопроизводительная архитектура. Высокопроизводительная архитектура включала семейство устройств PIC18. Эти микроконтроллеры используют 16-битную архитектуру программного слова вместе с альтернативами от 18 до 100 выводов. Устройства PIC18 представляют собой высокопроизводительные микроконтроллеры со встроенными аналого-цифровыми преобразователями. Все микроконтроллеры PIC18 объединяют высокоразвитую архитектуру RISC, которая поддерживает флеш-устройства.PIC18 имеет улучшенные атрибуты фундамента, 32 уровня глубокой нагрузки и несколько внутренних и внешних прерываний.
AVR Микроконтроллер:
AVR, также известный как Advanced Virtual RISC, представляет собой 8-битный микроконтроллер с одиночным чипом RISC с 8-разрядной архитектурой Гарвардского университета. Он был изобретен Атмелем в 1966 году. Гарвардская архитектура означает, что программа и данные накапливаются в разных местах и используются одновременно. Это было одно из передовых семейств микроконтроллеров, в которых встроенная флэш-память использовалась в основном для хранения программ, в отличие от одноразовых программируемых EPROM, EEPROM или ROM, используемых другими микроконтроллерами одновременно.Флэш-память — это энергонезависимая (постоянная при отключении питания) программируемая память. Архитектура микроконтроллера AVR: Архитектура микроконтроллера AVR
была разработана Альф-Эгилем Богеном и Вегардом Волланом. Название AVR происходит от имен разработчиков архитектуры микроконтроллера. AT90S8515 был передовым микроконтроллером, основанным на архитектуре AVR; с другой стороны, первым микроконтроллером, который поразил коммерческий рынок, был AT90S1200, выпущенный в 1997 году.
SRAM, Flash и EEPROM объединены в одну микросхему, что устраняет необходимость в любой другой внешней памяти в максимальном количестве устройств. Несколько устройств содержат альтернативу параллельной внешней шины, чтобы добавить дополнительные устройства памяти данных. Приблизительно все устройства, за исключением микросхем TinyAVR, имеют последовательный интерфейс, который используется для связи больших последовательных микросхем Flash и EEPROM.
AMR Микроконтроллер:
AMR — это название компании, которая разрабатывает архитектуру микропроцессоров.Он также занимается лицензированием их для производителей, которые производят настоящие чипы. На самом деле AMR — это настоящая 32-битная архитектура RISC. Первоначально он был разработан в 1980 году компанией Acorn Computers Ltd. Этот базовый микропроцессор AMR не имеет встроенной флэш-памяти. ARM специально разработан для устройств с микроконтроллерами, его легко обучить и использовать, но он достаточно мощный для самых сложных встраиваемых устройств.
Архитектура микроконтроллера AMR:
Архитектура AMR представляет собой 32-битный RISC-процессор, разработанный ARM Ltd.Благодаря своим характеристикам энергосбережения центральные процессоры ARM преобладают на рынке мобильной электроники, где снижение энергопотребления является жизненно важной целью при проектировании. Архитектура ARM состоит из нижележащих элементов RISC: —
- Максимальное функционирование за один цикл
- Постоянный регистровый файл размером 16 × 32 бита.
- Загрузить или сохранить архитектуру.
- Заданная ширина инструкции 32 бита для упрощения конвейерной обработки и декодирования при минимальной плотности кода.
- Для смещенного доступа к памяти нет поддержки
Микроконтроллер Приложения:
Микроконтроллеры предназначены для встраиваемых устройств, по сравнению с микропроцессорами, которые используются в ПК или других универсальных устройствах
.Микроконтроллеры используются в автоматически управляемых изобретениях и устройствах, таких как электроинструменты, имплантируемые медицинские устройства, системы управления автомобильными двигателями, офисные машины, устройства дистанционного управления, игрушки и многие другие
встроенных систем. Уменьшая размер и затраты по сравнению с конструкцией, в которой используются другой микропроцессор, устройства ввода / вывода и память, микроконтроллеры делают недорогой цифровой контроль все большего числа устройств и операций.Микроконтроллеры смешанного сигнала
являются общими; Сборка аналоговых компонентов требовала управления нецифровыми электронными структурами.
Применение микроконтроллера в повседневной жизни Устройства:
- Светочувствительные и управляющие устройства
- Устройства измерения и контроля температуры
- Устройства обнаружения пожара и безопасности
- Промышленные контрольно-измерительные приборы
- Устройства управления процессом
Применение микроконтроллер в промышленных устройствах управления:
- Промышленные контрольно-измерительные приборы
- Устройства управления технологическим процессом
Применение микроконтроллера в устройствах измерения и измерения:
- Вольтметр
- Измерение вращающихся объектов
- Счетчик тока
- Ручной счетчик системы
Источник: www.electronicshub.org/microcontrollers/
Микроконтроллеры | Analog Devices
Некоторые файлы cookie необходимы для безопасного входа в систему, но другие необязательны для функциональной деятельности. Сбор наших данных используется для улучшения наших продуктов и услуг. Мы рекомендуем вам принять наши файлы cookie, чтобы обеспечить максимальную производительность и функциональность нашего сайта. Для получения дополнительной информации вы можете просмотреть сведения о файлах cookie. Узнайте больше о нашей политике конфиденциальности.
Принять и продолжить Принять и продолжитьФайлы cookie, которые мы используем, можно разделить на следующие категории:
- Строго необходимые файлы cookie:
- Это файлы cookie, которые необходимы для работы аналога.com или предлагаемые конкретные функции. Они либо служат единственной цели передачи данных по сети, либо строго необходимы для предоставления онлайн-услуг, явно запрошенных вами.
- Аналитические / рабочие файлы cookie:
- Эти файлы cookie позволяют нам выполнять веб-аналитику или другие формы измерения аудитории, такие как распознавание и подсчет количества посетителей и наблюдение за тем, как посетители перемещаются по нашему веб-сайту. Это помогает нам улучшить работу веб-сайта, например, за счет того, что пользователи легко находят то, что ищут.
- Функциональные файлы cookie:
- Эти файлы cookie используются для распознавания вас, когда вы возвращаетесь на наш веб-сайт. Это позволяет нам персонализировать наш контент для вас, приветствовать вас по имени и запоминать ваши предпочтения (например, ваш выбор языка или региона). Потеря информации в этих файлах cookie может сделать наши службы менее функциональными, но не помешает работе веб-сайта.
- Целевые / профилирующие файлы cookie:
- Эти файлы cookie записывают ваше посещение нашего веб-сайта и / или использование вами услуг, страницы, которые вы посетили, и ссылки, по которым вы переходили.Мы будем использовать эту информацию, чтобы сделать веб-сайт и отображаемую на нем рекламу более соответствующими вашим интересам. Мы также можем передавать эту информацию третьим лицам с этой целью.
Что такое микроконтроллер и как он работает?
Микроконтроллер — это компактная интегральная схема, предназначенная для управления определенной операцией во встроенной системе. Типичный микроконтроллер включает в себя процессор, память и периферийные устройства ввода-вывода (I / O) на одном кристалле.
Иногда называемые встроенным контроллером или микроконтроллером (MCU), микроконтроллеры используются, среди прочего, в транспортных средствах, роботах, офисной технике, медицинских устройствах, мобильных радиопередатчиках, торговых автоматах и бытовой технике. По сути, это простые миниатюрные персональные компьютеры (ПК), предназначенные для управления небольшими функциями более крупного компонента без сложной интерфейсной операционной системы (ОС).
Как работают микроконтроллеры?Микроконтроллер встроен в систему для управления особой функцией устройства.Он делает это, интерпретируя данные, которые он получает от периферийных устройств ввода-вывода, с помощью своего центрального процессора. Временная информация, которую получает микроконтроллер, хранится в его памяти данных, где процессор обращается к ней и использует инструкции, хранящиеся в своей программной памяти, для расшифровки и применения входящих данных. Затем он использует свои периферийные устройства ввода-вывода для связи и выполнения соответствующих действий.
Микроконтроллеры используются в большом количестве систем и устройств. Устройства часто используют несколько микроконтроллеров, которые работают вместе в устройстве для выполнения своих соответствующих задач.
Например, в автомобиле может быть множество микроконтроллеров, которые управляют различными отдельными системами внутри, такими как антиблокировочная тормозная система, контроль тяги, впрыск топлива или управление подвеской. Все микроконтроллеры взаимодействуют друг с другом, чтобы сообщить правильные действия. Некоторые могут связываться с более сложным центральным компьютером в автомобиле, а другие могут связываться только с другими микроконтроллерами. Они отправляют и получают данные, используя свои периферийные устройства ввода-вывода, и обрабатывают эти данные для выполнения назначенных им задач.
Какие элементы микроконтроллера?Основные элементы микроконтроллера:
- Процессор (CPU) — процессор можно рассматривать как мозг устройства. Он обрабатывает и реагирует на различные инструкции, управляющие работой микроконтроллера. Это включает в себя выполнение основных арифметических, логических операций и операций ввода-вывода. Он также выполняет операции передачи данных, которые передают команды другим компонентам в более крупной встроенной системе.
- Память — память микроконтроллера используется для хранения данных, которые процессор получает и использует для ответа на инструкции, которые он был запрограммирован для выполнения. Микроконтроллер имеет два основных типа памяти:
- Программная память, в которой хранится долгосрочная информация об инструкциях, выполняемых ЦП. Программная память — это энергонезависимая память, что означает, что она хранит информацию с течением времени без использования источника питания.
- Память данных, которая требуется для временного хранения данных во время выполнения инструкций.Память данных является энергозависимой, то есть данные, которые она хранит, являются временными и поддерживаются только в том случае, если устройство подключено к источнику питания.
Периферийные устройства ввода / вывода - — устройства ввода и вывода являются интерфейсом для процессора с внешним миром. Порты ввода получают информацию и отправляют ее процессору в виде двоичных данных. Процессор получает эти данные и отправляет необходимые инструкции устройствам вывода, которые выполняют задачи, внешние по отношению к микроконтроллеру.
Хотя процессор, память и периферийные устройства ввода / вывода являются определяющими элементами микропроцессора, есть и другие элементы, которые часто используются. Термин «периферийные устройства ввода-вывода» просто относится к вспомогательным компонентам, которые взаимодействуют с памятью и процессором. Существует множество вспомогательных компонентов, которые можно отнести к категории периферийных устройств. Наличие некоторого проявления периферийных устройств ввода-вывода является элементарной задачей для микропроцессора, потому что они являются механизмом, через который применяется процессор.
Прочие вспомогательные элементы микроконтроллера:
- Аналого-цифровой преобразователь (АЦП) — АЦП — это схема, преобразующая аналоговые сигналы в цифровые. Это позволяет процессору в центре микроконтроллера взаимодействовать с внешними аналоговыми устройствами, такими как датчики. Цифро-аналоговый преобразователь (ЦАП)
- — ЦАП выполняет обратную функцию АЦП и позволяет процессору в центре микроконтроллера передавать свои исходящие сигналы внешним аналоговым компонентам.
- Системная шина — Системная шина — это соединительный провод, который связывает вместе все компоненты микроконтроллера.
- Последовательный порт — Последовательный порт является одним из примеров порта ввода-вывода, который позволяет микроконтроллеру подключаться к внешним компонентам. Он имеет функцию, аналогичную USB или параллельному порту, но отличается способом обмена битами.
Процессор микроконтроллера зависит от приложения. Варианты варьируются от простых 4-битных, 8-битных или 16-битных процессоров до более сложных 32-битных или 64-битных процессоров.Микроконтроллеры могут использовать энергозависимые типы памяти, такие как оперативная память (RAM) и энергонезависимые типы памяти — сюда входят флэш-память, стираемая программируемая постоянная память (EPROM) и электрически стираемая программируемая постоянная память (EEPROM).
Как правило, микроконтроллеры проектируются таким образом, чтобы их можно было легко использовать без дополнительных вычислительных компонентов, потому что они разработаны с достаточным объемом встроенной памяти, а также предлагают контакты для общих операций ввода-вывода, поэтому они могут напрямую взаимодействовать с датчиками и другими компонентами.
Архитектура микроконтроллераможет быть основана на архитектуре Гарварда или архитектуре фон Неймана, обе предлагают различные методы обмена данными между процессором и памятью. В гарвардской архитектуре шина данных и инструкция разделены, что позволяет осуществлять одновременную передачу. В архитектуре фон Неймана одна шина используется как для данных, так и для инструкций.
Процессоры микроконтроллеровмогут быть основаны на вычислениях со сложным набором команд (CISC) или на вычислениях с сокращенным набором команд (RISC).CISC обычно имеет около 80 инструкций, в то время как RISC имеет около 30, а также больше режимов адресации, 12-24 по сравнению с RISC 3-5. Хотя CISC может быть проще в реализации и более эффективно использует память, он может иметь снижение производительности из-за большего количества тактовых циклов, необходимых для выполнения инструкций. RISC, который уделяет больше внимания программному обеспечению, часто обеспечивает лучшую производительность, чем процессоры CISC, которые уделяют больше внимания аппаратному обеспечению из-за упрощенного набора инструкций и, следовательно, повышенной простоты конструкции, но из-за упора на программное обеспечение, программное обеспечение может быть более сложным.Какой ISC используется, зависит от приложения.
Когда они впервые стали доступны, микроконтроллеры использовали исключительно язык ассемблера. Сегодня популярным вариантом является язык программирования C. Другие распространенные языки микропроцессоров включают Python и JavaScript.
Микроконтроллерыоснащены входными и выходными контактами для реализации периферийных функций. К таким функциям относятся аналого-цифровые преобразователи, контроллеры жидкокристаллических дисплеев (LCD), часы реального времени (RTC), универсальный синхронный / асинхронный приемный передатчик (USART), таймеры, универсальный асинхронный приемный передатчик (UART) и универсальная последовательная шина ( USB) возможность подключения.Датчики, собирающие данные, связанные, в частности, с влажностью и температурой, также часто присоединяются к микроконтроллерам.
Типы микроконтроллеров Стандартные микроконтроллерывключают Intel MCS-51, часто называемый микроконтроллером 8051, который был впервые разработан в 1985 году; микроконтроллер AVR, разработанный Atmel в 1996 году; контроллер программируемого интерфейса (PIC) от Microchip Technology; и различные лицензированные микроконтроллеры Advanced RISC Machines (ARM).
Ряд компаний производят и продают микроконтроллеры, включая NXP Semiconductors, Renesas Electronics, Silicon Labs и Texas Instruments.
Приложения микроконтроллера Микроконтроллерыиспользуются во многих отраслях и приложениях, в том числе в домашних условиях и на предприятиях, в автоматизации зданий, производстве, робототехнике, автомобилестроении, освещении, интеллектуальной энергетике, промышленной автоматизации, коммуникациях и развертываниях Интернета вещей (IoT).
Одним из очень специфических приложений микроконтроллера является его использование в качестве процессора цифровых сигналов. Часто входящие аналоговые сигналы имеют определенный уровень шума.Шум в этом контексте означает неоднозначные значения, которые нельзя легко преобразовать в стандартные цифровые значения. Микроконтроллер может использовать свои АЦП и ЦАП для преобразования входящего аналогового сигнала с шумом в ровный исходящий цифровой сигнал.
Простейшие микроконтроллеры облегчают работу электромеханических систем, используемых в предметах повседневного обихода, таких как духовки, холодильники, тостеры, мобильные устройства, брелоки, системы видеоигр, телевизоры и системы полива газонов. Они также распространены в офисной технике, такой как копировальные аппараты, сканеры, факсы и принтеры, а также в интеллектуальных счетчиках, банкоматах и системах безопасности.
Более сложные микроконтроллеры выполняют важные функции в самолетах, космических кораблях, океанских судах, транспортных средствах, медицинских системах и системах жизнеобеспечения, а также в роботах. В медицинских сценариях микроконтроллеры могут регулировать работу искусственного сердца, почек или других органов. Они также могут способствовать функционированию протезов.
Сравнение микроконтроллеров и микропроцессоровРазличие между микроконтроллерами и микропроцессорами стало менее четким, поскольку плотность и сложность микросхем стали относительно дешевыми в производстве, и микроконтроллеры, таким образом, интегрировали более «общие компьютерные» типы функций.В целом, однако, можно сказать, что микроконтроллеры работают сами по себе, с прямым подключением к датчикам и исполнительным механизмам, где микропроцессоры предназначены для максимизации вычислительной мощности на кристалле, с подключением к внутренней шине (а не с прямым вводом / выводом). для поддержки оборудования, такого как ОЗУ и последовательные порты. Проще говоря, в кофеварках используются микроконтроллеры; настольные компьютеры используют микропроцессоры.
Микроконтроллер Microchip Technology ATtiny817.Микроконтроллеры дешевле и потребляют меньше энергии, чем микропроцессоры.Микропроцессоры не имеют встроенного ОЗУ, постоянного запоминающего устройства (ПЗУ) или других периферийных устройств на микросхеме, а подключаются к ним своими контактами. Микропроцессор можно считать сердцем компьютерной системы, тогда как микроконтроллер можно считать сердцем встроенной системы.
Выбор подходящего микроконтроллераПри выборе микроконтроллера для проекта необходимо учитывать ряд технологических и бизнес-соображений.
Помимо стоимости, важно учитывать максимальную скорость, объем ОЗУ или ПЗУ, количество или типы контактов ввода-вывода на MCU, а также энергопотребление, ограничения и поддержку разработки.Обязательно задавайте такие вопросы, как:
- Какие аппаратные периферийные устройства требуются?
- Нужны ли внешние коммуникации?
- Какую архитектуру использовать?
- Какие сообщества и ресурсы доступны для микроконтроллера?
- Насколько доступен микроконтроллер на рынке?
Что такое микроконтроллер? — Как работают микроконтроллеры
Микроконтроллер — это компьютер. Все компьютеры — будь то персональный настольный компьютер, большой мэйнфрейм или микроконтроллер — имеют несколько общих черт:
- Все компьютеры имеют центральный процессор (центральный процессор), который выполняет программы.Если вы сейчас сидите за настольным компьютером и читаете эту статью, центральный процессор этого компьютера выполняет программу, реализующую веб-браузер, отображающий эту страницу.
- CPU загружает программу откуда-то. На вашем настольном компьютере программа браузера загружается с жесткого диска.
- Компьютер имеет некоторую RAM (оперативную память), где он может хранить «переменные».
- И компьютер имеет несколько устройств ввода и вывода, так что он может разговаривать с людьми. На вашем настольном компьютере клавиатура и мышь являются устройствами ввода, а монитор и принтер — устройствами вывода.Жесткий диск — это устройство ввода-вывода — он обрабатывает как ввод, так и вывод.
Настольный компьютер, который вы используете, является «компьютером общего назначения», на котором можно запускать любую из тысяч программ. Микроконтроллеры — это «компьютеры специального назначения». Микроконтроллеры хорошо справляются с одной задачей. Есть ряд других общих характеристик, которые определяют микроконтроллеры. Если компьютер соответствует большинству из этих характеристик, то вы можете назвать его «микроконтроллером»:
- Микроконтроллеры — это «, встроенные » в какое-то другое устройство (часто потребительский продукт), так что они могут управлять функциями или действиями продукт.Поэтому другое название микроконтроллера — «встроенный контроллер».
- Микроконтроллеры выделены для одной задачи и запускают одну конкретную программу. Программа хранится в ПЗУ (постоянное запоминающее устройство) и обычно не изменяется.
- Микроконтроллеры часто представляют собой маломощных устройств . Настольный компьютер почти всегда подключен к розетке и может потреблять 50 Вт электроэнергии. Микроконтроллер с батарейным питанием может потреблять 50 милливатт.
- Микроконтроллер имеет специальное устройство ввода и часто (но не всегда) имеет небольшой светодиодный или ЖК-дисплей для вывода .Микроконтроллер также принимает входные данные от устройства, которым он управляет, и управляет устройством, отправляя сигналы различным компонентам устройства. Например, микроконтроллер внутри телевизора принимает входные данные с пульта дистанционного управления и отображает выходные данные на экране телевизора. Контроллер управляет переключателем каналов, акустической системой и некоторыми регулировками электроники кинескопа, такими как оттенок и яркость. Контроллер двигателя в автомобиле принимает данные от датчиков, таких как кислородный датчик и датчик детонации, и управляет такими вещами, как смесь топлива и синхронизация свечей зажигания.Контроллер микроволновой печи принимает ввод с клавиатуры, отображает выходной сигнал на ЖК-дисплее и управляет реле, которое включает и выключает микроволновый генератор.
- Микроконтроллер часто бывает маленьким и дешевым . Компоненты выбираются так, чтобы минимизировать размер и быть как можно более дешевыми.
- Микроконтроллер часто, но не всегда, защищенный в некотором роде. Например, микроконтроллер, управляющий двигателем автомобиля, должен работать при экстремальных температурах, с которыми обычный компьютер обычно не может справиться.Микроконтроллер автомобиля на Аляске должен нормально работать при -30 градусов F (-34 C), в то время как тот же микроконтроллер в Неваде может работать при 120 градусах F (49 C). Когда вы добавляете тепло, выделяемое двигателем, температура в моторном отсеке может достигать 150 или 180 градусов F (65-80 C). С другой стороны, микроконтроллер, встроенный в видеомагнитофон, совсем не защищен.
Фактический процессор , используемый для реализации микроконтроллера, может сильно различаться.Например, сотовый телефон, показанный на странице «Внутри цифрового сотового телефона», содержит процессор Z-80. Z-80 — это 8-битный микропроцессор, разработанный в 1970-х годах и первоначально использовавшийся в домашних компьютерах того времени. Мне сказали, что Garmin GPS, показанный в Как работают GPS-приемники, содержит маломощную версию Intel 80386. Изначально 80386 использовался в настольных компьютерах.
Во многих продуктах, например в микроволновых печах, требования к ЦП довольно низкие, и цена является важным фактором. В этих случаях производители обращаются к выделенным микросхемам микроконтроллера — микросхемам, которые изначально были разработаны как недорогие, небольшие, маломощные встроенные процессоры.Motorola 6811 и Intel 8051 — хорошие примеры таких чипов. Также существует линейка популярных контроллеров под названием «микроконтроллеры PIC», созданная компанией Microchip. По сегодняшним меркам эти процессоры невероятно минималистичны; но они чрезвычайно недороги при покупке в больших количествах и часто могут удовлетворить потребности разработчика устройства с помощью всего лишь одного чипа.
Типичная микросхема микроконтроллера младшего уровня может иметь 1000 байтов ПЗУ и 20 байтов ОЗУ на микросхеме, а также восемь контактов ввода / вывода.В больших количествах стоимость этих чипов иногда может составлять всего несколько копеек. Вы, конечно, никогда не собираетесь запускать Microsoft Word на таком чипе — Microsoft Word требует, возможно, 30 мегабайт оперативной памяти и процессора, который может выполнять миллионы инструкций в секунду. Впрочем, для управления микроволновой печью Microsoft Word тоже не нужен. С микроконтроллером у вас есть одна конкретная задача, которую вы пытаетесь выполнить, и важна низкая стоимость и производительность с низким энергопотреблением.
Полное руководство по микроконтроллерам для Интернета вещей
Когда дело доходит до Интернета вещей (IoT) и интеллектуальных объектов, их вычислительные возможности обычно определяются микроконтроллерами или микроконтроллерами.По сути, это уменьшенные в масштабе компьютеры, которые управляют интеллектуальными устройствами, обеспечивая вычислительную мощность, память и периферийные устройства ввода / вывода.
В этой статье мы предоставляем полное руководство по микроконтроллерам для IoT, включая:
- Что такое микроконтроллер в IoT?
- Микроконтроллер против микропроцессора
- Характеристики микроконтроллера
- ОСРВ / ОС для микроконтроллеров
- Как выбрать микроконтроллер для Интернета вещей
- Список микроконтроллеров для Интернета вещей
Что такое микроконтроллер в IoT?
Размышляя о микроконтроллерах в IoT, проще всего взглянуть на стек технологий IoT для встроенного устройства и увидеть его место в нем.
Упрощенный стек IoT для смарт-камеры может выглядеть примерно так:
- Уровень протокола связи
- Уровень аппаратной абстракции (HAL)
- Уровень ОС / ОСРВ
MCU работает на уровне абстракции оборудования, выполняя выбранную ОС / ОСРВ, которая управляет устройством.
Микроконтроллеры против микропроцессоров
Еще один частый вопрос, который мы слышим, — в чем разница между микроконтроллерами и микропроцессорами.Микропроцессор — это отдельная интегрированная микросхема, в которую входит ЦП устройства. Однако он не содержит ОЗУ, ПЗУ или других периферийных устройств, которые могут быть у устройства. Вместо этого чип использует входы / выходы (I / Os) для подключения к памяти и периферийным устройствам.
С другой стороны, микроконтроллер имеет ЦП, ОЗУ, ПЗУ и периферийные устройства, встроенные в один чип. Это фактически превращает его в компьютер на одном чипе.
Поскольку все встроено в один чип, микроконтроллер, конечно, имеет более низкие характеристики производительности, чем компьютер с микропроцессорным питанием.Однако, когда дело доходит до типичных устройств Интернета вещей, таких как интеллектуальные промышленные машины, микроконтроллеры являются гораздо лучшим выбором, поскольку они обеспечивают достаточную вычислительную мощность, сохраняя при этом низкие затраты и сложность.
Характеристики микроконтроллераНа рынке представлены сотни процессоров, поэтому важно понимать общие особенности, прежде чем выбирать лучший процессор для вашего IoT-проекта.
Биты
Это основное различие между разными MCU.В настоящее время вы найдете пять различных вариантов:
- 4-8 бит : Используется в пультах дистанционного управления и других недорогих и ограниченных приложениях. Как правило, не подходит для использования в приложениях Интернета вещей.
- 8-бит : в основном используется в очень ограниченных по стоимости, но более сложных приложениях, чем 4-8 бит. При правильной настройке их можно использовать в приложениях IoT, иногда под управлением ОСРВ, но в основном с простым контуром управления. Хорошо известный проект Arduino — это пример 8-битного дизайна.
- 16-бит : Хотя это опция, 16-битная архитектура не очень распространена в IoT. Реализации обычно переключаются между 8 и 32 битами.
- 32-разрядный * : это обычная точка входа для приложений Интернета вещей, если приложение не может соответствовать 8-разрядной архитектуре и не имеет ограничений по стоимости. Однако разница в цене между 8-битной и 32-битной архитектурами настолько мала, что разработчикам стоит дважды подумать, выбирая 8-битную архитектуру. Запускают ли эти MCU RTOS или ОС, в основном зависит от вычислительной мощности MCU и / или наличия у него блока MMU.Raspberry Pi — это хорошо известный 32-битный дизайн.
- 64-бит : они зарезервированы для высокопроизводительных систем, обычно Linux или других ОС. Обычно вам нужна конкретная причина (интенсивность вычислений) для перехода с 32-битной системы на 64-битную.
* Примечание для 32-битных систем: Обычно тактовая частота является важным фактором проектирования. Частоты выше 100 МГц (особенно конструкции ГГц) обычно требуют особого внимания к конструкции печатной платы, поскольку дорожки на печатной плате могут начать мешать друг другу.
Архитектура
Большинство микроконтроллеров используют одну из следующих архитектур:
RAM
Это значение может сильно варьироваться, от около 16B на 8-битных микроконтроллерах на нижнем конце до примерно 4,5 МБ на 32- и 64-битных микроконтроллерах. По мнению большинства людей, чем больше оперативной памяти, тем лучше, но это существенно увеличит расходы.
GPIO
Это означает ввод / вывод общего назначения и контакты, которые позволяют подключать оборудование, такое как датчики, к ЦП.Как и в случае с ОЗУ, количество GPIO может существенно варьироваться для размещения всех типов стеков устройств.
Возможности подключения
Различные процессоры поставляются с различными вариантами подключения, включая протоколы Wi-Fi, Bluetooth и проводные порты Ethernet.
ОСРВ / ОС для микроконтроллеров
Есть несколько вариантов операционной системы для микроконтроллеров. Вот что вы найдете на рынке:
ОСРВ
RTOS означает операционную систему реального времени.Это программный компонент, который может выполнять только одну программу за раз, но который быстро переключается между задачами программирования для одновременного выполнения нескольких задач.
Он обеспечивает так называемые детерминированные реакции в режиме жесткого реального времени на внешние события. На практике это означает, что программное обеспечение ОСРВ может обеспечить высокочувствительную обработку ограниченного числа заранее определенных задач намного быстрее, чем традиционная ОС, что может быть преимуществом, когда дело доходит до устройства IoT.Вы можете прочитать здесь, как выбрать лучшую ОСРВ для Интернета вещей.
ОС
ОС — это «традиционная» операционная система, например Linux. В отличие от ОСРВ, традиционная ОС обеспечивает недетерминированные мягкие отклики в реальном времени. Это означает, что она намного более эффективна при обработке большого количества различных задач, чем RTOS, но требует гораздо большей вычислительной мощности. Поэтому программное обеспечение ОС обычно можно найти только на 32- и 64-разрядных микроконтроллерах с модулями MMU. Здесь вы можете прочитать больше о преимуществах и недостатках RTOS v OS.
Чистый металл
Некоторые процессоры не имеют программного обеспечения операционной системы; вместо этого микропрограмма записывается непосредственно на оборудование. Программирование на «чистом металле» очень распространено для встраиваемых устройств старого поколения и MCU IoT.
Однако по мере того, как вычислительная мощность микроконтроллеров увеличивалась и снижалась стоимость, теперь все меньше устройств работает на «голом железе». Несмотря на это, это все еще используется, когда у MCU очень мало памяти или когда вы хотите, чтобы прямой контроль над каждой частью оборудования соответствовал очень строгим требованиям по времени.
Как выбрать лучший микроконтроллер для Интернета вещей
Как упоминалось выше, в проектах IoT используется множество микроконтроллеров. Мы предоставляем список распространенных коммерческих микроконтроллеров в следующем разделе, но сначала мы объясним, как выбрать лучший микроконтроллер для Интернета вещей.
Память
Объем памяти, который вы выбираете, конечно же, будет иметь фундаментальное влияние на общую производительность устройства. Поэтому внимательно рассчитайте требования к памяти для задач программирования вашего устройства, как RAM, так и ROM.
Вам также необходимо убедиться, что ваше решение будет подтверждено в будущем, имея достаточно свободных мощностей для удовлетворения требований, предъявляемых к ним в результате будущих обновлений.
Мощность
Требования к питанию вашего устройства — еще одно важное соображение, когда дело доходит до выбора лучшего MCU. Интеллектуальное медицинское устройство IoT, такое как, например, слуховой аппарат, будет работать от батареи с очень низким энергопотреблением. С другой стороны, тяжелое интеллектуальное промышленное оборудование будет потреблять много электроэнергии, но вам нужно, чтобы устройство было максимально энергоэффективным.
Интернет и другие протоколы связи
Как ваше IoT-устройство будет подключаться к приложению? Какие типы данных будет отправлять устройство и куда? Нужно ли ему локально взаимодействовать с другими устройствами?
Например, для домашней интеллектуальной системы сигнализации могут потребоваться протоколы Wi-Fi, а для офисной системы IoT HVAC может потребоваться проводное соединение Ethernet. Для связи с локальным устройством может потребоваться соединение Bluetooth, а удаленным устройствам за пределами диапазона Wi-Fi потребуется подключение для передачи данных 4G.
Порты подключения
Чтобы определить, сколько GPIO вам нужно на вашем микроконтроллере, вам сначала нужно определить, какие входные данные требуются вашему устройству. Также имейте в виду, что на ЦП есть как цифровые, так и аналоговые порты, которые обрабатывают различные типы входных и выходных данных.
Архитектура
Как указано выше, большинство приложений работают под управлением ARM, MIPS, X86. Следовательно, вам необходимо убедиться, что ваш выбор может поддерживать сложность вашего устройства и системы, включая операции ввода-вывода и обработку данных, а также то, сколько энергии для этого требуется.
Поддержка разработчиков и сообщество
Если ваша команда или организация не имеет предыдущего опыта работы с микроконтроллерами, то поддержка разработчиков, предлагаемая производителем и сообществом разработчиков, имеет решающее значение. Убедитесь, что у производителя есть исчерпывающая документация. Затем проверьте такие места, как StackOverflow и Reddit, на предмет поддержки сообщества. Вы также найдете множество полезных руководств в нашем блоге.
Стоимость
Рассматривая стоимость микроконтроллеров, всегда нужно смотреть в будущее.Нет никакого смысла создавать прототип с платой, которая будет чрезмерно дорогостоящей для масштабирования и вывода на рынок. Также имейте в виду, что некоторые микроконтроллеры поставляются с лицензионной платой за отдельные драйверы устройств.
Безопасность
Безопасность является важным аспектом во всех проектах Интернета вещей, и ее необходимо внедрять в стеке. Стандартные функции безопасности на коммерческих платах включают криптографические загрузчики и аппаратные ускорители, слои защиты и блоки защиты памяти.
Список популярных микроконтроллеров для Интернета вещей
АРН ATMEL
ATMEGA32 серии
ATMEGA16 серии
AVR128 серии
Микрочип
Серия PIC18 (включая PIC12 и PIC16)
PIC32 серии
ЗУРсерии
NXP
Серия LPC (ARM Cortex-M0)
Серия K32 (ARM Cortex-M4 / M0)
Серия LPC55x (ARM CortexM33)
я.Серия MX (Cortex-M7)
Texas Instruments
Серия SimpleLink (ARM Cortex M4)
Серия MSP430 (MSP432)
C2000
CC3200 / CC3120 / CC3220 СЕРИИ (WI-FI ВКЛЮЧЕН)
Renesas
S1 / S3 / S5 / S7 серии
Эспрессиф
ESP8266
ESP32
Прочие
8051 Intel
Заключение
Если вы разрабатываете проект Интернета вещей, то при выборе лучшего MCU для Интернета вещей необходимо учитывать несколько факторов.К ним относятся питание, архитектура, память, порты подключения, стоимость и безопасность, как объясняется в этом руководстве по микроконтроллерам для Интернета вещей.
Устройства ввода и вывода (микроконтроллеры)
11,1
В этом разделе мы представляем упрощенную модель оборудования, используемую для понимания процедур ввода-вывода. Мы также обсудим простые порты ввода и вывода, чтобы предоставить достаточно информации для последующих разделов этого руководства.
Рисунок 11.1. Упрощенная схема микрокомпьютера (идентичная рисунку 1.1)
Вспомните из темы 1, что компьютер разделен на свои основные компоненты: контроллер, оператор данных (арифметический / логический блок), память и блок ввода-вывода (см. Рисунок 11.1). Инструкции ввода и вывода используют тот же адрес и шину данных, что и инструкции загрузки и сохранения с памятью, но действие инструкций ввода и вывода на оборудовании ввода-вывода немного отличается от действия инструкций загрузки и сохранения в памяти.Во многих микроконтроллерах для чтения или записи в память используются разные инструкции, чем для операций ввода или вывода, хотя по существу одни и те же контакты используются для каждой инструкции. Однако (см. Рисунок 11.2) в микроконтроллерах, таких как Motorola 6812, инструкция загрузки, используемая для чтения данных из памяти, таких как слова 1, 2 или 3, также может использоваться для ввода данных, таких как слово 0, и Команда store, используемая для хранения данных в памяти, таких как слова 1, 2 или 3, также может использоваться для вывода данных, например, в слово 0.
Рисунок 112. Память и ее подключение к MPU (сравните с рисунком 1.3)
Определенные 8-битные или 16-битные ячейки памяти выбираются в качестве портов вывода, соответствующих аппаратному компоненту, называемому устройством вывода, который имеет выходные линии подключены к внешнему миру. Определенные 8-битные или 16-битные ячейки памяти выбираются в качестве портов ввода, соответствующих аппаратному компоненту, называемому устройством ввода, у которого есть входные линии, идущие из внешнего мира.
С точки зрения устройства ввода-вывода, каждый адрес,
данных, или линия управления имеет сигнал, который является (логической) единицей, если напряжение выше определенного порогового уровня, и (логическим) нулем, если напряжение ниже этого уровня.Напряжения, соответствующие (логической) единице и (логическому) нулю, также называются высоким сигналом и низким сигналом соответственно. Тактовый сигнал попеременно то низкий, то высокий, периодически в виде прямоугольной волны. Тактовый сигнал между переходами от высокого к низкому называется тактовым циклом. В каждом тактовом цикле микроконтроллер может считывать слово из входного порта, например слово 3, помещая адрес слова, которое нужно прочитать, на адресную шину и переводя строку чтения / записи в высокий уровень в течение тактового цикла.В конце такта устройство поместит данные на вход
строк на шине данных, а процессор скопирует слово на шине данных в некоторый регистр внутренней памяти. Микроконтроллер также может записывать слово в выходной порт, такое как слово 3, по определенному адресу за один такт, помещая адрес на адресную шину, помещая слово, которое будет записано на шину данных, и делая сигнал низким. на линии чтения / записи в течение тактового цикла. В конце такта микроконтроллер запишет слово на шину данных в устройство.Записанные данные будут доступны на выходных линиях устройства до тех пор, пока не будут изменены другой командой вывода.
Например, всякий раз, когда микроконтроллер записывает данные в ячейку $ 0000, например, в инструкции
STAA $ 00
, записанные данные помещаются в выходные линии устройства. Эта инструкция может использовать режим адресации нулевой страницы, потому что адрес находится в нулевой позиции. Простейший выходной порт доступен для записи, но не для чтения: эта «постоянная память» обычно является темой только для сборника анекдотов компьютерных ученых, но это реальная возможность для выходного порта.
Например, местоположение $ 0000 может быть портом ввода, и будет создано аппаратное устройство ввода для ввода данных с этого порта. Каждый раз, когда микроконтроллер считывает данные из ячейки $ 0000, как в инструкции
LDAA $ 00
, сигналы на входных линиях устройства ввода будут считываться в микроконтроллер точно так же, как слово, считываемое из памяти. Обратите внимание, что операция ввода «делает снимок» данных, подаваемых в устройство ввода в конце последнего тактового цикла инструкции загрузки, и нечувствительна к значениям данных до или после этой точки в последнем тактовом цикле.Последний аспект заключается в том, можно ли читать порт, записывать в него или и то, и другое.
Микроконтроллер считает, что он читает или записывает слово в свою память по некоторому адресу. Однако разработчик микроконтроллера выбрал этот адрес в качестве порта ввода или вывода и построил оборудование для ввода или вывода данных, которые считываются или записываются в этот порт. С помощью оборудования разработчик обманом заставляет микроконтроллеры вводить данные, когда он читает слово по адресу входного порта, или выводить данные, когда он записывает данные в слово по адресу выходного порта.
Одно из наиболее распространенных ошибочных предположений в архитектуре портов — это то, что порты ввода-вывода имеют ширину восемь бит.Например, в 6812 байтовые инструкции LDAB используются в программах ввода-вывода во многих текстах. На микросхемах ввода-вывода имеется ряд 16-битных портов ввода-вывода, предназначенных для 16-битных микроконтроллеров. Но ни 8, ни 16 бит не являются фундаментальной шириной. В этом разделе, где мы делаем упор на основы, мы избегаем этого предположения. Конечно, если порт имеет ширину 8 бит, можно использовать инструкцию LDAB и использовать ее в C, обращаясь к переменной типа char.Также есть 16-битные порты. Они могут быть прочитаны инструкциями LDD или как переменная типа int в C или C ++. Порт может иметь ширину 1 бит; в этом случае 1-битный входной порт считывается в бите 7; его чтение установит бит кода состояния N, который легко проверяется инструкцией BMI. Многие порты читают или записывают данные ASCII. Данные ASCII имеют ширину 7 бит, а не 8 бит.