А. В. Белов Самоучитель разработчика устройств на микроконтроллерах AVR Издание 2-е, переработанное и дополненное Книга + диск Наука и Техника, СанктПетербург 2010 Belov_AVR_2izd.indd 1 05.09.2009 22:28:50 Белов А. В. Самоучитель разработчика устройств на микроконтроллерах AVR. — Изд. 2е перераб. и доп. — СПб.: Наука и Техника, 2010. — 528 с.: ил. + CD. ISBN 978-5-94387-808-4 Серия «Радиолюбитель» Самоучитель раскрывает секреты микропроцессорной техники, затрагивает основы цифровой логики, принципы программирования. Написан простым, понятным языком, снабжен схемами, иллюстрациями и практическими примерами. После популярной теоретической части автор переходит к практике реализации устройств на микроконтроллерах. В качестве примера используются микроконтроллеры AVR фирмы Atmel. Рассматриваются их принципы построения и особенности архитектуры. После описания микросхем в книге дается ряд практических уроков по их применению. В них на примерах читатель пошагово учится как способам построения электронных схем с применением микроконтроллеров, так и приемам программирования. Одновременно с разбором примеров идет изучение языков программирования. Все программные примеры даны сначала на Ассемблере, а затем на СИ. Самоучитель будет полезен начинающим разработчикам электронных устройств, радиолюбителям и студентам технических ВУЗов. Книга сопровождается CD. Состав информации CD рассмотрен на обложке. Автор и издательство не несут ответственности за возможный ущерб, причиненный в ходе использования материалов данной книги. Контактные телефоны издательства (812) 4127025, 4127026 (044) 5163866 Официальный сайт: www.nit.com.ru © Белов А. В. ISBN 978-5-94387-808-4 © Наука и Техника (оригиналмакет), 2010 ООО «Наука и Техника». Лицензия № 000350 от 23 декабря 1999 года. 198097, г. СанктПетербург, ул. Маршала Говорова, д. 29. Подписано в печать . Формат 70×100 1/16. Бумага газетная. Печать офсетная. Объем 33 п. л. Тираж 2500 экз. Заказ № . Отпечатано по технологии CtP в ОАО «Печатный двор» им. А.М. Горького 197110, СанктПетербург, Чкаловский пр., 15 Belov_AVR_2izd.indd 2 05.09.2009 22:28:50 Содержание от редактора ..................................................... 5 Глава 1. Микроконтроллер — это очень просто .................. 7 1.1. Вначале был микропроцессор .............................. 7 1.2. Считаем подругому ........................................ 13 1.3. Электронные цифры ........................................ 20 1.4. Логические элементы ....................................... 24 1.5. Простейший триггер ........................................ 28 1.6. Хранение информации ..................................... 33 1.7. Счетчики .................................................... 37 1.8. Дешифраторы .............................................. 43 1.9. Мультиплексоры ............................................ 47 Глава 2. Как работает микропроцессорная система .............. 49 2.1. Типовая схема микропроцессорной системы ............... 49 2.2. Алгоритм работы микропроцессорной системы ............ 57 2.3. Механизм прерываний ..................................... 65 2.4. Прямой доступ к памяти .................................... 67 2.5. Микроконтроллеры ........................................ 70 Глава 3. работаем с микроконтроллерами семейства AVR ........ 71 3.1. Общие сведения ............................................ 71 3.2. Регистры общего назначения (РОН) ........................ 79 3.3. Регистры вводавывода ..................................... 80 3.4. Память ...................................................... 81 3.5. Счетчик команд и стековая память ......................... 87 3.6. Подсистема вводавывода .................................. 89 3.7. Система прерываний ....................................... 92 3.8. Таймерысчетчики .......................................... 95 3.9. Другие встроенные периферийные устройства ............ 103 3.10. Другие ячейки .............................................. 107 Глава 4. Пишем программы для микроконтроллеров AVR и создаем устройства .................................... 109 4.1. Общие положения ......................................... 109 4.2. Простейшая программа .................................... 112 4.3. Переключающийся светодиод .............................. 139 4.4. Боремся с дребезгом контактов ............................ 148 Belov_AVR_2izd.indd 3 05.09.2009 22:28:50 4.5. Мигающий светодиод ....................................... 155 4.6. Бегущие огни ............................................... 161 4.7. Использование таймера .................................... 171 4.8. Использование прерываний по таймеру ................... 179 4.9. Формирование звука ....................................... 196 4.10. Музыкальная шкатулка ..................................... 214 4.11. Кодовый замок ............................................. 238 4.12. Кодовый замок с музыкальным звонком .................... 274 Глава 5. Проводим отладку и трансляцию программ .............. 292 5.1. Программная среда AVR Studio ............................. 292 5.2. Система программирования Code Vision AVR ............... 318 5.3. Программаторы ............................................ 326 Глава 6. Микроконтроллер ATtiny2313/V фирмы ATMEL .......... 341 6.1. Основные характеристики и возможности ................. 341 6.2. Центральное ядро процессора ............................. 346 6.3. Тактовый генератор ........................................ 362 6.4. Система управления и сброса .............................. 377 6.5. Сторожевой (охранный) таймер ............................ 382 6.6. Прерывания ................................................ 387 6.7. Порты вводавывода ........................................ 388 6.8. Внешние прерывания ...................................... 404 6.9. Восьмиразрядный таймер/счетчик с поддержкой режима ШИМ ................................ 409 6.10. 16разрядный таймер/счетчик (таймер/счетчик 1) .......... 431 6.11. Универсальный синхронноасинхронный последовательный приемопередатчик USART ............. 460 6.12. Универсальный последовательный интерфейс — USI ...... 490 6.13. Аналоговый компаратор .................................... 506 6.14. Встроенная система отладки программ debugWIRE ........ 509 6.15. Программирование памяти ................................. 519 Приложение ..................................................... 523 Список литературы ............................................... 528 Список полезных ссылок на ресурсы интернет ................... 528 Belov_AVR_2izd.indd 4 05.09.2009 22:28:50 от редаКтора Перед вами второе издание Самоучителя. Книга существенно дора- ботана, содержит диск с обновленной информацией. В наше время происходит бурное развитие такого направления в микро- электронике, как микропроцессорная техника. Благодаря новейшим техно- логиям современная промышленность научилась выпускать широчайший ассортимент недорогих и высокофункциональных микропроцессорных устройств. Микроконтроллеры все больше проникают в наш быт. Настоящая книга предназначена для тех, кто хочет научиться осно- вам микропроцессорной техники. Причем изучение микропроцессо- ров мы будем начинать с самых азов. Безусловно, предполагается некий начальный уровень знаний по радио- и электронной технике. Читатель должен хорошо понимать, что такое электрический ток и напряжение, а также иметь хотя бы общие понятия, что такое резистор, конденсатор, транзистор и т. п. А начнем мы путешествие в мир микропроцессоров с изучения такого понятия, как электронная логика. Цифровые и логические микросхемы широко известны радиолюбителям и радиоинженерам, даже не знакомым с вычислительной техникой. Они давно вошли в повседневную практику и успешно работают во многих электронных схемах. Однако автор посчи- тал нужным начать именно с этого вопроса. Должен же начинающий инженер или радиолюбитель где-то черпать элементарную информацию. Те, кто хорошо представляют себе, как работают логические эле- менты и другие элементы цифровой техники, могут пропустить первую главу книги. Конечная цель всей книги — проходя шаг за шагом от про- стого к сложному, помочь читателю самому научиться конструировать простейшие микропроцессорные устройства. Поэтому во второй главе раскрываются основные принципы и варианты построения микропро- цессорных систем. Вы узнаете теорию построения микропроцессор- ного устройства, познакомитесь с такими понятиями, как электронная память, шина данных, порт ввода/вывода и т. д. В третьей главе книги мы перейдем к конкретике. В этой главе будет опи- сан конкретный микропроцессорный комплект: микроконтроллеры семей- ства AVR фирмы Atmel. Это одна из самых популярных в наше время микро- процессорных серий. Будут рассмотрены основные принципы внутреннего устройства микросхем этой серии, их возможности и характеристики. В четвертой главе начинается рассмотрение основных принципов построения программ. Глава представляет собой ряд примеров. С их помощью читатель шаг за шагом учится не только способам построения электронных схем с применением микроконтроллеров. Эти примеры Belov_AVR_2izd.indd 5 05.09.2009 22:28:50 представляют собой ряд уроков по приемам и методам программиро- вания. Причем одновременно идет изучение и, собственно, языков про- граммирования. Для этой цели глава начинается с самого элементарного примера, позволяющего изучить самые азы языка. Задачи постепенно усложня- ются. И последние примеры — это уже небольшие полезные устройства, которые могут вполне пригодиться в хозяйстве. Все программные при- меры даны в двух вариантах: на Ассемблере и СИ. Таким образом, вы изучите сразу два языка. Одновременно вы сможете сравнить эти два языка между собой и оценить достоинства и недостатки каждого из них. В пятой главе мы узнаем, каким же образом происходит процесс соз- дания программ. Познакомимся с понятиями: ввод, редактирование и отладка программы. Для этой цели читателю будут представлены два программных пакета.. Первый из них называется «AVR Studio». AVR Studio представляет собой программу для ПК, а точнее — целую про- граммную среду, которая специально создана фирмой Atmel для того, что бы можно было создавать и отлаживать программы для микрокон- троллеров AVR. Основной язык, который поддерживает AVR Studio, — Ассемблер. В книге дается подробное описание как самого пакета, так и про- цесса создания и отладки программ. Далее в книге описывается еще один пакет, который называется Code Vision. Он служит для создания и отладки программ на языке СИ. В конце главы описан процесс пере- носа разработанных вышеописанным способом программ в программ- ную память микроконтроллера. Для этого используются специальные устройства, называемые программаторами. В книге даны схема и опи- сание одного из самых простых популярных программаторов Pony Prog и описан порядок работы с ним. Автор надеется, что представленная им книга будет полезна широкому кругу начинающих конструкторов электронной техники, радиолюбителей и студентов технических вузов, и будет благодарен за любые замечания и комментарии по книге. Все замечания прошу высылать автору по адресу Украина, г. Сим- ферополь, ул. Русская, 194 или по е-mail: [email protected]. Электронный адрес для связи, а также дополнительную информацию об этой, а также о других книгах автора вы можете почерпнуть на специальном сайте под- держки книг Белова А. В. по адресу: http://book.mirmk.net/ Там же, на упомянутом выше сайте можно приобрести любую книгу автора, используя технологию интернет магазина. Успешного Вам освоения микропроцесоров. Сергей Корякин-Черняк, главный редактор издательства «Наука и Техника» Belov_AVR_2izd.indd 6 05.09.2009 22:28:51 Глава 1 МиКроКонтроллер — это очень ПроСто Глава дает представление и систематизирует информацию для начинающих. Даются начальные понятия о математических основах цифровой техники, вводится понятие «логический элемент», описываются основные виды логических элементов. Далее показано, как из простейших элементов синтезируются более сложные. 1.1. вначале был микропроцессор что же такое микропроцессор В современной электронике микропроцессором называют специ- альную микросхему, которая предназначена для выполнения некоего набора сложных функций по управлению тем либо иным электронным устройством. Микропроцессор — это сердце любого компьютера. Но не только. Те же технологии, которые применяются в компьютерах, с успе- хом применяются и в более простых электронных устройствах. Микропроцессор незаметно завоевал весь мир. В последнее время на помощь человеку пришла целая армия электронных помощников. Мы привыкли к ним и часто даже не подозреваем, что во многих таких устройствах работает микропроцессор. Микропроцессорные техноло- гии очень эффективны. Одно и то же устройство, которое раньше соби- ралось на традиционных элементах, будучи собрано с применением микропроцессора становится проще, не требует регулировки и меньше по размерам. Кроме того, с применением микропроцессоров появля- ются практически безграничные возможности по добавлению новых потребительских функций и возможностей. Где же применяются микропроцессоры? Да просто везде! Посмотрите вокруг себя. У вас в квартире стоит современный телевизор? Не сомне- вайтесь: в нем есть, как минимум, один процессор. У вас есть на руке электронные часы? Современные часы строятся на основе специализи- рованного микропроцессора. Ну, а мобильные телефоны — это вообще миниатюрные компьютеры! Belov_AVR_2izd.indd 7 05.09.2009 22:28:51 8 Самоучитель разработчика устройств на микроконтроллерах AVR Возможно, у вас есть игровая приставка, карманная электронная игра, современная микроволновая печь, стиральная машина, проигры- ватель лазерных дисков, калькулятор. Во всех этих устройствах работает микропроцессор. Современный автомобиль нашпигован микропроцес- сорами, как фаршированная рыба. Не говоря уже о самолетах, кораблях, поездах и т. п. В общем, всего не перечесть. Микропроцессор насчитывает достаточно долгую историю. До того, как изобрели микропроцессор (то есть процессор на одной микро- схеме), существовали целые процессорные блоки в больших компью- терах. Теперь же интеграция пошла до фантастических пределов. Одна микросхема содержит не только сам процессор, но и сопутствующие ему элементы. Целый компьютер в одной микросхеме. Такая микросхема называется микроконтроллером. Что же это за сопутствующие элементы? Это очень важные состав- ные части микропроцессорной системы. Без них не может обходиться ни один микропроцессор. Итак, мы подходим к первому важному вопросу — составу типовой микропроцессорной системы. Любая микро- процессорная система (рис. 1.1) состоит из следующих основных эле- ментов: процессор, модуль памяти, порты ввода-вывода. Рассмотрим каждую из этих составляющих подробнее. (cid:1052)(cid:1086)(cid:1076)(cid:1091)(cid:1083)(cid:1100) (cid:1055)(cid:1086)(cid:1088)(cid:1090)(cid:1099) (cid:1055)(cid:1088)(cid:1086)(cid:1094)(cid:1077)(cid:1089)(cid:1089)(cid:1086)(cid:1088) (cid:1087)(cid:1072)(cid:1084)(cid:1103)(cid:1090)(cid:1080) (cid:1074)(cid:1074)(cid:1086)(cid:1076)(cid:1072)(cid:47)(cid:1074)(cid:1099)(cid:1074)(cid:1086)(cid:1076)(cid:1072) Рис. 1.1. Основные составляющие компьютерной системы Память. Это специализированное электронное устройство, которое представляет собой набор ячеек, в каждой из которых может храниться одно число. Причем это не совсем то число, с которым мы с вами при- выкли иметь дело. Это упрощенное компьютерное число. Обычно каж- дая ячейка памяти может хранить число, принимающее значения от нуля до 255. Подробнее об этом будет рассказано ниже (см. раздел 2.1). Порты ввода-вывода. Это специальные микросхемы, при помощи которых микропроцессорная система может общаться с внешним миром. Причем можно говорить отдельно о портах ввода и портах вывода. Через порты ввода компьютерная система получает информа- цию извне, а посредством портов вывода она выдает результаты своей работы и управляет внешними устройствами. Только благодаря этим самым портам ввода-вывода к компьютеру подключаются такие устрой- ства, как клавиатура, мышь, дисководы, CD-ROM и т. д. Belov_AVR_2izd.indd 8 05.09.2009 22:28:51 Глава 1. Микроконтроллер — это очень просто 9 Те читатели, которые знакомы с компьютерами, возможно, слы- шали термины «параллельный порт» (LPT) и «последовательный порт» (COM). Так вот, в данном случае речь идет совсем о другом понятии. Это просто схожие термины. Параллельный, и тем более, последова- тельный порты компьютера — это достаточно сложные схемы, кото- рые, в свою очередь, управляются при помощи портов ввода-вывода. Не нужно также думать, что клавиатура и мышь используют только порты ввода, а дисплей — порт вывода. Для управления большинством устройств компьютера используются как порты ввода, так и порты вывода микропроцессорной системы. Возможно, вас удивляет, что я называю внешними устройствами и жест- кий диск, и флоппи дисковод. Но когда мы начнем изучать типовую схему микропроцессорного устройства, вы убедитесь, что это именно так! Внутри компьютера скрыто еще много устройств, которые по отно- шению к микропроцессору являются внешними, хотя находятся зача- стую не только внутри компьютера, но и непосредственно на материн- ской плате — главной плате компьютера. Процессор — это самая главная часть, сердце всей системы. Он пред- назначен для того, что бы выполнять различные операции с числами. Последовательность этих операций называется программой. Каждая операция кодируется в виде числа и записывается в память. Те числа, с которыми процессор выполняет свои операции, называются данными. Данные также записаны в память. По сути дела, процессор — это циф- ровой автомат, способный выполнять определенный набор операций с числами. Но главной его особенностью является возможность запро- граммировать любую последовательность его действий. Как происходит программирование, мы увидим далее (см. раздел 2.2). Все три части вычислительной системы связаны между собой так называемыми шинами данных. По этим шинам передаются цифро- вые сигналы от процессора к модулю памяти, от процессора — к пор- там ввода-вывода. А также и в обратном направлении: от портов ввода вывода и памяти к процессору. Какие же операции может выполнять процессор? Во-первых, все про- стейшие операции, которые можно произвести над числом. Он может читать число из любой ячейки памяти, складывать, вычитать, сравни- вать, иногда умножать и делить прочитанные числа. Результат вычис- лений процессор записывает обратно в память. Кроме арифметических действий, процессор может выполнять логические операции с числами (Булевы функции). Что такое логические операции, будет подробно описано ниже (см. раздел 1.4). Набор операций, которые процессор способен выполнять с участием портов ввода-вывода, гораздо меньше, чем операций с ячейками памяти. Belov_AVR_2izd.indd 9 05.09.2009 22:28:51 10 Самоучитель разработчика устройств на микроконтроллерах AVR В них также можно записывать и считывать информацию. Однако хра- нение чисел — это не главное назначение портов. Определение. Порт ввода — это специальное электронное устройство, на которое извне поступают какие-либо электрические сигналы, предназначенные для управления микропроцессорным устройством. Например, сигналы, возникающие при нажатии клавиш на клавиатуре, сигналы, возникаю- щие при срабатывании различных датчиков и т. п. Процессор считывает их в виде чисел и обрабатывает полученные числа в соответствии с алгоритмом управления. определение. Порт вывода выполняет обратную функцию. В них процессор записы- вает различные числа, которые затем поступают на внешние устрой- ства в виде электрических сигналов. Эти сигналы используются для управления. Управлять можно любым устройством, которое допускает электрическое управление, это индика- торы, дисплеи, электромагнитные реле, электромоторы, электропневмо- клапаны, электрические нагреватели и т. д. Нужно только усилить управляющие сигналы до требуемой мощно- сти. Кроме перечисленных выше команд в любой микропроцессор зало- жен набор специальных команд, специфических для задач управления процессом вычислений. В дальнейшем мы остановимся подробнее на всех типах команд микропроцессора (см. раздел 2.2). Итак, мы разобрались, что такое процессор. И вот такой простой цифровой автомат способен вытворять все те чудеса, которые мы при- выкли наблюдать в исполнении современных компьютеров. Как же это возможно? Оказывается, все на свете можно описать цифрами. И текст, и изображение, и звуки, и музыку, и даже целые видеофильмы. Хорошо поработали ученые-математики. Они сумели разработать математические модели всех этих процессов. Остальное оказалось делом техники. Главное, чтобы процессор мог выполнять операции как можно быстрее! А современные процессоры это могут! Но обработка всех перечисленных выше процессов — это удел мощ- ных микропроцессоров, применяемых в персональных компьютерах. Однако настоящая книга не ставит перед собой задачи изучения этих микропроцессоров. Предмет нашего изучения — небольшие специали- зированные микропроцессорные схемы, предназначенные для управ- ления конкретными устройствами автоматики, электронной и бытовой техники. Подобные устройства управления имеют одно общее назва- ние — микропроцессорные контроллеры. Belov_AVR_2izd.indd 10 05.09.2009 22:28:51