Микроконтроллеры AVR. От азов программирования до создания практических устройств

Микроконтроллеры AVR. От азов программирования до создания практических устройств
Автор: Белов А. В.
Год: 2016
ISBN: 978-5-94387-854-1
Страниц: 544
Язык: Русский
Формат: PDF
Размер: 33 Мб

Download

За шесть шагов новый практический самоучитель позволит пройти путь от “чайника” изучающего азы цифровой техники, до вполне готового специалиста, умеющего самостоятельно разрабатывать схемы любых устройств на микроконтроллерах и составлять для них программы.
Изучив базовые элементы цифровой логики, читатель осваивает основы микропроцессорной техники, возможности семейства микроконтроллеров AVR, основы схемотехники и конструирования микроэлектронных устройств.
Читатель изучит сразу два языка программирования для микроконтроллеров (язык Ассемблера и язык СИ), учится транслировать, отлаживать программы, прошивать их в память микроконтроллера, самостоятельно разрабатывать собственные микроконтроллерные устройства.
Книга предназначена для широкого круга читателей: начинающих специалистов по электронной технике, студентов технических ВУЗов и всех желающих изучить эту область человеческих знаний.

+

Содержание

1. Учимся основам цифровой техники
2. Переходим от цифровой техники к микропроцессору и микроконтроллеру
3. А теперь ближе к практике: знакомтесь — микроконтроллеры AVR
4. Инструменты разработки — программы отладки и транслирования
5. Переходим непосредственно к разработке устройств и программ
6. Осваиваем все возможности микроконтроллера ATtiny2313

Алгоритм работы микропроцессорной системы

Возможности процессора

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

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

  • логическое умножение (операция «И»);
  • логическое сложение (операция «ИЛИ»);
  • инверсия (операция «НЕ»).

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

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

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

Процесс выполнения команды

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

Работа микропроцессора всегда начинается с процедуры начального сброса. Сброс микропроцессора сводится к установке всех его регистров в исходное состояние. В регистр адреса после сброса записывается адрес начала программы. Адрес начала программы зависит от модели микропроцессора и определяется его разработчиком. Чаще всего этот адрес равен нулю.

Сразу по окончании процесса начального сброса начинается выполнение программы. Для начала процессор читает число из программной памяти, т. е. из ячейки, адрес которой записан в регистр адреса. В нашем случае – из ячейки с нулевым адресом. Прочитанное число он воспринимает как код первой команды.

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

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

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

Второе исключение – режим сна. Некоторые модели микроконтроллеров способны переходить в специальный режим низкого потребления энергии, который называется режимом сна или спящим режимом. В спящем режиме выполнение программы также приостанавливается. Режим сна удобен в том случае, когда микропроцессорная система вынуждена долгое время находиться в состоянии ожидания. Например, ожидание нажатия кнопки «Пуск». Такой процессор способен в нужный момент пробудиться из режима сна и продолжить работу.

Инструменты разработки — программы отладки и транслирования

Программная среда AVR Studio

Программы-отладчики существуют столько же, сколько существует само программирование. Основное назначение отладчика – поиск ошибок в разрабатываемой программе. Английское название такого вида программ – Debugger, а процесс отладки называется Debug. От слова Bug – ошибка. Второе значение английского слова bug – жук или клоп. Так что
отладка программ сродни ловле блох! В нашем случае, когда о разработке новых программ говорить еще рано, отладчик будет нам полезен, как способ своими руками попробовать в работе изучаемую программу. Подборку уже готовых программных примеров вы увидите на следующем шаге. Одна из главных функций любого отладчика – возможность
пошагового выполнения разрабатываемой программы. После выполнения каждого очередного шага программист может видеть состояние всех регистров и ячеек памяти микроконтроллера. А точнее, видеть какое значение, записано в каждый регистр или ячейку памяти.

Выбор программы – отладчика тесно связан с языком программирования, на котором написана сама программа. И больше того, тут важна та же конкретная реализация языка программирования. Именно по этому в настоящее время почти не применяют отдельных программ отладчиков. Вместо этого получили распространения программные среды. Программная среда – это большая многофункциональная программа, включающая в себя редактор текста программ, транслятор программы, который на основе текста программы генерирует машинный код для прошивки его в микроконтроллер. Эта же среда включает в себя программный отладчик, а так же, часто в программную среду включают программу
для управления программатором. Программатор – это некое внешнее электронной устройство, подключаемое к компьютеру, при помощи которого подготовленный программный код прошивается в программную память микроконтроллера. В нашей книге для программирования на языке Ассемблера мы будем использовать программную среду AVR Studio
фирмы Atmel. А для программирования на языке СИ используем систему CodeVision румынской фирмы «НР Infotech».