Шапка

Обзор Части 15

Конспект Части 15 , которая кратко разбирает тему микроконтроллеров.

@A Микроконтроллеры с высоты птичьего полёта

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

Микроконтроллеры ( µC ) - процессоры, имеющие на кристалле полный набор периферии ( рис. 15.1 ). Один корпус ценой гораздо ниже $10 имеет впечатляющие вычислительные возможности ( 32 разряда, 100 MIPs ), набор АЦП, ЦАПов, Ethernet, USB, ШИМ, контроллер ЖКИ, SPI, несколько асинхронных последовательных портов, таймеры, программную и оперативную память ( рис. 10.86 ), см. серию LPC4088 - ARM Cortex-M4 фирмы NXP. Микроконтроллеры бесполезны без микропрограммы , создание которой - наиболее сложная часть проекта, поэтому, помимо проектирования и выпекания кремния высокой степени интеграции, промышленность создаёт и улучшает интегрированные среды разработки ( IDE ) - инструмент для написания программ с последующей загрузкой и отладкой прямо в схеме.

Схемотехник должен рассматривать микроконтроллеры как обычные схемные компоненты, как, например, операционные усилители ( причём стоимость µC часто меньше, чем ОУ ). Даже в самых своих простых конфигурациях микроконтроллеры могут служить передаточным звеном между пользователем и остальной схемой ( см. рис. 15.5 ), а более сложные модели способны отвечать за бОльшую часть функций прибора ( см. рис. 15.18 ). В этой части была кратко представлена неисчерпаемая тема микроконтроллеров, даны несколько примеров, позволяющих составить некоторое представление об открывающихся возможностях. Примеры сопровождаются псевдокодом , а для самого первого из них – «пляжного экспонометра» - приведён полный код на языке Си.

@B Популярные семейства микроконтроллеров

В §15.3 приводится аннотированный список современных фаворитов. В первых рядах самые простые AVR ( Atmel ) и PIC ( Microchip ), а запросы на высокую производительность удовлетворяет самый популярный процессор ARM ( он лицензирован компанией ARM Holdings более чем десятку производителей кремния ). Тот же ARM стоит в большей части смартфонов планеты. Активно используемая платформа Arduino ( §15.9.4 ) включает одноплатные компьютеры ( SBC ) на AVR и ARM.

@C Внешняя периферия

Микроконтроллеры так и норовят протянуть свои алчные выводы к другим микросхема на плате. В этом им помогают несколько вариантов прямого подключения ( §15.8.1 , рис. 15.20 ) и пара внутриплатных шин: SPI ( §15.8.2 , рис. 15.21 ) и I2C ( §15.8.3 , рис. 15.22 ). Аннотированные рисунки знакомят с более чем 50 видами периферийных устройств.

@D Советы по проектированию схем

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

  1. Многие µC имеют в своём составе АЦП, которое очень полезно при работе с аналоговыми сигналами. Но не стоит забывать об обычном компараторе, который способен сочетать простоту с отличными параметрами ( рис. 15.3 ).
  2. Цифровые выходы вполне могут работать с МОП и биполярными транзисторами непосредственно ( рис. 15.3 ) или через вспомогательную ИМС драйвера затвора ( рис. 15.10 ). К цифровым выходам можно подключать твердотельное реле - ( SSR ) ( рис. 15.4 ).
  3. Не забывайте простой асинхронный последовательный канал. Он есть во всех µC и ещё встречается в настольных машинах, а также существует в виде мостов для USB и Ethernet ( рис. 15.5 ).
  4. Кнопки можно организовать в матрицы, сокращая число потраченных линий ввода-вывода ( рис. 15.8 ). Опрос выполняется последовательным сканированием выходных линий.
  5. Микроконтроллеры, предназначенные для измерений, часто позволяют подключать источники низкоуровневых сигналов непосредственно к аналоговым входам ( рис. 15.10 ), а внутренние модули ШИМ помогают сформировать сигнал пропорционального управления.
  6. АЦП, имеющееся у большинства µC, серьёзно упрощает подключение датчиков с аналоговым выходом ( гироскопы, акселерометры и т.п., рис. 15.18 ). Можно найти самые разные датчики такого рода на сайтах sparkfun.com и adafruit.com.
  7. Простой путь в тему - комплект из платы и ПО Arduino ( §15.9.4 ). Что-то заработает уже через 20 минут после вскрытия упаковки.

@E Советы по проектированию программ

Для начала работы нужно найти программные инструменты ( компилятор, ассемблер, отладчик ) под выбранный микроконтроллер и аппаратный адаптер для загрузки объектного кода в µC ( §15.9.3 ). Кроме того, нужно знать, чем программирование под микроконтроллеры отличается от программирования для больших машин. Вот несколько подсказок.

  1. Существуют зависящие от конкретного изготовителя ПО расширения языков Си/C++, которые учитывают особенности внутренней периферии ( портов, таймеров, АЦП и т.д. ), и отсутствуют в чистом Си.
  2. Код для µC должен провести изрядный объём инициализации режимов работы и настройки периферийных блоков. Это достаточно утомительная работа, часто требующая аккуратной побитовой сборки десятков байт данных.
  3. Случается, критичные ко времени исполнения задачи вынуждают спускаться на уровень ассемблера. Будьте бдительны и не позволяйте компилятору заоптимизировать ваш код до полной его ликвидации.
  4. Все устройства, перед подготовкой к производству должны проверяться и одобряться специалистами по интерфейсу пользователя ( §15.2.2.E ).
  5. Обязательно включайте сторожевой таймер. Правильные программы не должны вешать µC, тем не менее, это регулярно происходит.
  6. Код обработчиков прерываний должен быть возможно более коротким. В простых системах прерывания не требуются вовсе. [* Здесь можно заметить, что в простых системах можно отказаться от главного цикла и решать все вопросы через прерывания, в т.ч. программные ] .
  7. Внутренние таймеры могут переключать состояние внешних выводов, что очень удобно для управления внешними и внутренними устройствами ( например АЦП ) на периодической основе.

@F Где использовать микроконтроллеры ?

Везде! А конкретно, в системах

  1. с алфавитно-цифровыми или графическими индикаторами в качестве интерфейса пользователя;
  2. интеллектуальной периферией, требующей инициализации рабочего режима;
  3. связывающихся с управляющей машиной, периферией, сетью;
  4. требующей вычислений, хранения данных, преобразования форматов;
  5. нуждающихся в калибровке или линеаризации измерений;
  6. предусматривающих сложный набор действий, растянутых во времени;
  7. предусматривающих обновление и дополнение функционала.

Микроконтроллеры способны успешно выступать даже в традиционно «аналоговых» задачах измерения и управления. Этому способствуют растущие возможности µC с аналоговым уклоном фирм Analog Devices и Cypress.

В противоположность микроконтроллерам, программируемые логические микросхемы ( PLD и FPGA, см. Часть 11 ) используются преимущественно в критичных ко времени исполнения или требующих высокой степени параллелизма задачах. Их сложнее программировать и отлаживать, чем микроконтроллеры.

@G Выбор микроконтроллера

См. §15.3 . Для начала стоит присмотреться к µC, которые использует ближайшее окружение. Для таких ИМС не будет проблем с программным обеспечением и практической помощью. Далее следует учесть несколько факторов ( приоритет зависит от задачи ):

  1. порты: аналоговые, цифровые, коммуникационные;
  2. набор внутренних периферийных блоков ( АЦП, ШИМ и т.д. );
  3. скорость;
  4. объём памяти;
  5. корпус;
  6. потребляемая мощность, тактирование, режимы малого потребления;
  7. программная поддержка.

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

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

Previous part:

Next part: