Что нужно для программирования микроконтроллера
Путь программирования проходит несколько этапов:
- Перед тем как приступить к написанию кода программы, надо определиться с конечной целью.
- Составляется алгоритм работы программы.
- Непосредственное написание кода программы. Коды пишутся на языке Си или Ассемблере.
- Компиляция программы, т. е. перевод ее в двоичную или шестнадцатеричную систему 1 и 0. Только так ее сможет понять МК.
- Откомпилированный код записывают в память контроллера.
- Прошивают МК с помощью программатора. Они бывают двух типов подключения: через COM или USB порт. Самый простой и дешевый программатор USBASP.
- Тестирование и отладка МК на реальном устройстве.
Радиолюбители иногда обходятся без прописывания алгоритма работы программы на бумаги. Они держат его в голове.
PIC
Открывает наш парад компания Microchip Technology с серией PIC. Эти МК отличаются между собой разрядностью (8/16/32), набором периферии и корпусом чипа. Восьмибитные варианты же делятся на четыре семейства: baseline, mid-range, enhanced mid-range и PIC18. Более подробная информация приведена в таблице.
Также есть 16-битные «пики» — PIC24F и DsPIC30/33F. Ну и 32-битные — PIC32MX. Эти непонятные сочетания букв и цифр — часть идентификатора чипа. То же, что и марки у машин. Например, широко распространенный камень PIC16F628A расшифровывается так: семейство PIC16F6 (Mid-range), а остальная часть имени — указатель на конкретный камень. У рассмотренных далее МК в имени может содержаться еще больше информации.
Цена и содержимое
Микроконтроллер PIC16F628A
Эти микроконтроллеры имеют среднюю стоимость. Например, камень PIC6F628 в Chipdip стоит около 150 рублей, а PIC18F2550 — 620 рублей.
Более дешевые экземпляры имеют в своем составе минимум периферии. У упомянутого ранее PIC6F628 следующие характеристики: встроенный тактовый генератор для работы с частотой 4 или 8 МГц; 18 пинов, из них 16 — ввод/вывод, а 2 — питание; для работы на более высоких частотах можно подключить кварцевый резонатор; Flash-память объемом 2048 слов; 4 аналоговых входа; два 8-битных таймера и один 16-битный; 224 байта ОЗУ (самому смешно); 128 байт EEPROM (это программно перезаписываемая энергонезависимая память, вроде жесткого диска); интерфейс UART.
Программирование и использование PIC
Программируют для микроконтроллеров, как правило, на ассемблере и на Си. Есть множество сред разработки: MPASM и MPLAB, MicroC, JALedit (язык JAL, сам про него впервые слышу). Скачать MPLAB
Как правило, на таких МК собирают простенькие устройства вроде мигалки или таймера. Эти контроллеры долго имели монополию на постсоветском пространстве, и в результате в интернете есть огромное множество русскоязычных сервисов и статей, посвященных этим моделям МК. При сборке устройства часто можно даже не писать прошивку, ведь она легко находится в интернете, даже в нескольких вариантах.
Вторым плюсом можно указать встроенные независимые (от тактового генератора) счетчики. Благодаря этому факту семейство зарекомендовало себя в качестве «мозгов» для частотомеров. Пара таких контроллеров лежит у меня в мастерской на черный день. Из минусов можно выделить только высокую стоимость оригинальных программаторов, которые зовутся PICkit.
PICKIT3
В интернете есть множество статей по сборке достойных аналогов таких программаторов. Но вся соль в том, что для сборки программатора тебе нужно что? Правильно, программатор. На этот случай был разработан программатор Громова. Для его сборки почти ничего не нужно, а работает он от COM-порта компьютера. На момент его разработки популярность этой серии МК была высока, да и COM-порты были у всех ПК. Сейчас все это уже редкость, так что придется преодолеть порог вхождения либо раскошелиться.
Операции пересылки данных
Мнемоника | Описание | Операция | Флаги |
---|---|---|---|
MOV Rd, Rr | Пересылка между регистрами | Rd ← Rr | — |
MOVW Rd, Rr | Пересылка между парами регистров | R(d +1):Rd ← R(r+1):Rr | — |
LDI Rd, K | Загрузка константы в регистр | Rd ← K | — |
LD Rd, X | Косвенное чтение | Rd ← | — |
LD Rd, X+ | Косвенное чтение с пост-инкрементом | Rd ← , X ← X + 1 | — |
LD Rd, -X | Косвенное чтение с пред-декрементом | X ← X — 1, Rd ← | — |
LD Rd, Y | Косвенное чтение | Rd ← | — |
LD Rd, Y+ | Косвенное чтение с пост-инкрементом | Rd ← , Y ← Y + 1 | — |
LD Rd, -Y | Косвенное чтение с пред-декрементом | Y ← Y — 1, Rd ← | — |
LDD Rd, Y+q | Косвенное чтение со смещением | Rd ← | — |
LD Rd, Z | Косвенное чтение | Rd ← | — |
LD Rd, Z+ | Косвенное чтение с пост-инкрементом | Rd ← , Z ← Z + 1 | — |
LD Rd, -Z | Косвенное чтение с пред-декрементом | Z ← Z — 1, Rd ← | — |
LDD Rd, Z+q | Косвенное чтение со смещением | Rd ← | — |
LDS Rd, A | Непосредственное чтение из ОЗУ | Rd ← | — |
ST X, Rr | Косвенная запись | ← Rr | — |
ST X+, Rr | Косвенная запись с пост-инкрементом | ← Rr, X ← X + 1 | — |
ST -X, Rr | Косвенная запись с пред-декрементом | X ← X — 1, ← Rr | — |
ST Y, Rr | Косвенная запись | ← Rr | — |
ST Y+, Rr | Косвенная запись с пост-инкрементом | ← Rr, Y ← Y + 1 | — |
ST -Y, Rr | Косвенная запись с пред-декрементом | Y ← Y — 1, ← Rr | — |
STD Y+q, Rr | Косвенная запись со смещением | ← Rr | — |
ST Z, Rr | Косвенная запись | ← Rr | — |
ST Z+, Rr | Косвенная запись с пост-инкрементом | ← Rr, Z ← Z + 1 | — |
ST -Z, Rr | Косвенная запись с пред-декрементом | Z ← Z — 1, ← Rr | — |
STD Z+q, Rr | Косвенная запись со смещением | ← Rr | — |
STS A, Rr | Непосредственная запись в ОЗУ | ← Rr | — |
LPM | Загрузка данных из памяти программы | R0 ← {Z} | — |
LPM Rd, Z | Загрузка данных из памяти программы в регистр | Rd ← {Z} | — |
LPM Rd, Z+ | Загрузка данных из памяти программы с пост-инкрементом Z | Rd ← {Z}, Z ← Z + 1 | — |
ELPM | Расширенная загрузка данных из памяти программы | R0 ← {RAMPZ:Z} | — |
ELPM Rd, Z | Расширенная загрузка данных из памяти программы в регистр | Rd ← {RAMPZ:Z} | — |
ELPM Rd, Z+ | Расширенная загрузка данных из памяти программы с пост-инкрементом Z | Rd ← {RAMPZ:Z}, Z ← Z + 1 | — |
SPM | Запись в программную память | {Z} ← R1:R0 | — |
IN Rd, P | Пересылка из I/O-регистра в регистр | Rd ← P | — |
OUT P, Rr | Пересылка из регистра в I/O-регистр | P ← Rr | — |
PUSH Rr | Сохранение регистра в стеке | STACK ← Rr | — |
POP Rd | Извлечение регистра из стека | Rd ← STACK | — |
Арифметические операции
Мнемоника | Описание | Операция | Флаги |
---|---|---|---|
ADD Rd, Rr | Сложение двух регистров | Rd ← Rd + Rr | Z, C, N, V, H |
ADC Rd, Rr | Сложение двух регистров с переносом | Rd ← Rd + Rr + С | Z, C, N, V, H |
SUB Rd, Rr | Вычитание двух регистров | Rd ← Rd — Rr | Z, C, N, V, H |
SBC Rd, Rr | Вычитание двух регистров с заёмом | Rd ← Rd — Rr — С | Z, C, N, V, H |
ADIW Rd, K | Сложение регистровой пары с константой | R(d+1):Rd ← R(d+1):Rd + K | Z, C, N, V, S |
SBIW Rd, K | Вычитание константы из регистровой пары | R(d+1):Rdl ← R(d+1):Rd — K | Z, C, N, V, S |
SUBI Rd, K | Вычитание константы из регистра | Rd ← Rd — K | Z, C, N, V, H |
SBCI Rd, K | Вычитание константы из регистра с заёмом | Rd ← Rd — K — С | Z, C, N, V, H |
INC Rd | Инкремент регистра | Rd ← Rd + 1 | Z, N, V |
DEC Rd | Декремент регистра | Rd ← Rd – 1 | Z, N, V |
MUL Rd, Rr | Умножение чисел без знака | R1:R0 ← Rd * Rr | Z, C |
MULS Rd, Rr | Умножение чисел со знаком | R1:R0 ← Rd * Rr | Z, C |
MULSU Rd, Rr | Умножение числа со знаком с числом без знака | R1:R0 ← Rd * Rr | Z, C |
FMUL Rd, Rr | Умножение дробных чисел без знака | R1:R0 ← (Rd * Rr) << 1 | Z, C |
FMULS Rd, Rr | Умножение дробных чисел со знаком | R1:R0 ← (Rd * Rr) << 1 | Z, C |
FMULSU Rd, Rr | Умножение дробного числа со знаком с числом без знака | R1:R0 ← (Rd * Rr) << 1 | Z, C |
Достоинства и недостатки
К достоинствам можно отнести следующее:
- минимальное количество избыточного кода (использование меньшего количества команд и обращений в память). Как следствие — большая скорость и меньший размер программы;
- непосредственный доступ к аппаратуре: портам ввода-вывода, особым регистрам процессора;
- возможность написания самомодифицирующегося кода (то есть возможность приложению создавать или изменять часть своего кода во время выполнения, причем без необходимости программного интерпретатора);
- максимальная «подгонка» для нужной платформы (использование специальных инструкций, технических особенностей железа).
За недостатки можно принять:
- большие объемы кода, большое число дополнительных мелких задач;
- меньшее количество доступных библиотек, их малую совместимость;
- плохую читабельность кода, трудность поддержки (отладка, добавление возможностей);
- непереносимость на другие платформы (кроме двоично совместимых).
Видеокурсы по программированию микроконтроллеров
В рунете я знаю только одного автора, который создал уже несколько видеокурсов по микроконтроллерам. Но это очень крутой автор. Прям очень-очень. Уж поверьте — мне есть с чем и с кем сравнивать, потому что я за свою программистскую жизнь прочитал огромное количество книг и просмотрел немало видеокурсов.
Если вы новичок, то советую пока изучить первый видеокурс. Изучить тщательно, с практической проработкой всех примеров. Ну а если у вас уже есть какой-то опыт, то выбирайте то, что вам наиболее интересно.
Инженер умных устройств
Ну вот и всё, на этом краткое знакомство с МК можно закончить. Надеюсь, вам было интересно. Также советую подписаться на рассылку об МК, в которой я рассказываю чуть подробнее о микроконтроллерах для начинающих, и из которой вы будете узнавать о выходе новых статей, книг и обучающих курсов:
Микроконтроллеры PIC
Первые микроконтроллеры PIC появились во второй половине прошлого века. Быстрые 8-разрядные микросхемы компании Microchip мгновенно завоевали популярность. Двухшинная гарвардская архитектура обеспечивает беспрецедентную скорость. Ее разрабатывали на основе набора регистров, для которого характерно разделение шин.
Выбирая язык программирования микроконтроллеров PIC, необходимо учитывать, что в основе микросхем семейства лежит уникальная конструкция RISC-процессора. Симметричная система команд позволяет произвольно выбирать метод адресации, выполнять операции в любом регистре. На данный момент компания «Микрочип» выпускает 5 разновидностей МК, которые совместимы по программному коду:
- PIC18CXXX (75 команд, встроенный аппаратный стек);
- PIC17CXXX (58 команд 16-разрядного формата);
- PIC16CXXX (35 команд, большой набор периферийных устройств);
- PIC16C5X (33 команды 12-разрядного формата, корпуса с 18–28 выводами);
- PIC12CXXX (версии с 35 и 33 командами, интегрированный генератор).
В большинстве случаев МК PIC имеют однократно программируемую память. Встречаются более дорогие модели с Flash или ультрафиолетовым стиранием. Ассортимент из 500 наименований позволяет подобрать изделие для любой задачи. Сейчас производитель концентрирует усилия на развитии 32-разрядных версий с увеличенным объемом памяти.
Языки программирования микроконтроллеров PIC — это Ассемблер и Си. Для кодирования подходят любые интегрированные среды разработки (IDE). Программировать с их помощью очень удобно. Они автоматически переводят текст программы в машинный код
Важной характеристикой IDE является возможность пошаговой симуляции работы готового ПО. Мы рекомендуем пользоваться средой разработки MPLAB
Ее созданием занималась компания Microchip.
Перед началом работы в MPLAB советуем каждый раз заводить отдельную папку. Это нужно, чтобы не запутаться в файлах проектов. Интерфейс программы интуитивно понятный, и трудностей с ним возникнуть не должно. Для отладки используются фирменные отладчики Pickit, ICD, REAL ICE, IC PROG. В них имеется возможность просмотра содержимого памяти, установки контрольных точек.
Семейства микроконтроллеров
Чаще всего встречаются микроконтроллеры следующих семейств:
- MSP430 (TI);
- ARM (ARM Limited);
- MCS 51 (INTEL);
- STMB (STMicroelectronics);
- PIC (Microchip);
- AVR (Atmel);
- RL78 (Renesas Electronics).
Одной из наиболее популярных в электронной промышленности является продукция компании Atmel, построенная на базе RISC-ядра. Первые микросхемы, разработанные в 1995 году, относятся к группе Classic. Изучать программирование микроконтроллеров AVR для начинающих желательно на более современных моделях:
- Mega — семейство мощных микросхем с развитой архитектурой.
- Tiny — недорогие изделия, имеющие восемь выводов.
Необходимо помнить, что совместимость систем команд сохраняется лишь при переносе программы с малопроизводительного МК на более мощный.
Изделия компании «Атмел» просты и понятны. Однако для использования всего функционала придется разработать программное обеспечение. Приступать к программированию микроконтроллеров AVR для начинающих рекомендуется с загрузки специализированной среды Atmel Studio. Актуальная версия предоставляется официальным сайтом производителя на бесплатной основе. Для разработки ПО в этой среде дополнительные программные компоненты не требуются.
Комплекс «Атмел Студио» включает огромное количество примеров готовых проектов. Это поможет новичку быстрее освоить базовые возможности и начать создавать собственные программы. В нем также имеются модули для компиляции и окончательной отладки кода. Параллельно с его освоением нужно изучать языки программирования. Без них разработать программное обеспечение невозможно.
Литература
На прошлой неделе, подачи одного из пользователей GeekBrains, я всерьёз задумался над вопросом “Где можно пройти курсы по программированию микроконтроллеров?”, да и вообще о профильной литературе в целом (и это несмотря на профильное высшее образование и около 10 лет опыта работы). Дело не в том, что их не существует (есть и курсы, и книги), просто главный инструмент разработчика ПО для МК — техническая документация, поставляемая вместе с платформой.
Все универсальные книги могут описать отличия, преимущества и недостатки тех или иных микроконтроллеров, на что обратить внимание при написании кода, обучить “красоте” и основным принципам. Но огромный плюс и он же главный недостаток данной профессии — подробная индивидуальная инструкция по работе с каждым более-менее серьёзным контроллером
Это означает, что абсолютно любой человек может взять, прочитать её и через несколько мгновений организовать стандартное мигание “светодиодами”. Но даже с 50 годами стажа вы не сможете сесть за незнакомый микроконтроллер и, не читая документацию, сделать с ним что-то полезное (придётся, как минимум взглянуть на расположение контактов и их назначение по умолчанию).
Условные переходы
Все команды этой группы выполняют переход (PC ← PC + A + 1) при разных условиях.
Мнемоника | Описание | Условие | Флаги |
---|---|---|---|
BRBC s, A | Переход если флаг S сброшен | Если SREG(S) = 0 | — |
BRBS s, A | Переход если флаг S установлен | Если SREG(S) = 1 | — |
BRCS A | Переход по переносу | Если C = 1 | — |
BRCC A | Переход если нет переноса | Если C = 0 | — |
BREQ A | Переход если равно | Если Z = 1 | — |
BRNE A | Переход если не равно | Если Z = 0 | — |
BRSH A | Переход если больше или равно | Если C = 0 | — |
BRLO A | Переход если меньше | Если C = 1 | — |
BRMI A | Переход если отрицательное значение | Если N = 1 | — |
BRPL A | Переход если положительное значение | Если N = 0 | — |
BRGE A | Переход если больше или равно (со знаком) | Если (N и V) = 0 | — |
BRLT A | Переход если меньше (со знаком) | Если (N или V) = 1 | — |
BRHS A | Переход по половинному переносу | Если H = 1 | — |
BRHC A | Переход если нет половинного переноса | Если H = 0 | — |
BRTS A | Переход если флаг T установлен | Если T = 1 | — |
BRTC A | Переход если флаг T сброшен | Если T = 0 | — |
BRVS A | Переход по переполнению дополнительного кода | Если V = 1 | — |
BRVC A | Переход если нет переполнения дополнительного кода | Если V = 0 | — |
BRID A | Переход если прерывания запрещены | Если I = 0 | — |
BRIE A | Переход если прерывания разрешены | Если I = 1 | — |
SBRC Rd, K | Пропустить следующую команду если бит в регистре очищен | Если Rd = 0 | — |
SBRS Rd, K | Пропустить следующую команду если бит в регистре установлен | Если Rd = 1 | — |
SBIC A, b | Пропустить следующую команду если бит в регистре ввода/вывода очищен | Если I/O(A, b) = 0 | — |
SBIS A, b | Пропустить следующую команду если бит в регистре ввода/вывода установлен | Если I/O(A, b) = 1 | — |
Язык программирования микроконтроллеров
А для программирования, как известно, используются языки программирования. Языков программирования сегодня существует огромное количество. И для многих из них имеются средства разработки для микроконтроллеров (средства для написания программ).
Однако я советую использовать стандартные средства разработки, которые предоставляют сами разработчики и производители МК. Во всяком случае на начальном этапе обучения. А стандартные средства разработки, как правило, поддерживают только два языка программирования: ассемблер и Си.
Несмотря на то, что ассемблер сложнее, я советую начинать обучение именно с него. Потому что так вы лучше разберётесь с тем, как работает МК и будете понимать, что и зачем вы делаете. А изучить Си можно будет потом.
Принцип работы микроконтроллера
Несмотря на сложное устройство принцип работы микроконтроллера очень прост. Он основан на аналоговом принципе действия. Система понимает лишь две команды («есть сигнал», «нет сигнала»). Из этих сигналов в его память вписывается код определенной команды. Когда МК считывает команду, он ее выполняет.
В каждом из МК прописаны свои базовые наборы команд. И только их он способен принимать и выполнять. Сочетая отдельные команды между собой, можно написать уникальную программу, по которой будет работать любое электронное устройство именно так, как требуется.
В зависимости от содержащихся в МК набора программ, они делятся на:
Большинство контроллеров содержит RISC набор. Объясняется это тем, что такой МК проще изготовить, он дешевле и больше пользуется спросом у разработчиков электронной техники.
Назначение и область применения микроконтроллера
Благодаря тому, что микроконтроллеры AVR очень просты в использовании, обладают высокой способностью интегрирования и низкой потребляемой мощностью, области их применения разнообразны:
- автомобилестроение;
- робототехника;
- самолето- и судостроение;
- промышленное оборудование;
- электронные детские игрушки;
- компьютеры, телефоны;
- электронные музыкальные инструменты;
- бытовая техника;
- медоборудование;
- управление шлагбаумами и воротами;
- светофоры, семафоры;
- железнодорожный транспорт.
Это не полный перечень областей применения МК.
Основное назначение МК – контролировать все процессы, которые происходят на его платформе. От включения или выключения света по хлопку до поднятия штор при изменении освещенности на улице. По сути, МК осуществляет контроль за состоянием неких переменных и изменение системы в динамических условиях.
Управление микроконтроллером
Управление МК может осуществляться двумя способами:
- Проводной путь. Управление исполнительными механизмами происходит через электропроводное соединение управляющих цепей и исполнительных механизмов. Включение — по нажатию кнопки на диспетчерском пункте или кнопочном пульте.
- Беспроводной путь. Такой способ управления не требует проводного соединения. С передатчика или пульта дистанционного управления (ПДУ) передается сигнал, который идет на приемник.
Сигналы беспроводного соединения могут быть:
- Оптическими. Подобными сигналами управляется домашняя бытовая техника: телевизоры или кондиционеры.
- Радио. Есть несколько вариантов: Wi-Fi, Bluetooth и др.
Развитие современных средств связи позволяет управлять контроллерами как через ПДУ, находясь в непосредственной близости к прибору, так и по интернету из любой точки мира через локальную сеть.
Обеспечивает поддержку cети Wi-Fi МК ESP 8266. В продаже он может быть в виде микросхемы или распаян, как arduino. У него 32-битное ядро, программировать его нужно через последовательный порт UART. Бывают более продвинутые платы с возможностью прошивки по USB – это NodeMCU. Они могут хранить информацию, записанную, например, с датчиков. Такие платы работают с различными интерфейсами, в т. ч. SPI, I2S.
Поддерживает большое число функций:
- планировщик задач;
- таймер;
- канал АЦП;
- формирование на выходе ШИМ сигнала;
- аудиопроигрыватель и многое другое.
Плата может быть использована как самостоятельное устройство и как модуль для беспроводной связи с Ардуино.
Практическое программирование микроконтроллеров
Пока всё кажется несложным. Но на самом деле, конечно, всё НАМНОГО сложнее. Я привёл лишь некоторые общие сведения для тех, кто совсем не в теме.
Но любым, даже самым сложным вещам, можно научиться. Было бы желание. Но, кроме обучения, требуется, конечно, практика. Без практики любое обучение не имеет ни смысла, ни результата.
Поэтому очень советую в ходе обучения как можно больше создавать программ. Пусть даже без реального микроконтроллера. Хотя бы просто на компьютере.
А вот что делать потом, когда вы уже чему-то научитесь? Где приложить полученные навыки на практике?
К счастью, сегодня и для этого есть множество путей — выбирайте любой из этих или придумайте свой:
- Устроиться на работу, связанную с программированием микроконтроллеров
- Разрабатывать, создавать и продавать свои устройства на МК
- Преподавать уроки по микроконтроллерам в техническом училище или ВУЗе, ну или в области дополнительного образования
- Создать свой канал про МК на Ютубе или в соцсетях, и зарабатывать на рекламе
- Написать свою книгу или видеокурс по микроконтроллерам и также зарабатывать на их продаже
- В конце концов, просто создавать свои устройства для удовольствия, то есть превратить это в увлекательное хобби, дарить эти устройства друзьям и родственникам, увлекать этим своих детей и т.п.
Применение микроконтроллеров
Как уже было сказано выше, сегодня микроконтроллеры применяются почти во всех электронных устройствах: игрушках, утюгах, стиральных машинах, автомобилях, да вообще везде.
Даже в основе таких приборов для промышленной автоматизации, как ПЛК, используются микроконтроллеры.
Микроконтроллеры используются в оборонной промышленности. К таким микроконтроллерам очень высокие требования. И цена их соответствующая. МК для оборонки, которые производятся в России, стоят от 15000 рублей за штуку и выше. Сравните с простейшими МК для гражданки — от 50 рублей.
В космической технике МК также используются. К ним требования ещё выше. Например, они должны быть устойчивы к радиации и низким температурам. Про их стоимость я ничего не знаю. Но, думаю, что она самая что ни на есть “космическая”.
Советы начинающим программистам микроконтроллеров
Чтобы первый опыт в программировании МК не закончился неудачей и навсегда не отбил охоту заниматься этим делом, нужно следовать некоторым советам:
- Начинать с изучения периферии и ее особенностей.
- Каждую большую задачу надо разделять на максимально количество мелких.
- В начале пути не стоит упрощать себе жизнь и пользоваться кодогенераторами, нестандартными фичами и т. п. вещами.
- Обязательно нужно изучать языки программирования (Си и Ассемблера).
- Читайте Даташит.
- Соберите необходимый набор инструментов. Это стоит определенных денег, но окупит себя экономией времени и качеством работы.
Никогда не поздно стать радиолюбителем, будь вам 30 лет или 50. И необязательно иметь профильное высшее образование. Сейчас на просторах интернета много доступной информации, изучая которую можно разобраться в устройстве микроконтроллеров и научиться их программировать.
Источник
Питание микроконтроллера
Для работы микроконтроллеру, как и любому электронному устройству, необходима энергия. Напряжение МК Atmel AVR находится в диапазоне 1.8–5.5 Вольт и зависит от модели и серии. Большинство приборов работает от 5 Вольт. Но встречаются и низкочастотные модели (Attiny 2313), нижняя граница у которых от 1,8 В.
Кроме того, на работу МК влияет и частота поступающего тока. Низкое напряжение требует и низких пределов частот. Чем выше частота, тем быстрее работают определенные модели.
Так, чтобы обеспечить работу контроллеров серии AVR, на все плюсовые входы нужно подавать 5 В, а нулевой заземляют.
На аналогово-цифровой преобразователь питание подают через дополнительные фильтры. Это поможет избавиться от помех, которые могут изменять показания напряжения. При этом на плюсовой ввод подается напряжение через фильтрующий дроссель. А нулевые выводы разделяют на цифровые и аналоговые. Причем соединяться они могут только в одной точке.
Кроме того, необходимо установить и конденсаторы, лучше керамические, из расчета 1 на 100 нанофарад.
Устройства на микроконтроллерах
Каждый из видов контроллеров имеет свои периферические устройства, которые работают автономно, т. е. независимо от центрального ядра. После того как периферийное устройство выполнит свою задачу, оно может сообщить об этом ЦП, а может и не сообщать. Это зависит от того, как оно запрограммировано.
На МК могут быть следующие устройства:
- Аналоговый компаратор. Основная его задача сравнивать поступающее (измеряемое) напряжение с идеальным. Если измеряемое напряжение выше, чем идеальное, то компаратор выдает сигнал логической 1 (прибор отключается), если ниже, то логический 0 (прибор продолжает работать).
- Аналогово-цифровой преобразователь (АЦП). Измеряет аналоговое напряжение в период времени и выдает его в цифровой форме. Есть не у всех МК.
- Таймер/счетчик. Представляет собой сочетание 2-х форм таймера и счетчика. Таймер формирует интервалы времени, а цифровой счетчик считает количество импульсов, идущих от внутреннего генератора частот, или сигналы от внешних источников. Одним из представителей работы таймера /счетчика может быть ШИМ (широтно-импульсный модулятор). Он предназначен для управления средним значением напряжения при нагрузке.
- Сторожевой таймер. Его задача перезапускать программу через определенный временной промежуток.
- Модуль прерываний. Он сообщает МК о наступлении какого-либо события и прерывает выполнение программы. После завершения события возобновляет прерванную программу.
Не все из этих периферийных устройств обязательно есть в каждом МК. Существуют и другие, менее распространенные устройства.
Семейства микроконтроллеров
Под ядром МК подразумевают набор определенных команд, цикличность работы процессора, организацию как памяти программ, так и баз данных, систему прерываний и базовый набор периферийных устройств (ПУ).
Различаются представители одного семейства между собой объемом памяти программ и баз данных, а также разнообразием ПУ.
Объединяют все МК в семейства одинаковость двоичного кода программирования.
Семейства делятся на:
- MSC-51, производства Intel. Монокристальный МК на основе Гарвардской архитектуры. Основной представитель этого семейства 80С51, созданный по технологии CMOS. И хотя эти контроллеры разработаны еще в 80-х годах прошлого века, но до сих пор широко применяются. И сегодня многие компании, такие как Siemens, Philips и др. выпускают свои контроллеры с подобной архитектурой.
- PIC (Microchip). МК Гарвардской архитектуры. В его основе лежит архитектура с сокращенным набором команд, встроенная память команд и данных, низкое энергопотребление. В это семейство входят более 500 различных МК (8-ми, 16-ти, 32-битные) с различными наборами периферии, памяти и прочими характеристиками.
- AVR (Atmel). Высокоскоростные контроллеры разработаны на собственной архитектуре. Основой контроллера является Гарвардский RISC-процессор с самостоятельным доступом к памяти программ и баз данных (Flash ПЗУ). Каждый из 32 регистров общего назначения может работать как регистр-аккумулятор и совокупность 16-битных команд. Высокая производительность в 1 MIPS на каждый МГц тактовой частоты обеспечивается за счет порядка выполнения команд, который предусматривает выполнение одной команды и одновременную подготовку к следующей. Для поддержания своей продукции компания Atmel выпускает бесплатную и качественную среду разработки Atmel
- ARM (ARM Limited) разработаны на собственной архитектуре. В семейство входят 32-х и 64-битовые МК. ARM Limited занимается только разработкой ядер и их инструментов, а лицензии на производство продает другим компаниям. Эти процессоры потребляют мало энергии, поэтому находят широкое применение в производстве мобильных телефонов, игровых консолей, маршрутизаторов и т. д. К компаниям, выкупившим лицензии, относятся: STMicroelectronics, Samsung, Sony Ericsson и др.
- STM (STMicroelectronics). 8-разрядные контроллеры (STM8) относятся к категории высоконадежных с низким энергопотреблением изделий. В это же семейство входят контроллеры STM32F4 и STM Их основу составляет-32 битный Cortex. Такие контроллеры обладают отлично сбалансированной архитектурой и имеют большие перспективы развития.
Это не все семейства микроконтроллеров. Здесь мы привели только основные.