Микроконтроллеры для чайников

Программирование микроконтроллеров для начинающих

Начинать осваивать программирование микроконтроллеров для начинающих рекомендуется с изучения архитектуры и разновидностей. Промышленность выпускает следующие виды МК:

  • встраиваемые;
  • 8-, 16- и 32-разрядные;
  • цифровые сигнальные процессоры.

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

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

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

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

Чаще всего встречаются микроконтроллеры следующих семейств:

  • 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. Актуальная версия предоставляется официальным сайтом производителя на бесплатной основе. Для разработки ПО в этой среде дополнительные программные компоненты не требуются.

Комплекс «Атмел Студио» включает огромное количество примеров готовых проектов. Это поможет новичку быстрее освоить базовые возможности и начать создавать собственные программы. В нем также имеются модули для компиляции и окончательной отладки кода. Параллельно с его освоением нужно изучать языки программирования. Без них разработать программное обеспечение невозможно.

Языки программирования

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

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

На самом деле, можно использовать практически любые языки программирования микроконтроллеров. Но популярнее всех С/С++. Это язык высокого уровня, позволяющий работать с максимальным комфортом. Более того, в разработке архитектуры AVR принимали участие создатели Си. Поэтому микросхемы производства «Атмел» адаптированы именно к этому языку.

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

Нужно отметить, что выбор оптимального языка программирования зависит также от аппаратного обеспечения. При малом количестве оперативной памяти использовать высокоуровневый Си нецелесообразно. В данном случае больше подойдет Ассемблер. Он обеспечивает максимальное быстродействие за счет короткого кода программы. Универсальной среды программирования не существует, но в большинстве бесплатных и коммерческих приложений можно использовать как Ассемблер, так и С/С++.

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

Первые микроконтроллеры PIC появились во второй половине прошлого века. Быстрые 8-разрядные микросхемы компании Microchip мгновенно завоевали популярность. Двухшинная гарвардская архитектура обеспечивает беспрецедентную скорость. Ее разрабатывали на основе набора регистров, для которого характерно разделение шин.

Выбирая язык программирования микроконтроллеров PIC, необходимо учитывать, что в основе микросхем семейства лежит уникальная конструкция RISC-процессора. Симметричная система команд позволяет произвольно выбирать метод адресации, выполнять операции в любом регистре. На данный момент компания «Микрочип» выпускает 5 разновидностей МК, которые совместимы по программному коду:

  1. PIC18CXXX (75 команд, встроенный аппаратный стек);
  2. PIC17CXXX (58 команд 16-разрядного формата);
  3. PIC16CXXX (35 команд, большой набор периферийных устройств);
  4. PIC16C5X (33 команды 12-разрядного формата, корпуса с 18–28 выводами);
  5. PIC12CXXX (версии с 35 и 33 командами, интегрированный генератор).

В большинстве случаев МК PIC имеют однократно программируемую память. Встречаются более дорогие модели с Flash или ультрафиолетовым стиранием. Ассортимент из 500 наименований позволяет подобрать изделие для любой задачи. Сейчас производитель концентрирует усилия на развитии 32-разрядных версий с увеличенным объемом памяти.

Языки программирования микроконтроллеров PIC — это Ассемблер и Си. Для кодирования подходят любые интегрированные среды разработки (IDE). Программировать с их помощью очень удобно. Они автоматически переводят текст программы в машинный код. Важной характеристикой IDE является возможность пошаговой симуляции работы готового ПО. Мы рекомендуем пользоваться средой разработки MPLAB. Ее созданием занималась компания Microchip.

Перед началом работы в MPLAB советуем каждый раз заводить отдельную папку. Это нужно, чтобы не запутаться в файлах проектов. Интерфейс программы интуитивно понятный, и трудностей с ним возникнуть не должно. Для отладки используются фирменные отладчики Pickit, ICD, REAL ICE, IC PROG. В них имеется возможность просмотра содержимого памяти, установки контрольных точек.

Ликбез для начинающих

Вступление.

Целью настоящей книги является – научить читателя основам микропроцессорной техники. Предполагается некий начальный уровень знаний в радиотехнике. Я определяю этот уровень, как специалист или любитель, знакомый с радио и импульсной техникой. В задачи этой книги не входит объяснение, что такое резисторы, конденсаторы или транзисторы. Предполагается, что читатель знаком с этим и с схемотехникой аналоговых устройств, но стремится узнать, что такое микропроцессорные устройства и научиться самому конструировать их. В начале книги раскрываются общие принципы цифрового представления сигнала, раскрываются такие понятия, как логические элементы, цифровой сигнал, принципы хранения и обработки цифровой информации. А так же описывается принцип работы тех элементов цифровой техники, которые понадобятся нам в дальнейшем, когда мы будем учиться строить микропроцессорную систему. Описание всех этих элементов дается в книге лишь в той мере, в которой это нужно для быстрого понимания основных принципов построения микропроцессорных систем. Для более полного понимания работы каждого элемента рекомендую обратиться к моему сайту под названием «Цифровые микросхемы и микропроцессоры» http://www.mirmk.ru.

В качестве примера микропроцессорного устройства в данной книге взята реальная конструкция, разработанная автором – позиционер спутниковой антенны. Позиционер предназначен для автоматизации управления поворотом бытовой спутниковой антенны. Он способен запомнить до 99 позиций (направлений на спутник), а затем автоматически устанавливать антенну в любую из этих позиций. Для этого необходимо лишь выбрать номер этой позиции при помощи пульта дистанционного управления, либо при помощи кнопок на передней панели прибора. Схема и программа позиционера были разработаны автором книги. Опытный образец был изготовлен и испытан с применением стандартного фирменного поворотного устройства (мотор, редуктор, геркон-датчик) иностранного производства. Контроллер выполнен на основе микроконтроллера AT89C2051 фирмы Atmel (www.atmel.com или www.atmel.ru). В связи с этим изучение микропроцессоров так же будет проводиться на примере процессора AT89C2051. В настоящее время фирма Atmel перешла на более современные процессоры типа AVR. Однако построение микропроцессорных устройств на данном процессоре с моей точки зрения вполне оправдано, так как его параметры прекрасно подходят для этой задачи, а цена процессора AT89C2051 существенно ниже по сравнению с любым процессором из семейства AVR.

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

Автор надеется, что эта книга будет полезна широкому кругу специалистов и радиолюбителей и будет благодарен за любые замечания и комментарии по книге. Все замечания прошу высылать по адресу Крым, г. Симферополь, ул. Русская, 194 или по E-mail: avbelov@ukr.net . Нужно заметить, что публикуемый здесь текст — это самый первый черновой вариант книги. Со времени его написания книга была написана полностью, издана в 2004 году. Затем книга претерпела довольно значительные изменения, выдержала уже около десяти переизданий. Самое последнее издание книги вы можете заказать в бумажном варианте по льготной цене перейдя на этом сайте на соответствующую страницу

Глава 1. Что же такое микропроцессор.

Что же такое микропроцессор. И чем он отличается от микроконтроллера?

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

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

ü Порты ввода/вывода. Это некие микросхемы, при помощи которых микропроцессорная система может общаться с внешним миром. Через порты ввода компьютерная система получает информацию из вне, а через порты вывода она выдает результаты своей работы и управляет внешними устройствами. Только благодаря этим самым портам ввода/вывода к компьютеру, подключаются такие устройства, как клавиатура, мышь, дисководы, CD-ROM и т.д. Те читатели, которые знакомы с компьютерами, возможно, слышали термины «параллельный порт» (LPT) и «последовательный порт» (COM). Так вот в данном случае речь идет совсем о другом понятии. Это просто схожие термины. Параллельный и тем более последовательный порты компьютера – это целые, достаточно сложные схемы, которые в свою очередь управляются как раз таки при помощи портов ввода/вывода. Не нужно так же думать, что клавиатура и мышь используют только порты ввода, а дисплей порт вывода. Для управления большинством устройств компьютера используются как порты ввода, так и порты вывода микропроцессорной системы. Возможно, вы удивлены, что я называю внешними устройствами и жесткий диск и флоппи дисковод. Там, внутри компьютера, скрыто еще много устройств, которые по отношению к микропроцессору являются внешними, хотя находятся зачастую не только внутри компьютера, но и непосредственно на материнской плате – главной плате компьютера.

ü Процессор. Процессор – это самая главная часть, сердце всей системы. Он предназначен для того, что бы выполнять различные последовательности действий с числами в памяти и с данными в портах ввода/вывода. И всего то!

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

Рис. 1.

Что же может делать процессор с этими числами? Да то, что вообще с ними можно делать. Он может читать их из различных ячеек памяти, складывать, вычитать, сравнивать, затем записывать в те же или в другие ячейки памяти. Еще он может выполнять логические (Булевы) операции с числами (что это такое я подробно опишу ниже). Более мощные процессоры могут даже умножать и делить числа. Ну и кое, какие специальные операции, которые мы обязательно будем разбирать, когда будем подробнее изучать работу микропроцессора.

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

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

Ну, так что же это за такое чудесное устройство – микропроцессор. Он и читает и вычисляет и записывает и столько разных умных вещей делает! Как же он это все умеет. Видимо очень умная микросхема? На самом деле микропроцессор – это просто автомат, который выполняет, заложенные в нем операции по ПРОГРАММЕ. Программа – это последовательность команд для процессора, записана в той же самой памяти, то же в виде цифр. Иногда, правда память делится на две части: память программ и память данных. В процессоре заложен простой алгоритм. Сразу после включения или после прихода сигнала сброса (Reset) процессор начинает читать из той области памяти, которая отведена для хранения программ, по очереди число за числом. Каждым таким числом закодирована команда. Команда – это одно из действий, которое может выполнить микропроцессор. Число, которым закодирована команда, называется код операции. Процессор читает код операции, выполняет эту операцию. Затем читает следующий код, опять выполняет. Так он последовательно читает эти коды и выполняет их. Это и есть процесс выполнения прграммы. А кто же записал эти коды в память? Программист! Программист сначала придумал программу. Затем записал ее в микросхему памяти. Вставил микросхему в микропроцессорную систему и включил питание. Система заработала. Вот вам и умная машина. Вульгарный автомат.

В микропроцессорных контроллерах для хранения программ используют так называемые постоянные запоминающие устройства (ПЗУ). По-английски это звучит как ROM (read only memory). Они называются постоянными потому, что после записи туда информации она там не меняется. Запись – это специальный процесс, выполняемый при помощи специальных устройств – программаторов ПЗУ. Информация в них хранится за счет прожигания определенных областей микросхемы. Прошил раз и пользуешься этой информацией долгое время. Для хранения программы микропроцессорного контроллера это как раз очень подходит. Микропроцессор может только читать из такой памяти. Записать туда он ничего не сможет. Если же он попробует записать туда информацию, ничего страшного не произойдет. В памяти останется то, что там было до попытки записи. Кроме постоянного запоминающего устройства в системе должна быть обязательно память, выполненная на микросхемах оперативной памяти. То есть оперативное запоминающее устройство (ОЗУ). По-английски RAM. В эту память процессор может, записывать информацию, а затем читать ее. Ни одна программа не обходится без некоторого количества ячеек памяти для хранения множества промежуточных результатов и вспомогательных величин. Для этих целей и служит ОЗУ.

Ну а что же такое микроконтроллеры. Иногда мы читаем «Микроконтроллер AT89C2051». Микроконтроллер — это дитя дальнейшей интеграции, это целая микропроцессорная система на одном кристалле! Одна микросхема содержит в себе все составляющие микропроцессорной системы: память, порты ввода/вывода и собственно процессор. Кроме того, там часто располагаются некоторые внешние (по отношению к процессору) устройства (такие устройства часто называют «периферийными»): таймеры, устройства прерывания, компараторы и др. Значения этих, пока непонятных терминов вы узнаете из последующих глав. Вообще с понятиями «микропроцессор» и «микроконтроллер» существует некоторая путаница. То, что я сейчас назвал микроконтроллером, иногда тоже называют микропроцессором. Что бы понять — о чем идет речь, следите за контекстом подаваемой информации.

This entry was posted in Ремонт. Bookmark the <a href="https://kabel-house.ru/remont/mikrokontrollery-dlya-chajnikov/" title="Permalink to Микроконтроллеры для чайников" rel="bookmark">permalink</a>.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *