Что такое микроконтроллер? определение характеристик и архитектуры

Внешние интерфейсы

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

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

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

Однокристальная ЭВМ (ОКМ ЭВМ) или микроконтроллер – БИС, структурная схема которой содержит все функциональные узлы, необходимые для обеспечения автономной работы в качестве вычислительного или управляющего устройства. На кристалле ОКМ ЭВМ располагаются: процессор, блоки постоянной и оперативной памяти (ПЗУ и ОЗУ), периферийные устройства различного типа, блоки управления и синхронизации и, возможно, некоторые другие блоки.

Микроконтроллер — (далее МК) это микросхема, предназначенная для программного управления электронными схемами. МК выполняется на одном кристалле. На нем расположено как вычислительное устройство, так и ПЗУ и ОЗУ. Кроме этого, в составе МК чаще всего находятся порты ввода/вывода, таймеры, АЦП, последовательные и параллельные интерфейсы. В некоторых даже можно заметить Wi-Fi-/Bluetooth-модуль и даже поддержку NFC.

Первый патент на микроконтроллер был выдан в 1971 году компании Texas Instruments. Инженеры этой компании предложили размещать на кристалле не только процессор, но и память с устройствами ввода/вывода.

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

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

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

Ядро микроконтроллера (центральный процессор), как правило строится на основе RISC-архитектуры.

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

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

Несмотря на то, что все необходимое для работы микроконтроллера в нем уже есть, иногда они используются в паре с внешними периферийными устройствами. К примеру, когда внутренней ПЗУ не хватает (или она попросту отсутствует), подключают внешнюю. Именно так сделали с микроконтроллерами серии ESP. У ESP8266 встроенной памяти нет вообще, а у есть незначительные 448 КБ. Поэтому к ним в корпус (точнее под радиатор) помещается flash-память емкостью 1–16 МБ.

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

Например, одна из мощных плат платформы Arduino — Due. Она находится под управлением 32-битного AVR-микроконтроллера AT91SAM3X8E. Его тактовая частота 84 МГц. Постоянной памяти тут 512 КБ, а оперативной — 96 КБ. МК имеет 54 цифровых GPIO (12 из которых с поддержкой ШИМ), 12 аналоговых входов и 2 аналоговых выхода (ЦАП). Тут так же присутствуют различные интерфейсы, такие как UART, SPI, I2C.

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

Что такое микропроцессор

Микропроцессор (в ангоязычной литературеMPU — Micro Processor Unit) содержит функционал компьютерного центрального процессора, или ЦП (CPU — Central Processing Unit) на одном полупроводниковом кристалле (ИМС — интегральная микросхема или на западный манер — Integrated Circuit).

Графический процессор NVIDIA

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

Микропроцессор обрабатывает данные, поступающие с входных периферийных устройств и передает обработанные данные на выходные периферийные устройства.

Существует четыре основных типа процессоров, различающихся своей архитектурой.

Микропроцессоры с полным набором команд (Complex Instruction Set Computer, CISC-архитектура). Характеризуются нефиксированным значением длины команды, кодированием арифметических действий одной командой, небольшим числом регистров, выполняющих строго определённые функции. Примером такого типа процессоров служит семейство x86.

Микропроцессоры с сокращенным набором команд (Reduced Instruction Set Computer, RISC-архитектура). Обладают, как правило, повышенным быстродействием за счёт упрощения инструкций, что позволяет упростить процесс декодирования и, соответственно, сократить время их выполнения. Большинство графических процессоров разрабатываются, используя этот тип архитектуры.

Микропроцессоры с минимальным набором команд (Minimal Instruction Set Computer, MISC-архитектура). В отличие от RISC-архитектуры, в них используются длинные командные слова, что позволяет выполнять достаточно сложные действия за один цикл работы устройства. Формирование длинных «командных слов» стало возможным благодаря увеличению разрядности микропроцессорных устройств.

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

Отдельно хочу выделить микропроцессоры специального назначения (ASIC — Application Specific Integrated Circuit). Как следует из названия, предназначены для решения конкретной задачи. В отличие от микропроцессоров общего назначения, применяются в конкретном устройстве и выполняют определенные функции, характерные только для данного устройства. Специализация на выполнении узкого класса функций приводит к увеличению скорости работы устройства и, как правило, позволяет снизить стоимость такой интегральной схемы. Примерами таких микропроцессоров может быть микросхема, разработанная исключительно для управления мобильным телефоном, микросхемы аппаратного кодирования и декодирования аудио- и видеосигналов — так называемые цифровые сигнальные процессоры (Digital Signal Processing, DSP multiprocessors). Могут быть реализованы в виде ПЛИС (программируемая логическая интегральная схема). При разработке таких процессоров для описания их функциональности используют языки описания аппаратных устройств (HDL — Hardware Description Language), такие как Verilog и VHDL.

 Системы на основе микропроцессоров строят примерно следующим образом.

Система, основанная на микропроцессоре

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

Теперь, давайте, рассмотрим микроконтроллер.

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

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

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

  • FlowCode – универсальная графическая среда. Программируется с помощью построения логических структур блок-схем.
  • Algorithm Builder. Тоже графическая среда. Но написание кода проходит в 3–5 раз быстрее, чем в FlowCode. В ней совмещены графический редактор, компилятор, симулятор МК, внутрисхемный программатор.
  • В ней объединены Ассемблер и С/С++. Функционал среды позволяет самостоятельно прошивать МК.
  • Image Craft. Как и предыдущая поддерживает Ассемблер и С/С++ языки. В ее составе есть библиотека, позволяющая работать с отдельными устройствами МК.
  • Популярная среда для любителей. Имеет Си-подобный язык, но отличающийся от других. Он более понятен человеку. Поддерживает библиотеки, в составе которых есть драйвера для подключения некоторых платформ.

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

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

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

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

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

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

Микроконтроллер состоит из центрального процессора (ЦП, CPU), энергонезависимой памяти, энергозависимой памяти, периферийных устройств и вспомогательных цепей.

Центральный процессор (CPU)

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

Память

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

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

Периферийные устройства

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

  • Преобразователи данных: аналого-цифровой преобразователь, цифро-аналоговый преобразователь, генератор опорного напряжения.

    Данный график демонстрирует данные трехосевого акселерометра, оцифрованные с помощью встроенного АЦП микроконтроллера

  • Генерирование тактовых сигналов: внутренний генератор, схема на кварцевом резонаторе, петля фазовой автоподстройки частоты.
  • Расчет времени: таймер общего назначения, часы реального времени, счетчик внешних событий, широтно-импульсная модуляция.
  • Обработка аналоговых сигналов: операционный усилитель, аналоговый компаратор.
  • Ввод/вывод: цифровые входные и выходные цепи общего назначения, параллельный интерфейс памяти.
  • Последовательная связь: UART, SPI, I2C, USB

Вспомогательные цепи

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

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

3.2. Организация стека

Особенность стека по сравнению с другой оперативной памятью – это заданный и неизменяемый способ адресации.

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

Принцип действия стека показан на рис. 3.2 (адреса ячеек памяти выбраны условно).

Рисунок 3.2 – Принцип работы стека

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

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

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

Набор команд микрокомпьютера

Основные характеристики микропроцессора также определяются набором инструкций.

Обычно он состоит из 5 групп:

  1. Группа передачи данных. Данные команды помогают перемещать информацию между регистрами внутри микропроцессора, между памятью и регистром или ячейками памяти.
  2. Арифметическая группа позволяет складывать, вычитать, увеличивать или уменьшать данные в памяти или регистрах (например, сложить содержимое двух регистров ЦПУ).
  3. Логическая группа используется для операций И, ИЛИ, ИСКЛЮЧАЮЩЕГО ИЛИ, сравнения, циклического сдвига, дополнения данных в памяти или регистрах (например, чтобы пропустить через схему ИЛИ содержимое двух регистров микропроцессора).
  4. Группа ветвления включает безусловные и условные переходы, вызов подпрограмм и возвращение из них. Условные инструкции служат для того, чтобы определенная операция выполнялась только в случае выполнения определенного условия (например, если требуется перейти к конкретной команде, когда результат последнего вычисления был равен нулю). Они обеспечивают возможность программе самой принимать решения.
  5. Группа стека, ввода-вывода и управления микропроцессором производит передачу данных между ЦПУ и периферией, манипулирует стеком и изменяет внутренние флаги управления. Эти команды позволяют программисту остановить устройство, перевести его в нерабочее состояние, включить и отключить систему прерываний и т. д.

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

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

Для работы микроконтроллеру, как и любому электронному устройству, необходима энергия. Напряжение МК Atmel AVR находится в диапазоне 1.8–5.5 Вольт и зависит от модели и серии. Большинство приборов работает от 5 Вольт. Но встречаются и низкочастотные модели (Attiny 2313), нижняя граница у которых от 1,8 В.

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

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

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

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

QFN корпус

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

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

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

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

SOIC корпус

Следующим, в порядке снижения габаритов, будет SOIC корпус. Его аббревиатура расшифровывается так: Small—Outline Integrated Circuit. Он используется при пайке поверхностным монтажом, т. е. выводы микросхемы припаиваются к контактным площадкам, расположенным на поверхности платы, а не вставляются в отверстия, как DIP корпус. Расстояние между у SOIC корпусов выводами в два раза меньше, чем в DIP и составляет 1,27 мм.

Рис. 2 – Микроконтроллер AT89C2051 в SOIC корпусе

Резюме микропроцессора и микроконтроллера

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

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

Микроконтроллер в первую очередь предназначен для управления задачами в реальном времени, в отличие от микропроцессора.

Сравнительная таблица

Основа для сравнения Микропроцессор микроконтроллер
основной Состоит из одного кремниевого чипа, содержащего ALU, CU и регистры. Состоит из микропроцессора, памяти, порта ввода / вывода, блока управления прерываниями и т. Д.
Характеристика Зависимая единица Автономный блок
Порты ввода / вывода Не содержит встроенного порта ввода / вывода Встроенные порты ввода / вывода присутствуют
Тип выполненной операции Общее назначение при проектировании и эксплуатации. Ориентирован на приложение или предметную область.
Целевой для Рынок высшего класса Встроенный рынок
Потребляемая мощность Обеспечивает меньше вариантов энергосбережения Включает больше вариантов энергосбережения

Определение микропроцессора

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

Для проектирования микропроцессора предусмотрены две системные архитектуры — Гарвард и Фон-Нейман. Процессор гарвардского типа, встроенный в изолирующие шины для программ и памяти данных. Напротив, процессор на основе архитектуры фон-Неймана совместно использует одну шину для памяти программ и данных.

Микропроцессор не является независимым блоком, он зависит от других аппаратных блоков, таких как память, таймер, контроллер прерываний и т. Д. Первый микропроцессор был разработан Intel в 1971 году и назван Intel 4004.

Определение микроконтроллера

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

Микроконтроллер более ценен, чем микропроцессор в области встроенных систем, потому что он более экономичен и легко доступен. Первый микроконтроллер TMS 1000 был разработан компанией Texas Instruments в 1974 году. Базовая конструкция микроконтроллера TI напоминает процессор Intel 4004/4040 (4-разрядный), в который разработчики добавили поддержку ОЗУ, ПЗУ, ввода-вывода. Еще одним преимуществом микроконтроллера является то, что мы можем записывать пользовательские инструкции в процессор.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: